Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- esphome:
- name: keypad
- esp32:
- board: nodemcu-32s
- logger:
- api:
- encryption:
- key: "Tvůj klíč"
- ota:
- platform: esphome
- password: "Tvůj Klíč"
- wifi:
- ssid: "Tvé SSID WiFi"
- password: "Heslo Wifi"
- fast_connect: true
- ap:
- ssid: "Keypad Fallback Hotspot"
- password: "Heslo hotspotu"
- captive_portal:
- globals:
- - id: entered_code
- type: std::string
- initial_value: '" "'
- - id: last_key_press_time
- type: unsigned long
- initial_value: "0"
- - id: last_code_sent_time
- type: unsigned long
- initial_value: "0"
- - id: send_empty_flag
- type: bool
- initial_value: "false"
- matrix_keypad:
- id: mykeypad
- rows:
- - pin: GPIO18
- - pin: GPIO5
- - pin: GPIO17
- - pin: GPIO16
- columns:
- - pin: GPIO4
- - pin: GPIO0
- - pin: GPIO2
- keys: "123456789*0#"
- has_diodes: false
- on_key:
- then:
- - lambda: |-
- // Bliknutí LED při každém stisku klávesy
- id(led_keypad).turn_on();
- delay(100);
- id(led_keypad).turn_off();
- if (x == '#') {
- // Po stisku '#' odešle zadané číslo
- id(keypad_pressed_key).publish_state(id(entered_code));
- id(last_code_sent_time) = millis(); // Nastaví čas posledního odeslání
- id(send_empty_flag) = true; // Nastaví příznak pro odeslání prázdného znaku
- // Blikání LED podle počtu zadaných číslic
- int blink_count = id(entered_code).length();
- for (int i = 0; i < blink_count; i++) {
- id(led_keypad).turn_on();
- delay(100);
- id(led_keypad).turn_off();
- delay(100);
- }
- // Vymazání zadaného čísla po odeslání
- id(entered_code) = "";
- } else {
- // Aktualizace času posledního stisku klávesy
- id(last_key_press_time) = millis();
- // Reset času posledního odeslání a příznaku při stisku klávesy
- id(last_code_sent_time) = 0;
- id(send_empty_flag) = false;
- // Přidání stisknuté klávesy do zadaného čísla
- id(entered_code) += x;
- }
- interval:
- - interval: 100ms
- then:
- - lambda: |-
- // Kontrola, zda uplynulo 2 sekundy od posledního stisku klávesy
- if (millis() - id(last_key_press_time) >= 2000 && id(entered_code).length() > 0) {
- // Odeslání zadaného čísla
- id(keypad_pressed_key).publish_state(id(entered_code));
- id(last_code_sent_time) = millis(); // Nastaví čas posledního odeslání
- id(send_empty_flag) = true; // Nastaví příznak pro odeslání prázdného znaku
- // Blikání LED podle počtu zadaných číslic
- int blink_count = id(entered_code).length();
- for (int i = 0; i < blink_count; i++) {
- id(led_keypad).turn_on();
- delay(100);
- id(led_keypad).turn_off();
- delay(100);
- }
- // Vymazání zadaného čísla po odeslání
- id(entered_code) = "";
- }
- // Kontrola, zda uplynulo 2 sekundy od posledního odeslání čísla a je-li nastaven příznak
- if (millis() - id(last_code_sent_time) >= 2000 && id(send_empty_flag)) {
- // Odeslání prázdného znaku
- id(keypad_pressed_key).publish_state("");
- id(send_empty_flag) = false; // Reset příznaku
- }
- text_sensor:
- - platform: wifi_info
- ip_address:
- name: ESP IP Address
- - platform: template
- name: "Keypad Pressed Key"
- id: keypad_pressed_key
- lambda: |-
- return {};
- update_interval: 100ms
- sensor:
- - platform: wifi_signal
- name: "WiFi Signal Strength"
- update_interval: 60s
- binary_sensor:
- - platform: status
- id: wifi_status
- on_state:
- then:
- - if:
- condition:
- lambda: 'return id(wifi_status).state;'
- then:
- - switch.turn_on: wifi_led
- else:
- - switch.turn_off: wifi_led
- switch:
- - platform: restart
- name: "Keypad - RESTART"
- - platform: gpio
- pin: GPIO15
- id: wifi_led
- name: "WiFi LED"
- - platform: gpio
- pin: GPIO25
- id: led_keypad
- name: "Keypad LED"
- web_server:
- port: 80
- version: 2
Advertisement
Comments
-
- Modul ESP32 (NodeMCU 32S)
- Klávesnice matrix 4x3 klávesy.
- Po stisku číslice (číslic) dojde k jejich odeslání naráz po uplynutí 2s, nebo okamžitě po stisku klávesy #.
- Poté dojde k odeslání prázdného znaku po dalších dvou sekundách. Pokud před odesláním prázdného znaku dojde ke stisknutí jakékoliv číslice, dojde k resetu časovače odeslání prázdného znaku.
- Při stisku kláves, bliká "Keypad LED".
- Po odeslání číslic, "Keypad LED" blikne tolikrát, kolik číslic bylo odesláno.
Add Comment
Please, Sign In to add comment
Advertisement