// #include <WiFi.h>
#include "LCD_1602_RUS.h"
// #define WIFI_SSID "Wokwi-GUEST"
// #define WIFI_PASS ""
// #define BOT_TOKEN "6040632807:AAG8QHmaDlHUFftx4ELtBQVsjANOX2Cpzrk"
// #define CHAT_ID "6164808768"
// #include <FastBot.h>
// FastBot bot(BOT_TOKEN);
// //===============================================================================
// int counter; // Data counter
// int totalColumns = 16; // number of colums pixels on the LCD
// int totalRows = 2; // number of rows pixels on the LCD
// const int delayTime = 2000; // delay time on between each iteration
// const int scrolling_time = 250; // Scrolling time of the test
// //LiquidCrystal_I2C lcd(0x27, totalColumns, totalRows); // Define the lcd object from the liduidCrystal class
// LCD_1602_RUS lcd(0x27, totalColumns, totalRows);
// String staticMessage = "Телеграм бот";
// String scrollingMessage = "LCD1602!";
// //=============================================================================
// // The below function allow us to scroll a test and it is used to scroll the ouput of data of the sensor
// void scrollMessage(int row, String message, int delayTime, int totalColumns) {
// for (int i = 0; i < totalColumns; i++) {
// message = message;
// }
// message = message + " ";
// for (int position = 0; position < message.length(); position++) {
// lcd.setCursor(0, row);
// lcd.print(message.substring(position, position + totalColumns));
// delay(delayTime);
// }
// }
// //=================================================================================
// void setup() {
// Serial.begin(9600);
// lcd.init();
// lcd.backlight();
// Serial.print("Connecting to WiFi");
// WiFi.begin("Wokwi-GUEST", "", 6);
// while (WiFi.status() != WL_CONNECTED) {
// delay(100);
// Serial.print(".");
// }
// Serial.println(" Connected!");
// // connectWiFi();
// bot.setChatID(CHAT_ID);
// // подключаем функцию-обработчик
// bot.attach(newMsg);
// // показать юзер меню (\t - горизонтальное разделение кнопок, \n - вертикальное
// bot.showMenu("Menu1 \t Menu2 \t Menu3 \n Close");
// lcd.print(staticMessage); // print the static message
// scrollMessage(1, scrollingMessage, scrolling_time, totalColumns);
// }
// // обработчик сообщений
// void newMsg(FB_msg& msg) {
// if (msg.text == "Close") bot.closeMenu();
// else Serial.println(msg.text);
// lcd.clear();
// delay(150);
// // lcd.setCursor(0, 1);
// // lcd.print(msg.text);
// //delay(1000);
// lcd.setCursor(0, 0);
// lcd.print("от: " + msg.username);
// delay(1000);
// //lcd.clear();
// // lcd.setCursor(0, 1);
// // lcd.print(msg.text);
// // delay(500);
// lcd.setCursor(0, 1);
// String scrollingMessageHumidity = msg.text;
// scrollMessage(1, scrollingMessageHumidity, scrolling_time, totalColumns);
// lcd.clear();
// // Print he values of Temperature in Celsus
// // String scrollingMessageTemperature = msg.text;
// // scrollMessage(1, scrollingMessageTemperature, scrolling_time, totalColumns);
// // Print the values of temperature in Fahrenheit
// // String scrollingMessageTemperatureFahrenheit = msg.text;
// // scrollMessage(1, scrollingMessageTemperatureFahrenheit, scrolling_time, totalColumns);
// // // Распечатайте значения индекса тепла для обеих единиц.
// // String scrollingMessageHeatIndexCelsus = msg.text;
// // scrollMessage(1, scrollingMessageHeatIndexCelsus, scrolling_time, totalColumns);
// // String scrollingMessageHeatIndexFahrenheit = msg.text;
// // scrollMessage(1, scrollingMessageHeatIndexFahrenheit, scrolling_time, totalColumns);
// delay(delayTime);
// counter++; // update the counbter
// }
// void loop() {
// bot.tick(); // тикаем в луп
// Serial.print(bot.tick());
// }
// void connectWiFi() {
// delay(2000);
// Serial.begin(115200);
// Serial.println();
// WiFi.begin(WIFI_SSID, WIFI_PASS);
// while (WiFi.status() != WL_CONNECTED) {
// delay(500);
// Serial.print(".");
// // if (millis() > 15000) ESP.restart();
// }
// Serial.println("Connected");
// }
// // // /* Hello Wokwi! */
// // // #include <LiquidCrystal_I2C.h>
// // // LiquidCrystal_I2C lcd(0x27, 20, 4);
// // // void setup() {
// // // lcd.init();
// // // lcd.backlight();
// // // lcd.setCursor(1, 0);
// // // lcd.print("Hello, Wokwi!");
// // // }
// // // void loop() {
// // // lcd.setCursor(7, 1);
// // // lcd.print(millis() / 1000);
// // // }
// // #include "LCD_1602_RUS.h"
// // LCD_1602_RUS lcd(0x27, 16, 2);
// // void setup()
// // {
// // lcd.init(); // initialize the lcd
// // // Print a message to the LCD.
// // lcd.backlight();
// // lcd.setCursor(2, 0);
// // lcd.print(L"Теперь можно");
// // lcd.setCursor(3, 1);
// // lcd.print(L"по-русски");
// // }
// // void loop()
// // {
// // }
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// set the LCD number of columns and rows
int lcdColumns = 16;
int lcdRows = 2;
#define SDA 13 //Define SDA pins
#define SCL 14 //Define SCL pins
LCD_1602_RUS lcd(0x27, lcdColumns, lcdRows);
// если вы не знаете адрес I2C вашего дисплея, запустите скетч сканера I2C
// установите адрес ЖК-дисплея, количество столбцов и строк
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// Wifi network station credentials
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
// Telegram BOT Token (Get from Botfather)
#define BOT_TOKEN "6040632807:AAG8QHmaDlHUFftx4ELtBQVsjANOX2Cpzrk"
#define CHAT_ID "6164808768"
const unsigned long BOT_MTBS = 100; // mean time between scan messages
WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
unsigned long bot_lasttime; // last time messages' scan has been done
// Статическое имя, которое вы хотите отображать
void handleNewMessages(int numNewMessages)
{
Serial.print("handleNewMessages ");
Serial.println(numNewMessages);
for (int i = 0; i < numNewMessages; i++)
{
String chat_id = String(bot.messages[i].chat_id);
if (chat_id != CHAT_ID )
{
bot.sendMessage(chat_id, "Unauthorized user", "");
}
else
{
String text = bot.messages[i].text;
String from_name_static = bot.messages[i].from_name;
//if (from_name == "")
//from_name = "Guest";
if (text == "/start")
{
String welcome = "Welcome " + from_name_static + ".";
welcome += "Just";
bot.sendMessage(chat_id, welcome, "Markdown");
}
else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(from_name_static);
// Проверяем, изменился ли текст сообщения
if (text.length() > lcdColumns) {
// Если текст длиннее, чем экран, прокручиваем его
for (int j = 0; j < text.length() - lcdColumns + 1; j++) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(from_name_static);
lcd.setCursor(0, 1);
lcd.print(text.substring(j, j + lcdColumns));
delay(300); // Задержка для прокрутки
}
} else {
lcd.setCursor(0, 0);
lcd.print(from_name_static);
lcd.setCursor(0, 1);
lcd.print(text);
}
}
}
}
}
void setup() {
// initialize LCD
lcd.init();
// turn on LCD backlight
lcd.backlight();
Wire.begin(SDA, SCL); // attach the IIC pin
Serial.begin(115200);
Serial.println();
// attempt to connect to Wifi network:
Serial.print("Connecting to Wifi SSID ");
Serial.print(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT); // Add root certificate for api.telegram.org
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(100);
}
Serial.print("\nWiFi connected. IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
if (millis() - bot_lasttime > BOT_MTBS)
{
int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while (numNewMessages)
{
Serial.println("got response");
handleNewMessages(numNewMessages);
numNewMessages = bot.getUpdates(bot.last_message_received + 1);
}
bot_lasttime = millis();
}
}