Salve a tutti ho un vecchio flipper che o lo butto o lo faccio funzionare almeno un minimo per giocare. tutti i fine corsa del piano lavorano a matrice, fin qui tutto ok, ho recuperato tutte le colonne e righe e ho realizzato un 1° sketch con la libreria <KEYPAD.H> abilitando il monitor seriale nonostante la ruggine tutti i finecorsa funzionano e scrivono il loro caratetre ascii. il problema è questo alcune uscite devono avere delle temporizzazioni usando millis invece di delay. non riesco a sostituire delay con millis ho provato da settimane in tutte le maniere ma nulla con comando diretto da ingresso tutto ok da matrice non riesco a farlo andare. di seguito il codice semplificato con il delay da sostituire con millis. se qualcuno mi può dare una dritta..grazie
//Definisce i pin per comandare i rele'
const int rele_1 = 13; // bumper up sx
// Definizione tastiera
#include <Keypad.h>
const int ROW_NUM = 2; // otto righe
const int COLUMN_NUM = 1; // quattro colonne
// Definizione mappa della tastiera
char keys[ROW_NUM][COLUMN_NUM] = {
{'1'},
{'7'},
};
byte pin_rows[ROW_NUM] = { 3, 4}; // Riga 0,1,2,3,4,5,6,7,8
byte pin_column[COLUMN_NUM] = { 5 }; // Colonna 0,1,2,3,4
// Creazione della tastiera
Keypad kpd = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM );
void setup() {
Serial.begin(9600);
// imposta i pin digitali come uscite:
pinMode(rele_1, OUTPUT);
digitalWrite(rele_1,LOW);
}
void loop() {
char key = kpd.getKey();
if (key) {
Serial.println(key);
switch (key)
{
case 49: //valore ascii del numero 1
digitalWrite(rele_1, HIGH);
delay (100);
digitalWrite(rele_1, LOW);
}
}
}