1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <Keypad.h>
#include <Arduino.h>
#include <U8g2lib.h>
#include <U8x8lib.h>
#define I2C_ADDRESS 0x3C
U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {2, 3, 4, 5};
byte colPins[COLS] = {8, 9, 10};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
String action;
long timein[6], countdown_time = 0, initialsecond = 0;
int i = 0;
const byte mosfet = 15;
const byte led = 13;
void setup() {
pinMode (mosfet, OUTPUT);
pinMode (led, OUTPUT);
digitalWrite(mosfet, LOW);
digitalWrite(led, LOW);
u8x8.begin();
u8x8.clear();
u8x8.setFont(u8x8_font_8x13B_1x2_r);
u8x8.setCursor (2, 0);
u8x8.print("Saisie mn/sec");
u8x8.setFont(u8x8_font_profont29_2x3_n );
u8x8.setCursor (3, 3);//colonne/rangée
u8x8.print("00:00");
}
void loop() {
char key = keypad.getKey();
if (key) {
switch (key) {
case '*' :
action = "set_time";
Serial.println(key);
/*lcd.blink();
lcd.setCursor(6, 1);*/
i = 2;
break;
case '#' :
action = "start_countdown";
break;
default :
if (action == "set_time") {
i++;
int c = i - 1;
timein[c] = key - 48;
initialsecond = 0;
long hour = (timein[0] * 10) + timein[1];
long minute = (timein[2] * 10) + timein[3];
long second = (timein[4] * 10) + timein[5]; //second
countdown_time = (hour * 3600) + (minute * 60) + second;
Serial.println(key);
//lcd.print(key);
if (i % 2 == 0 && i < 6) {
//lcd.print(":");
u8x8.print(":");
}
break;
}
}
}
if (action == "start_countdown") {
if (initialsecond == 0) {
initialsecond = millis() / 1000;
}
long countdowntime_seconds = countdown_time - (millis() / 1000) + initialsecond;
if (countdowntime_seconds >= 0) {
long countdown_hour = countdowntime_seconds / 3600;
long countdown_minute = ((countdowntime_seconds / 60) % 60);
long counddown_sec = countdowntime_seconds % 60;
u8x8.setFont(u8x8_font_8x13B_1x2_r);
u8x8.setCursor (0, 0);
u8x8.print(" Il reste encore");
u8x8.setCursor (0, 2);//colonne/rangée
/*lcd.setCursor(0, 1);
lcd.setCursor(0, 2);
*/
/*lcd.print("Il reste encore");
lcd.setCursor(4, 1);*/
if (countdown_hour < 10) {
lcd.print("0");
}
lcd.print(countdown_hour);
lcd.print(":");
if (countdown_minute < 10) {
lcd.print("0");
}
lcd.print(countdown_minute);
lcd.print(":");
if (counddown_sec < 10) {
lcd.print("0");
}
lcd.print(counddown_sec);
//secondes_totales = (countdown_minute * 60)+ counddown_sec;
//if ( secondes_totales == 0){
if ( counddown_sec < 1 && countdown_minute == 0 && countdown_hour == 0) {
digitalWrite (mosfet , HIGH);
digitalWrite (led , HIGH);
}
}
}
} |
Partager