Buenas, a ver si me podéis echar una manita con esto... que he empezado hace muy poquito con Arduino y estoy un poquito verde...
Tengo una placa arduino UNO, con un interruptor y un relé, algo sencillo (en principio).
Lo que debería de hacer el circuito es, al pulsar el botón, cambiar el relé, el problema es que sin pulsar el botón el relé se cambia solo...
Añado el código que estoy usando, según la información que me devuelve el serial cambia el estado del pin por si solo... (de HIGH/LOW de manera aleatoria y viceversa) desconozco si debo poner algún tipo de resistencia entre interruptor y pin (he probado varias cositas, entre ellas una resistencia en pull down y nada), si debo colocar otro elemento o si mi código es erróneo.
Gracias de antebrazo.
#define DEBUG // Modo debug
const int inPin = 7; // Botón conectado al pin digital 7
const byte lockPin = A0; // Relé conectado al pin analógico 0
int val = 0; // Variable almacén de valor leído
void setup() {
#ifdef DEBUG
// Iniciar puerto serie
Serial.begin(9600);
Serial.println(F("Inicia comunicacion serial"));
#endif
// Activa el pin de relé
pinMode(lockPin, OUTPUT);
digitalWrite(lockPin, HIGH);
// Pin entrada digital apagado
pinMode(inPin, INPUT);
digitalWrite(inPin, LOW);
#ifdef DEBUG
// Muestra valor almacenado
Serial.print("VAL: ");
Serial.println(val);
Serial.println(F("--- FIN SETUP ---"));
#endif
}
void loop() {
delay(1000);
// Asigna valor de lectura del pin inPin
val = digitalRead(inPin);
#ifdef DEBUG
//Muestra valor almacenado
Serial.println(val);
#endif
// Manda mensaje a puerto serie en función del valor leido
if (val == HIGH) {
Serial.println("Encendido");
abrirRele();
}
else {
Serial.println("Apagado");
}
}
void abrirRele(){
#ifdef DEBUG
// Imprime información abierto
Serial.println(F("Abierto"));
#endif
// Apaga pin del relé
digitalWrite(lockPin, LOW);
while(true) {
delay(1000);
}
}
Un saludo!