Estimados, buenas noches.
Me estoy enfrentando a un problema y no se cual sea la solucion, tengo para pruebas un pequeño programa el cual adjuntare al final,
El programa funciona 99% bien la cuestión se desencadena cuando , no se si les ha pasado, leo por el pin D2 el estado si es Alto genero una rutina la cuestion es que tan solo al tocal el cable que va al pin 2 genera un TRUE en el puerto como si entrara voltaje y por consecuencia ejecuta miprograma, no se a que se deba incluso hice algunas rutinas para medir el voltaje de manera constante de 4 puertos analogos y siempre me da valores ,jamas un CERO , y estos puertos sin conectarlos a ningun lado la verdad no se como hacer por que lo que necesito es desencadenar un proceso al pasar un voltaje por cualquiera de los puertos ya sea digital (estado TRUE) o analogo (voltaje cercano a 5) pero tan solo al tomar el cable sube la lectura o a veces sin eso, hice pruebas con dos arduinos UNO y Pro mini no se en que estoy mal, ya busque en el foro y no doy con casos similares; adjunto el pedazo de codigo que tengo para mi sistema.
Saludos
#include <SoftwareSerial.h>
SoftwareSerial GPRS(7,8);
String SMS_phone="AT+CMGS="XXXXXXXXXX"";
String CALL_phone="ATDXXXXXXXXXX;";
int pinEntrada_alert= 2;
int check_alert = 0;
void setup() {
Serial.begin(19200); //iniciar puerto serie del arduino
delay(1000);
GPRS.begin(19200); //iniciar configuracion serial del GSM
delay(1000);
GPRS.print("AT+CMGF=1\r");
delay(1000);
GPRS.print("AT+CNMI=,2\r"); //Mensajes en linea de comandos
delay(1000);
pinMode(pinEntrada_alert,INPUT); //definir pin como entrada
delay(1000);
Serial.println("Sistema listo...");
}
//////////////////////////////////////////////////////////////////
void mensaje_alerta()
{
GPRS.println(SMS_phone);
delay(100);
GPRS.println("Mensaje evento registrado");
delay(100);
GPRS.println((char)26); //
delay(100);
GPRS.println();
delay(5000);
}
void llamar()
{
GPRS.println(CALL_phone);
delay(20000);
GPRS.println("ATH"); // Cuelga la llamada
delay(1000);
}
void lecturaAlerta()
{
check_alert = digitalRead(pinEntrada_alert); //lectura digital de pin de alerta
if (check_alert == HIGH)
{
Serial.println("Alerta en progreso...");
mensaje_alerta(); //Envia mensaje SMS
llamar(); //llamada de emergencia
}
}
void loop()
{
delay (1000);
lecturaAlerta();
}