Hola, tengo el siguiente problema: Estoy haciendo un ejercicio del libro del kit básico, el cual tengo 3 leds (led1, led2 y led3), y escribiendo en la consola se deben encender según el siguiente ejemplo:
Si escribo 100 se prende el led1.
Si escribo 101 se prende el led1 y led2.
Si escribo 010 se prende el led2.
Si escribo 000 se apagan.
Y así sucesivamente.
Lo que intento hacer es leer el valor e intentar separarlo con .charAt(n) y guardar cada valor en una letra (A, B y C respectivamente) y luego usar un if para decir que si el valor de A o B o C es 1, entonces se encienda el led, pero no funciona, he buscado pero aún no encuentro o no me queda claro una forma de hacerlo.
Adjunto mi código para que vean mi idea para resolver el problema.
[code]
int led1 = 2;
int led2 = 5;
int led3 = 12;
String valor;
int A;
int B;
int C;
boolean estado = false;
void setup() {
pinMode(2, OUTPUT);
pinMode(5, OUTPUT);
pinMode(12, OUTPUT);
Serial.begin(9600);
}
void loop() {
valor = Serial.read();
delay(2000);
A = valor.charAt(1);
B = valor.charAt(2);
C = valor.charAt(3);
if (A == 49) {
digitalWrite(led1, HIGH);
}
else {
digitalWrite(led1, LOW);
}
if (B == 49) {
digitalWrite(led2, HIGH);
}
else
{
digitalWrite(led2, LOW);
}
if (C == 49) {
digitalWrite(led3, HIGH);
[/code]
Según lo que he estado haciendo, en la consola me comienza a arrojar los valores del número que coloco en código ascii, por ejemplo, el 1 me lo convierte a 49, es por eso que las variables las igualé a esos valores, no se me guardan los valores, de que otra forma podría hacer esto?.
Estimado, tengo dos dudas en el código, estoy comenzando como aficionado en arduino y seguramente son básicas, pero porfavor si me pudieran ayudar a entender:
En el comienzo del "for": Que endiendo que "byte i=0" inicia una variable "i" como tipo byte, pero no entiendo bien lo que viene después, el "i<valor.length(); i++" significa que el ciclo funciona mientras el valor de i sea menor al largo de valor? y el i++ suma uno a i ? O sea que funcionaría como un while o estoy equivocado?