Téléverser les fichiers vers "/"
This commit is contained in:
+87
@@ -0,0 +1,87 @@
|
|||||||
|
const byte ROWS = 4;
|
||||||
|
const byte COLS = 4;
|
||||||
|
|
||||||
|
char keys[ROWS][COLS] = {
|
||||||
|
{'1', '2', '3', 'A'},
|
||||||
|
{'4', '5', '6', 'B'},
|
||||||
|
{'7', '8', '9', 'C'},
|
||||||
|
{'*', '0', '#', 'D'}
|
||||||
|
};
|
||||||
|
|
||||||
|
byte rowPins[ROWS] = {9, 8, 6, 7};
|
||||||
|
byte colPins[COLS] = {5, 4, 2, 3};
|
||||||
|
const byte RELAY_PIN = 10;
|
||||||
|
|
||||||
|
const String CODE_ON = "1234";
|
||||||
|
const String CODE_OFF = "5678";
|
||||||
|
const byte CODE_LEN = 4;
|
||||||
|
|
||||||
|
String saisie = "";
|
||||||
|
bool relaisActif = false;
|
||||||
|
|
||||||
|
char lastKey = 0;
|
||||||
|
unsigned long lastTime = 0;
|
||||||
|
const unsigned long DEBOUNCE = 150;
|
||||||
|
|
||||||
|
char scanKeypad() {
|
||||||
|
for (byte r = 0; r < ROWS; r++) {
|
||||||
|
for (byte i = 0; i < ROWS; i++) {
|
||||||
|
pinMode(rowPins[i], INPUT_PULLUP);
|
||||||
|
}
|
||||||
|
pinMode(rowPins[r], OUTPUT);
|
||||||
|
digitalWrite(rowPins[r], LOW);
|
||||||
|
delayMicroseconds(10);
|
||||||
|
|
||||||
|
for (byte c = 0; c < COLS; c++) {
|
||||||
|
pinMode(colPins[c], INPUT_PULLUP);
|
||||||
|
delayMicroseconds(10);
|
||||||
|
if (digitalRead(colPins[c]) == LOW) {
|
||||||
|
while (digitalRead(colPins[c]) == LOW);
|
||||||
|
delay(20);
|
||||||
|
return keys[r][c];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600);
|
||||||
|
pinMode(RELAY_PIN, OUTPUT);
|
||||||
|
digitalWrite(RELAY_PIN, HIGH);
|
||||||
|
Serial.println("Prêt.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
char key = scanKeypad();
|
||||||
|
if (key != 0) {
|
||||||
|
unsigned long now = millis();
|
||||||
|
if (key != lastKey || (now - lastTime) > DEBOUNCE) {
|
||||||
|
lastKey = key;
|
||||||
|
lastTime = now;
|
||||||
|
|
||||||
|
saisie += key;
|
||||||
|
Serial.print("Saisie : ");
|
||||||
|
Serial.println(saisie);
|
||||||
|
|
||||||
|
// Tronque si trop long
|
||||||
|
if (saisie.length() > CODE_LEN) {
|
||||||
|
saisie = saisie.substring(saisie.length() - CODE_LEN);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (saisie == CODE_ON) {
|
||||||
|
relaisActif = true;
|
||||||
|
saisie = "";
|
||||||
|
Serial.println("Relais ON permanent.");
|
||||||
|
} else if (saisie == CODE_OFF) {
|
||||||
|
relaisActif = false;
|
||||||
|
saisie = "";
|
||||||
|
Serial.println("Relais OFF.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lastKey = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
digitalWrite(RELAY_PIN, relaisActif ? LOW : HIGH);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user