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:

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.


Arduino Forum > International > Italiano > Software (Moderator: leo72) > Aggiunta comando manuale alzata discesa


arduino

Comments

Popular posts from this blog

Error compiling for board Arduino/Genuino Uno.

Installation database is corrupt

esp8266 (nodemcu 0.9) client.write très lent ???