Salve a tutti,
avrei bisogno di inserire un selettore ON OFF ON per comandare i due relè, mantenendo ovviamente il comando da tastierino numerico. Come posso fare? Volevo inserire l'ingresso 22 e 24 per il selettore a 2 posizioni
Questo è il mio codice programma:
#include <Keypad.h>
const byte ROWS = 4; // quattro righe
const byte COLS = 4; // quattro colonne
// Definizione del Keymap
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'#', '0', '*', 'D'}
};
// Connessione Keypad ROW0, ROW1, ROW2 e ROW3 ai pin Arduino
byte rowPins[ROWS] = { 2, 3, 4, 5};
// Connessione Kaypad COL0, COL1 e COL2 ai pin Arduino
byte colPins[COLS] = { 6, 7, 8, 9 };
// Creazione del Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
#define pin_rele_su 12 // relè salita
#define pin_rele_giu 11 // relè discesa
byte statoRele_su = 1 ;
byte statoRele_giu = 1 ;
unsigned long prevMillis ;
int int_key ;
int old_key ;
void setup() {
delay(1000);
pinMode(pin_rele_su, OUTPUT);
pinMode(pin_rele_giu, OUTPUT);
digitalWrite(pin_rele_su, statoRele_su );
digitalWrite(pin_rele_giu, statoRele_giu );
Serial.begin(9600);
}
void loop() {
char key = kpd.getKey();
if (key) {
Serial.println(key);
int_key = key - '0'; // converte in intero e lo usa come moltiplicatore
if ( int_key >= 0 && int_key <= 9 ) { // controlla se è un numero
prevMillis = millis();
if ( int_key == 0 ) {
statoRele_giu = 0 ;
}
else {
statoRele_su = 0 ;
old_key = int_key ; // memorizza il tasto premuto
}
}
}
if (statoRele_su == 0) {
// c'è da disabilitare prima il relè discesa, come interblocco
digitalWrite(pin_rele_giu, HIGH ); // disabilita rele discesa
if ( millis() - prevMillis > ( int_key * 1550 ) ) {
statoRele_su = 1; // disattivare relè e conteggio
}
digitalWrite(pin_rele_su, statoRele_su);
}
if (statoRele_giu == 0) {
// c'è da disabilitare prima il relè salita, come interblocco
digitalWrite(pin_rele_su, HIGH ); // disabilita rele salita
if ( millis() - prevMillis > (old_key * 1600 ) ) {
statoRele_giu = 1; // disattivare relè e conteggio
}
digitalWrite(pin_rele_giu, statoRele_giu);
}
}