buongiorno a tutti
ho creato questo programma, però al momento mi ritrovo 2 problemi:
-
vorrei snellire il programma inserendo delle variabili per evitare di riscrivere mille volte le stesse righe
-
è possibile utilizzando il comando a infrarossi, interrompere subito la sequenza in esecuzione invece di aspettare la fine e poi eseguire il comando? perché quando vado a inserire il ciclo lucentezza non riesco a spegnere i led
allego link video per far capire la sequenza corretta che devo realizzare
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
int t = 50;
#define EL 5
#define PIN 6
int c = 0;
int lucentezza = 100;
int incremento = 10;
int x = 0;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(EL, PIN, NEO_GRB + NEO_KHZ800);
#include <IRremote.h>
int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
irrecv.enableIRIn(); // Start the receiver
Serial.begin(9600);
pixels.begin();
pixels.show();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume(); // Receive the next value
}
if (results.value == 0xFF30CF) {
pixels.setPixelColor(0, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(0, 0,0,0);
pixels.show();
pixels.setPixelColor(1, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(1, 0,0,0);
pixels.setPixelColor(2, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(2, 0,0,0);
pixels.setPixelColor(3, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(3, 0,0,0);
pixels.setPixelColor(4, 0,150,150);
pixels.show();
delay(1000);
pixels.setPixelColor(0, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(0, 0,0,0);
pixels.show();
pixels.setPixelColor(1, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(1, 0,0,0);
pixels.setPixelColor(2, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(2, 0,0,0);
pixels.setPixelColor(3, 0,150,150);
pixels.show();
delay(1000);
pixels.setPixelColor(0, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(0, 0,0,0);
pixels.show();
pixels.setPixelColor(1, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(1, 0,0,0);
pixels.setPixelColor(2, 0,150,150);
pixels.show();
delay(1000);
pixels.setPixelColor(0, 0,150,150);
pixels.show();
delay(t);
pixels.setPixelColor(0, 0,0,0);
pixels.show();
pixels.setPixelColor(1, 0,150,150);
pixels.show();
delay(1000);
pixels.setPixelColor(0, 0,150,150);
pixels.show();
}
if (results.value == 0xE318261B) {
pixels.setPixelColor(0, 0,0,0);
pixels.setPixelColor(1, 0,0,0);
pixels.setPixelColor(2, 0,0,0);
pixels.setPixelColor(3, 0,0,0);
pixels.setPixelColor(4, 0,0,0);
pixels.show();
}
if (results.value == 0xFF18E7) {
lucentezza = lucentezza + incremento;
if (lucentezza == 40 || lucentezza == 200)
{
incremento = incremento *-1;
}
pixels.setBrightness(lucentezza);
pixels.show();
delay (100);
irrecv.resume();
}
}