Buenas, tengo una alarma que funciona de maravilla... cuando se abre la puerta y la alarma está activa, la sirena suena que ensordece y se enciende unos leds rojos, y estoy muy contento con cómo funciona... ahora quiero conectarle un arduino con un módulo GSM para q cada vez que se encienda uno de los leds de la alarma "síntoma de que se ha puesto en funcionamiento" me mande un SMS a mi teléfono móvil.
He desmontado la alarma y los leds tienen dos bornes como es habitual, uno + y otro -, he puesto el positivo con un cable hasta el pin 13, y el negativo lo he unido al del arduino para que estén en común... y he cargado un pequeño sketch estableciendo el pin 13 como input y diciéndole que si está en high me de una respuesta y si está en low me de otra respuesta... pero no me funciona... está siempre en high, y además... cuando pongo el pin 13 al + del led y el ground al - del led... el led se enciende con poca intensidad... pero se enciende... por lo que la pregunta es...
¿¿cómo hacer que cuando se encienda un LED de otro sistema electrónico, se me ponga en HIGH un pin
determinado del arduino???
Cuando la alarma está desactivada el led está apagado:
Pablo_Lucini gracias por contestar! pero sólo entiendo que tengo que conectar el + del LED a la "base de un transistor en emisor común, cuyo colector conectás a la entrada del arduino."
Lo que está entre comillas "" es que no entiendo nada.
Y con 2V no pueds accionar una entrada digital. NEcesitas un transitor como te dijo @Pablo_Lucini que suba la tensión a 5V o 3.3V según tu Arduino.
Resitencia de base 1k transitor supon un 2n2222 o un BC547. Emisor a GND. Colector a R de 4k7 y a 5V
Desde elcolector conectas el pin 13 y verá los cambios invertidos.
Cuando el LED este ON verás un LOW
Cuando el LED este OFF veras un HIGH.
Mejor que eso sería que uses un optoacoplador, con conexiones similares.
Sabs como?
como te dicen puedes o debes usar un transistor para elevar la tension que no llega al minimo necestario, o tienes otra opcion que es usar un optoacoplador y con ello solucionas el problema tambien.
Edito.... perdon, no leí a Surbyte, pero ya te dió la solución
Hola. Seguramente entre el led y el chip hay una resistencia para limitar la corriente del led'. Si tomas la muestra entre la resistencia y el chip seguramente tienes un nivel alto, pero si no te quieres complicar, toma la tensión del led pero cambia por un pin analógico de arduino como el siguiente ejemplo A0.
Edito porque he visto la fotografía de la placa de alarma y parece que es R2 la resistencia del led, la tienes ahí a milímetros del led'. Mide allí la tensión, del lado opuesto al que va al led'.
Buenas!! @Daniel_Arg gracias por contestar, he probado a medir el LED y me da 1.9V y la resistencia "R2" me da 1.3V por lo que es menos y no llega para una salida digital... la cosa es que estoy probando con todas las salidas analógicas con tu sketch y no me funciona... siempre da <200 y está en LOW... y si intento visualizar lo que me arroja las salidas analógicas me aparece el A0 me da 14... aunque no sé qué significa ese 14:
int alarma = A0; // Pin del pulsador rojo
int alarma1 = A1; // Pin del pulsador rojo
int alarma2 = A2; // Pin del pulsador rojo
int alarma3 = A3; // Pin del pulsador rojo
int alarma4 = A4; // Pin del pulsador rojo
int alarma5 = A5; // Pin del pulsador rojo
void setup() {
Serial.begin(115200);
delay(300);
pinMode(alarma, INPUT); // Pin del pulsador rojo apagado
pinMode(alarma1, INPUT); // Pin del pulsador rojo apagado
pinMode(alarma2, INPUT); // Pin del pulsador rojo apagado
pinMode(alarma3, INPUT); // Pin del pulsador rojo apagado
pinMode(alarma4, INPUT); // Pin del pulsador rojo apagado
pinMode(alarma5, INPUT); // Pin del pulsador rojo apagado
}
void loop() {
if(alarma > 100){
Serial.println("0");
Serial.println(alarma);
Serial.println("1");
Serial.println(alarma1);
Serial.println("2");
Serial.println(alarma2);
Serial.println("3");
Serial.println(alarma3);
Serial.println("4");
Serial.println(alarma4);
Serial.println("5");
Serial.println(alarma5);
}else{
Serial.println("A0");
Serial.println(alarma);
Serial.println("A1");
Serial.println(alarma1);
Serial.println("A2");
Serial.println(alarma2);
Serial.println("A3");
Serial.println(alarma3);
Serial.println("A4");
Serial.println(alarma4);
Serial.println("A5");
Serial.println(alarma5);
}
}
y no me cambia nada si conecto los cables al LED o no les conecto, siempre me arroja lo mismo que en la imagen... teniendo el + del led al A0 y el - del LED al ground...
Tendré que probar lo del transistor o lo del octoacoplador... aunque nunca he usado ninguno...
cotarejo:
he probado a medir el LED y me da 1.9V y la resistencia "R2" me da 1.3V por lo que es menos y no llega .....
Debes usar un voltímetro y medir entre masa y el lado de la resistencia que No va al led.
Por ley de ohm nunca pero nunca puede darte un valor mas alto del lado del led.
Si llegara a ser el caso que has puesto el voltímetro entre ambos pines del led y te da 1.9 y también has medido en ambos pines de la resitencia y te da 1,3 voltios Entonces entre masa y el pin de la resitencia opuesto al led hay la suma de ambos o sea 3.2 voltios
Para medir con el monitor serie lo que tienes que hacer es
Es código que usas @cotarejo del post#9 esta mal.
Has definido los pines analógicos pero luego los vuelves a usar como entradas digitales.
No es lo que @Daniel_Arg te sugirió.
El sugiere que lo uses como voltimetro, leyendo justamente esos 2V que mencionas pero tu estas queriendo hacer lo mismo que indicaste al comienzo del hilo.
Revisa la sugerencia de @Daniel_Arg otra vez
Muuchas gracias a todos! a través del pin analógico sí que funcionó a la perfección! cuando se enciende el LED me muestra un valor de 500 más o menos, y cuando el LED está apagado me muestra un valor de 0. Con eso he conseguido hacer funcionar el proyecto que tenía en mente!