• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sterowanie IR i pentle w switch
#11
Kod:
#include <FastLED.h>
#include <IRremote.h>

#include "TimerOne.h"

#define LED_PIN     7
#define NUM_LEDS    144
#define LED_TYPE    WS2812B
#define COLOR_ORDER GRB
#define BRIGHTNESS  100
#define Speed 20

#define nr_0 0xFF9867
#define nr_1 0xFFA25D
#define nr_2 0xFF629D
#define nr_3 0xFFE21D
#define nr_4 0xFF22DD
#define nr_5 0xFF02FD
#define nr_6 0xFFC23D
#define nr_7 0xFFE01F
#define nr_8 0xFFA857
#define nr_9 0xFF906F

long    ir_signal;

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

CRGB leds[NUM_LEDS];

void setup() {
 pinMode(5 , OUTPUT);
 delay(1000);
 LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
 FastLED.setBrightness(BRIGHTNESS);

 Serial.begin(9600);
 irrecv.enableIRIn();
 randomSeed(analogRead(4));
 
   Timer1.initialize(500000);
    Timer1.attachInterrupt(test);
}

int kolor_los()
{
 int x = random(3);
 if (x == 0) return 0;
 if (x == 1) return 128;
 if (x == 2) return 255;
}

void loop()
{
 if (irrecv.decode(&results)) {
   while (!results.value == 0) {

     Sprawadz( results.value);
   }
 }
}

void Sprawadz( int x) {
 ir_signal = results.value;
 Serial.println(  ir_signal );
 int t = 0;
 int v = kolor_los() , y = kolor_los() , z = kolor_los();
 if (v == 0 && y == 0 && z == 0)  z = 255;
 if (v == 255 && y == 255 && z == 255) v = 0;
 switch (x) {

   case nr_0:
     {
       for (int i = 0; i < 144; i++) {
         leds[i] = CRGB::White;
       }
       FastLED.show();
       delay(2);
       for (int i = 0; i < 144; i++) {
         leds[i] = CRGB::Black;
       }
       FastLED.show();
       delay(400);
     }
     break;

   case nr_1:
     {
       for (int i = 0 ; i <= 108 ; i++ ) {
         if ( i <= 72 ) {
           leds[i] .setRGB(v, y, z);
           leds[144 - i] .setRGB(v, y, z);
         }
         if ( i >= 36 ) {
           leds[i - 36] = CRGB::Black;
           leds[180 - i] = CRGB::Black;
         }
         FastLED.show();
         delay(1);
       }
     }
     break;

   case nr_2:
     {
       for (int i = -1 ; i <= 144 + 16 ; i += 2 ) {
         if ( i <= 144 ) {
           leds[i - 1] .setRGB(v, y, z);
           leds[i] .setRGB(v, y, z);
         }
         if ( i >= 16 ) {
           leds[i - 17] = CRGB::Black;
           leds[i - 16] = CRGB::Black;
         }
         FastLED.show();
         delay(1);
       }
       for (int i = 144 ; i <= -16 ; i -= 2 ) {
         if ( i >= 0 ) {
           leds[i + 1] .setRGB(v, y, z);
           leds[i] .setRGB(v, y, z);
         }
         if ( i <= 128 ) {
           leds[i + 17] = CRGB::Black;
           leds[i + 16] = CRGB::Black;
         }
         FastLED.show();
         delay(1);
       }
     }
     break;

   case nr_3:
     {
       for (int i = -1 ; i <= 144 + 16 ; i += 3 ) {
         if ( i <= 144 ) {
           leds[i - 2]  .setRGB(v, y, z);
           leds[i - 1]  .setRGB(v, y, z);
           leds[i]  .setRGB(v, y, z);
           if ( i >= 16 ) {
             leds[i - 18] = CRGB::Black;
             leds[i - 17] = CRGB::Black;
             leds[i - 16] = CRGB::Black;
           }
           FastLED.show();
           delay(1);
         }
       }
       for (int i = 144 ; i >= -16 ; i -= 3 ) {
         if ( i >= 0 ) {
           leds[i + 2] .setRGB(v, y, z);
           leds[i + 1] .setRGB(v, y, z);
           leds[i] .setRGB(v, y, z);
         }
         if ( i <= 128 ) {
           leds[i + 18] = CRGB::Black;
           leds[i + 17] = CRGB::Black;
           leds[i + 16] = CRGB::Black;
         }
         FastLED.show();
         delay(1);
       }
     }
     break;

     ir_signal = 0;
     irrecv.resume();
 }
}
Dzięki wielkie,
 
Odpowiedź
#12
Kod:
#include <FastLED.h>
#include <IRremote.h>

#include "TimerOne.h"

#define LED_PIN     7
#define NUM_LEDS    144
#define LED_TYPE    WS2812B
#define COLOR_ORDER GRB
#define BRIGHTNESS  100
#define Speed 20

#define nr_0 0xFF9867
#define nr_1 0xFFA25D
#define nr_2 0xFF629D
#define nr_3 0xFFE21D
#define nr_4 0xFF22DD
#define nr_5 0xFF02FD
#define nr_6 0xFFC23D
#define nr_7 0xFFE01F
#define nr_8 0xFFA857
#define nr_9 0xFF906F

long    ir_signal;

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

CRGB leds[NUM_LEDS];
void test()
{
   if (irrecv.decode(&results)) {
   while (!results.value == 0) {

     Sprawadz( results.value);
   }
}
}
void setup() {
pinMode(5 , OUTPUT);
delay(1000);
LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);

Serial.begin(9600);
irrecv.enableIRIn();
randomSeed(analogRead(4));

   Timer1.initialize(500000);
    Timer1.attachInterrupt(test);
}

int kolor_los()
{
int x = random(3);
if (x == 0) return 0;
if (x == 1) return 128;
if (x == 2) return 255;
}

void loop()
{

}

void Sprawadz( int x) {
ir_signal = results.value;
Serial.println(  ir_signal );
int t = 0;
int v = kolor_los() , y = kolor_los() , z = kolor_los();
if (v == 0 && y == 0 && z == 0)  z = 255;
if (v == 255 && y == 255 && z == 255) v = 0;
switch (x) {

   case nr_0:
     {
       for (int i = 0; i < 144; i++) {
         leds[i] = CRGB::White;
       }
       FastLED.show();
       delay(2);
       for (int i = 0; i < 144; i++) {
         leds[i] = CRGB::Black;
       }
       FastLED.show();
       delay(400);
     }
     break;

   case nr_1:
     {
       for (int i = 0 ; i <= 108 ; i++ ) {
         if ( i <= 72 ) {
           leds[i] .setRGB(v, y, z);
           leds[144 - i] .setRGB(v, y, z);
         }
         if ( i >= 36 ) {
           leds[i - 36] = CRGB::Black;
           leds[180 - i] = CRGB::Black;
         }
         FastLED.show();
         delay(1);
       }
     }
     break;

   case nr_2:
     {
       for (int i = -1 ; i <= 144 + 16 ; i += 2 ) {
         if ( i <= 144 ) {
           leds[i - 1] .setRGB(v, y, z);
           leds[i] .setRGB(v, y, z);
         }
         if ( i >= 16 ) {
           leds[i - 17] = CRGB::Black;
           leds[i - 16] = CRGB::Black;
         }
         FastLED.show();
         delay(1);
       }
       for (int i = 144 ; i <= -16 ; i -= 2 ) {
         if ( i >= 0 ) {
           leds[i + 1] .setRGB(v, y, z);
           leds[i] .setRGB(v, y, z);
         }
         if ( i <= 128 ) {
           leds[i + 17] = CRGB::Black;
           leds[i + 16] = CRGB::Black;
         }
         FastLED.show();
         delay(1);
       }
     }
     break;

   case nr_3:
     {
       for (int i = -1 ; i <= 144 + 16 ; i += 3 ) {
         if ( i <= 144 ) {
           leds[i - 2]  .setRGB(v, y, z);
           leds[i - 1]  .setRGB(v, y, z);
           leds[i]  .setRGB(v, y, z);
           if ( i >= 16 ) {
             leds[i - 18] = CRGB::Black;
             leds[i - 17] = CRGB::Black;
             leds[i - 16] = CRGB::Black;
           }
           FastLED.show();
           delay(1);
         }
       }
       for (int i = 144 ; i >= -16 ; i -= 3 ) {
         if ( i >= 0 ) {
           leds[i + 2] .setRGB(v, y, z);
           leds[i + 1] .setRGB(v, y, z);
           leds[i] .setRGB(v, y, z);
         }
         if ( i <= 128 ) {
           leds[i + 18] = CRGB::Black;
           leds[i + 17] = CRGB::Black;
           leds[i + 16] = CRGB::Black;
         }
         FastLED.show();
         delay(1);
       }
     }
     break;

     ir_signal = 0;
     irrecv.resume();
}
}
Sprawdz.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#13
Teraz jak wcisnę jakiś guzik na pilocie to wykonuje się on ale przez 1s i potem zostaje w tym miejscu ( zacina się, jak by) i nic nie da się robić dalej, dlasze klikanie nic nie daje.
 
Odpowiedź
#14
I jak, masz jakiś jeszcze pomysł? Bo szkoda mi aby taki projekt sie posypał Sad bo ja nie mam na to pomysłow, wiec prosze o pomoc Smile
Btw. to na forum są 2 osoby tylko ? Big Grin
 
Odpowiedź
#15
Serio nikt nie umie tego zrobić ?
Bardzo proszę
 
Odpowiedź
#16
Umie tylko to nie jest pomoc a zrobienie ci kodu.
A zagubiłem and techa i nie mam jak ci to sprawdzić.
podopisuj do każdej funkcji printy Serial.println("1");Serial.println( "2" ); i tak dale i po pacz co drukuje.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości