Aggiunta comando manuale alzata discesa
salve tutti,
avrei bisogno di inserire un selettore on off on per comandare due relè, mantenendo ovviamente il comando da tastierino numerico. come posso fare? volevo inserire l'ingresso 22 e 24 per il selettore 2 posizioni
questo è il mio codice programma:
avrei bisogno di inserire un selettore on off on per comandare due relè, mantenendo ovviamente il comando da tastierino numerico. come posso fare? volevo inserire l'ingresso 22 e 24 per il selettore 2 posizioni
questo è il mio codice programma:
code: [select]
#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);
}
}
ciao marcosilve95,
cioè tu vorresti poter comandare relè sia con il tastierino che con il selettore!?
se così nelle tue if() ti basta aggiungere un "or" con digitalread() od il suo negato "!"...dipende se imposti pin come input od input_pullup.
cioè tu vorresti poter comandare relè sia con il tastierino che con il selettore!?
se così nelle tue if() ti basta aggiungere un "or" con digitalread() od il suo negato "!"...dipende se imposti pin come input od input_pullup.
Arduino Forum > International > Italiano > Software (Moderator: leo72) > Aggiunta comando manuale alzata discesa
arduino
Comments
Post a Comment