Всем доброго времени суток, Хочу поинтересоваться у вас, возможно ли сделать на базе Lilygo TTGO ESP32 T-display дверной звонок? Суть такая что пришедший нажимает на кнопку прикрученную к ESP а та посредством подключения к вай фаю передает на телефон уведомление о звонке в дверь. Заранее спасибо.
Я себе на Новый Год решил купить )) провозился один день, с настройкой библиотек для вывода изображения на встроенный экран, но одолел. А теперь пришла такая вот мысль в голову. Просто не знаю в какую сторону копать?
Итак, плоды моей мини деятельности ... Вначале думал прикрутить библиотеку Button2 и все вроде работает но нет повторного реагирования на нажатие той же кнопки. То есть есть "Клик", "Двойной клик", "Тройной клик" и "Долгое нажатие", есть даже подсчет количества нажатий но вот реакции повторного нажатия нет. После недолгих поисков в гугле, нашел нативное DigitalRead и попробовал его. Результат, получилось. Но не могу вывести надпись на экран. Думаю дело в том что используется цикл в void loop() , при попытке перемещения в void setup() цикл не срабатывает но надпись есть. Помогите плиз советами )) Вот код: Код (C++): #include <TFT_eSPI.h> #include <SPI.h> // TFT Pins has been set in the TFT_eSPI library in the User Setup file TTGO_T_Display.h #define TFT_MOSI 19 #define TFT_SCLK 18 #define TFT_CS 5 #define TFT_DC 16 #define TFT_RST 23 #define TFT_BL 4 // Display backlight control pin #define TFT_RGB_BGR 0x00 #define PORTRAIT 0 #define LANDSCAPE 1 #define PORTRAIT_FLIP 2 #define LANDSCAPE_FLIP 3 #define MC_DATUM 4 /* Tests string alignment Normally strings are printed relative to the top left corner but this can be changed with the setTextDatum() function. The library has #defines for: TL_DATUM = 0 = Top left TC_DATUM = 1 = Top centre TR_DATUM = 2 = Top right ML_DATUM = 3 = Middle left #define MC_DATUM = 4 MR_DATUM = 5 = Middle right BL_DATUM = 6 = Bottom left BC_DATUM = 7 = Bottom centre BR_DATUM = 8 = Bottom right L_BASELINE = 9 = Left character baseline (Line the 'A' character would sit on) C_BASELINE = 10 = Centre character baseline R_BASELINE = 11 = Right character baseline */ TFT_eSPI tft = TFT_eSPI(135, 240); // Invoke custom library const int PushButton = 0; void setup() { pinMode(PushButton, INPUT); tft.invertDisplay(false); // Where i is true or false tft.init(); tft.setRotation(0); /* tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE, TFT_MAGENTA); tft.setTextSize(3); tft.setTextDatum(MC_DATUM); tft.println("Ring ME"); */ } void loop() { int Push_button_state = digitalRead(PushButton); if (Push_button_state == HIGH) { tft.fillScreen(TFT_WHITE); tft.setTextColor(TFT_BLACK, TFT_WHITE); tft.setTextSize(3); tft.setTextDatum(MC_DATUM); tft.println("Ring ME!"); } else { tft.fillScreen(TFT_RED); tft.setTextColor(TFT_WHITE, TFT_RED); tft.setTextSize(3); tft.println("** Ring **"); delay(3000); } }
Тут надо с самого начала разбираться. Можете почитать тут: https://alexgyver.ru/lessons/arduino-buttons/ Очень толково пишет и много полезного. По вашим вопросам: Setup - выполняется один раз при запуске. Loop - выполняется после окончания setup в цикле, постоянно, с частотой работы процессора. digitalRead - читает значение с цифрового порта. Описание основных функций можно почитать тут: https://www.arduino.cc/reference/en/ Или тут: https://alexgyver.ru/lessons/ Вот тут тоже много интересного: http://mypractic.ru/uroki-programmirovaniya-arduino-navigaciya-po-urokam