Hola gente, muy buenas noches.
Me encuentro desarrolando un pequeño programa donde deseo evaluar el contenido de un array luego de pulsar un boton y si este coincide con lo que busco que prenda un led. Lo hice de esta manera y no hay manera de que prenda el led, alguien sabe a que se puede deber o si hay alguna manera mas eficioente de hacerlo? Les dejo el codigo, gracias!
Este es el código con las correcciones que te sugiero.
Ahora no estan mis comentarios porque quise moverlo al ver tu respuesta y lo borré accidentalmente y ya no tengo ganas de escribir.
int array[4];
void setup() {
Serial.begin(9600);
}
void loop() {
int lector;
if (Serial.available()>0) {
lector = Serial.read();
}
if (lector == 1){
array[0] = 1;
}
if (digitalRead(3) == LOW){
for (int i = 0; i< sizeof(array); i++){
Serial.println(i);
if (array[i]==1){
digitalWrite(8,HIGH);
}
}
delay(1000);
} else {
digitalWrite(8, LOW);
}
}
Basicamente falta if (Serial.available() ) para leer del puerto serie
Hay un error en donde defines array[4] que pondrá a 0 en cada loop los valores almancenados y para terminar solo modificas el valor de array[0]
Gracias por tu rapida respuesta surbyte, intente con lo que propusiste pero el codigo sigue actuando igual, al parecer si entra en el condicional pero no realiza el ciclo for y por lo tanto no prende el led cuando detecta el 1 almacenado. Seguire intentando, si alguno tiene alguna otra idea (o tu mismo) se aprecia la difusion. Gracias!
No, tampoco. Por lo que estoy viendo luego de imprimir cada dato del array es que al parecer tampoco registra el 1 que le mando por el serial, vere si puedo solucionarlo. Gracias surbyte y cualquier cosilla es bien recibida
Ahí conseguí lo que buscaba, les dejo el código y gracias!
void setup() {
Serial.begin(9600);
pinMode(8, OUTPUT);
pinMode(3, INPUT);
}
void loop() {
char array[4]; //Creo el array
if(digitalRead(3) == LOW){ //Si presiono el boton
if (Serial.available()>0) { //Si hay datos en el monitor serial
char valor = Serial.read(); //Leo y almaceno lo que recibo
Serial.println(valor);
array[0] = valor; //Almaceno en el primero lugar lo que lee
for(int i = 0; i<sizeof(array);i++){ //Recorro el array
Serial.println(i);
Serial.println(array[i]);
if(array[0]=='1'){ //Evaluo, si es 1 prendo el led, sino no.
digitalWrite(8,HIGH);
}
}
}
}
}