Buenas soy nuevo por aquí, y aun no me manejo muy bien con los programas, aqui os dejo el que tengo hecho que consiste en un pulsador y un contador:
Pulso 1: Enciende Rojo.
Pulso 2: Apaga la tira.
Pulso 3: Enciende Blanco.
Pulso 4: Apaga la tira.
Pulso 5: Enciende bandera de Francia.
Pulso 6: Apaga y pone el contador a 0 para volver a empezar.
Lo que quiero hacer es que un pulso encienda rojo, otro pulso lo apague. Hasta ahí bien pero ahora me gustaría que con 3 pulsos encienda blanco, y otro pulso lo apague, esto sin pasar por el rojo, y lo mismo para el modo Francia con 5 pulsos, sin que pase por blanco ni por rojo, otro pulso apaga, todo esto con un solo pulsador, y fin del programa y no tengo ni idea de como conseguirlo si alguien me pudiese echar una mano estaría agradecido.
Aquí el programa:
int BOTON = 2;
int CONTADOR = 0;
int ESTADO_ANTERIOR = 0;
#include "FastLED.h"
#define NUM_LEDS 9
#define DATA_PIN 13
#define BRILLO 255
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.setBrightness(BRILLO);
pinMode(BOTON,INPUT);
Serial.begin(9600);
}
void loop() {
int LECTURA = digitalRead(BOTON);
if(LECTURA!=ESTADO_ANTERIOR){
if(LECTURA==HIGH){
CONTADOR++;
Serial.println(CONTADOR);
}
}
ESTADO_ANTERIOR = LECTURA;
if(CONTADOR==1){
leds[0] = CRGB::Red;
FastLED.show();
leds[1] = CRGB::Red;
FastLED.show();
leds[2] = CRGB::Red;
FastLED.show();
leds[3] = CRGB::Red;
FastLED.show();
leds[4] = CRGB::Red;
FastLED.show();
leds[5] = CRGB::Red;
FastLED.show();
leds[6] = CRGB::Red;
FastLED.show();
leds[7] = CRGB::Red;
FastLED.show();
leds[8] = CRGB::Red;
FastLED.show();
}
if(CONTADOR==2){
leds[0] = CRGB::Black;
FastLED.show();
leds[1] = CRGB::Black;
FastLED.show();
leds[2] = CRGB::Black;
FastLED.show();
leds[3] = CRGB::Black;
FastLED.show();
leds[4] = CRGB::Black;
FastLED.show();
leds[5] = CRGB::Black;
FastLED.show();
leds[6] = CRGB::Black;
FastLED.show();
leds[7] = CRGB::Black;
FastLED.show();
leds[8] = CRGB::Black;
FastLED.show();
}
if(CONTADOR==3){
leds[0] = CRGB::White;
FastLED.show();
leds[1] = CRGB::White;
FastLED.show();
leds[2] = CRGB::White;
FastLED.show();
leds[3] = CRGB::White;
FastLED.show();
leds[4] = CRGB::White;
FastLED.show();
leds[5] = CRGB::White;
FastLED.show();
leds[6] = CRGB::White;
FastLED.show();
leds[7] = CRGB::White;
FastLED.show();
leds[8] = CRGB::White;
FastLED.show();
}
if(CONTADOR==4){
leds[0] = CRGB::Black;
FastLED.show();
leds[1] = CRGB::Black;
FastLED.show();
leds[2] = CRGB::Black;
FastLED.show();
leds[3] = CRGB::Black;
FastLED.show();
leds[4] = CRGB::Black;
FastLED.show();
leds[5] = CRGB::Black;
FastLED.show();
leds[6] = CRGB::Black;
FastLED.show();
leds[7] = CRGB::Black;
FastLED.show();
leds[8] = CRGB::Black;
FastLED.show();
}
if(CONTADOR==5){
leds[0] = CRGB::Red;
FastLED.show();
leds[1] = CRGB::Red;
FastLED.show();
leds[2] = CRGB::Red;
FastLED.show();
leds[3] = CRGB::White;
FastLED.show();
leds[4] = CRGB::White;
FastLED.show();
leds[5] = CRGB::White;
FastLED.show();
leds[6] = CRGB::Blue;
FastLED.show();
leds[7] = CRGB::Blue;
FastLED.show();
leds[8] = CRGB::Blue;
FastLED.show();
}
if(CONTADOR==6){
leds[0] = CRGB::Black;
FastLED.show();
leds[1] = CRGB::Black;
FastLED.show();
leds[2] = CRGB::Black;
FastLED.show();
leds[3] = CRGB::Black;
FastLED.show();
leds[4] = CRGB::Black;
FastLED.show();
leds[5] = CRGB::Black;
FastLED.show();
leds[6] = CRGB::Black;
FastLED.show();
leds[7] = CRGB::Black;
FastLED.show();
leds[8] = CRGB::Black;
FastLED.show();
CONTADOR=0;
}
}