muchas veces necesitamos conectar mas de un pulsador o sensores jumper a nuestros trabajos pero el problema que siempre vemos es que entre mas sensores de este tipo tengamos mas entradas digitales perdemos.
la solución es muy simple. Aprovechando que nuestro bicho posee entradas analógicas y los valores que pueden tomar estas entradas son casi infinitos por que no la utilizamos para detectar este tipo de dispositivos, el principio es tan básico que solo consiste en divisores de tensión.
Entonces 5/6=0.83333333V
Esto quiere decir que el voltaje de salida del divisor de tensión y entrada analógica del ardunio es:
- S1 estará entre 0.83333333 y 1.66666666
- S2 estará entre 1.66666666 y 2.49999999
- S3 estará entre 2.49999999 y 3.33333333
- S4 estará entre 3.33333333 y 4.16666666
- S5 estará entre 4.16666666 y 4.99999999
Como calculamos esto pues fácil por divisor de tensión
Despejo R2
Entonces para S3
R2 = ?
R1 = 3.3K ( Para mi caso por que hay miles de combinaciones posibles)
Ve = 5V
Vout = 3v (mayor que 2.4999999999 y menor 3.33333333v)
R2 = 3.3(5v - 3v)/3v = 2.2k Muchas veces el valor no es comercial entonces buscamos uno que si y que no se pase de los rangos que necesitamos. en mi caso quedaría de esta manera.
para los que no quieran quemarce la cabeza pensando que valores escojer: prueben con los mios que son los que tenia en mi laboratorio.
Ahora si lo que nos interesa el sketch:
void setup() {
Serial.begin(9600);
}
void loop() {
// lee el puerto analógico 0
int analogValue = analogRead(0);
analogValue=map(analogValue,0,1023,0,6);
switch (analogValue){
case 1:
Serial.println("Es 1");delay(300);break;
case 2:
Serial.println("Es 2");delay(300);break;
case 3:
Serial.println("Es 3");delay(300);break;
case 4:
Serial.println("Es 4");delay(300);break;
case 5:
Serial.println("Es 5");delay(300);break;
}
}
muy básico y fácil de entender. luego posteo fotos
2 comentarios:
Pues muchisimas gracias por la info... me acabo de ahorrar unos cuantos minutos, u horas, de hacer calculos.... Gracias por compartir.
Una pregunta, pq mapeas entre 0 y 6? Si lo hicieras entre 0 y 5 daría error?
Publicar un comentario