que tal, tengo una duda en un codigo que estoy puliendo de programar unas salidas (electrodos ) con cables sumergidos en agua para sensar un estado logico, pues bien mi codigo si lee algunas condiciones pero en uno de los niveles de sensado no lo hace (en el nivel ALTO de llenado no me lee nada en el monitor serial), si son tan amables de encontrar algo releevante a mi duda lo agradezco, saludos...
Hola. Si te fijas has creado un arreglo llamado sensorPin[], que arduino asume que es sensorPin[3] porque le has puesto tres valores 8, 9, 10. O sea que tendrás una variable sensorPin[0] que vale 8, otra variable sensorPin[1] que vale 9 y una tercera sensorPin[2] que vale 10.
En tu primer ciclo for.
for (int i = 0; i < sensors; i ++) {
pinMode (sensorPin, INPUT);
pinMode (ledPin, OUTPUT);
}
desde que comienza la llave, i vale cero hasta que llega a la llave de cierre, la segunda vez valdrá i++ o sea (1) y la tercera pasada valdrá i++ o sea (2) y aquí se detiene el ciclo porque 2 es menor a sensor.
El ciclo correcto sería así:
for (int i = 0; i < sensors; i ++) {
pinMode (sensorPin[i], INPUT);
pinMode (ledPin[i], OUTPUT);
}
Lo mismo pasa con los otros ciclos for.
No lo se, pero cuando yo lo copié los arreglos estaban mal y el código pegado sin el tag.
¿Que razón tendría para mentirte?
Lo copié, me puse a revisarlo mientras me tomaba un café.
Pensé si debía marcarle solo ese error y dejar que arregle el otro for o hacerle el código completo.
Y aquí está
int sensorPin[] = {8, 9, 10};
int ledPin[] = {11, 12, 13}; //número de leds = número de sensores
const int sensors = 3;
int level;
void setup() {
Serial.begin(9600);
for (int i = 0; i < sensors; i ++) {
pinMode (sensorPin[i] , INPUT_PULLUP);
pinMode (ledPin[i] , OUTPUT);
}
}
void loop() {
level = 0;
int estado;
for (int i = 0; i < sensors; i ++) {
estado = digitalRead(sensorPin[i]);
Serial.println(estado);
digitalWrite (ledPin[i], estado);
level = level + estado;
estado = 0;
}
Serial.println("Nivel de Agua");
switch(level)
{
case 3:
Serial.println("ALTO");
break;
case 2:
Serial.println("MEDIO");
break;
case 1:
Serial.println("BAJO");
break;
default:
Serial.println("NIVEL CRITICO");
break;
}
delay(2000);
}
¿Porque no podría haber copiado yo antes que se editara y darle al botón Enviar Respuesta, luego que lo editaran? No es la primera vez que cuando contesto me aparece un cartél en rojo diciendo que se agregó una respuesta al post o algo asi.
Esperemos a que el usuario vuelva y le preguntamos.