Buenas, estoy realizando un proyecto en el que construyo un juego de la oca con unas tiras led ws2812b. (son unas tiras compatibles con arduino que posibilitan programar cada led independientemente de los demás para crear patrones).
Esto lo hago mediante la generación de un numero random entre el 1 y el 6 (a modo de tirada de dado) el cual se almacena en una variable (numerorandom) la cual a su vez es sumada a otra variable (llamada casilla) que se dedica a llevar la cuenta de la casilla en la que se encuentra el jugador. Siempre y cuando no superemos el limite de casillas del tablero.
El problema llega cuando intento introducir comandos para simular reglas del juego como "de oca a oca y tiro porque me toca"o la cárcel o la casilla de muerte.
#include <Adafruit_NeoPixel.h>
int PIN=6;
long numerorandom;
int NUMPIXELS=46;
int casilla;
long randNumber;
Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);
void setup() {
Serial.begin(9600);
pixels.begin();
pixels.show();
randomSeed(analogRead(0));
}
void loop() {
casilla=1;
while(casilla<NUMPIXELS){
{
randNumber = random(1,7);
numerorandom=randNumber;
casilla = casilla + numerorandom;
Serial.println(numerorandom);
Serial.print("casilla:");
Serial.println(casilla);
delay(3000);
for (int i=0;i<casilla;i++)
pixels.setPixelColor (i-1,80,0,30);
pixels.show();
delay(900);
}
if(casilla==5) {
Serial.println ("Es igual a 5");
casilla=casilla-2;
Serial.println ("Lo cambio por 3");
}
}
}
Las últimas lineas del código son un intento fallido de simular un "de oca a oca" en el que si el jugador llega a la casilla 5 retrocede hasta la 3.
No consigo entender cuál es el problema pero creo que está en que no puedo introducir un "if" dentro del "while" o del "for".
(Los comandos pixel.show ó pixels.begin o pixels.setPixelColor pertenecen a la librería ardafruit neopixel y sirven para manejar los leds.)