#include "WiFi.h"
#include <LiquidCrystal.h>
#include "button_reader.h"
LiquidCrystal lcd(19, 18, 5, 17, 16, 4); // LCD дисплей
uint8_t wifi_net_count = 0;
uint8_t wifi_net = 0;
void NextNetwork() {
wifi_net_count = WiFi.scanNetworks();
++wifi_net;
if (wifi_net_count != 0) {
wifi_net %= wifi_net_count;
} else {
wifi_net = 0;
}
}
void UpdateLCD() {
lcd.clear();
if (wifi_net_count == 0) {
lcd.println("WiFi is not available");
return;
}
lcd.print(WiFi.SSID(wifi_net));
lcd.setCursor(0, 1);
lcd.print("WiFi level = ");
lcd.print(WiFi.RSSI(wifi_net));
lcd.print(" dBm");
}
// Button b_next_net(35, HIGH);
// void Update() {
// if (b_next_net.is_changed()) {
// NextNetwork();
// UpdateLCD();
// }
// }
bool is_changed = false;
void Update() {
if (is_changed) {
Serial.println("Updating");
NextNetwork();
UpdateLCD();
is_changed = false;
}
}
void InterruptUpdate() {
static unsigned long prev_millis;
if (prev_millis + 200 < millis()) {
is_changed = true;
}
prev_millis = millis();
}
void setup() {
pinMode(35, INPUT_PULLUP); // подтягивающий резистор на входе прерывания
attachInterrupt(35, InterruptUpdate, FALLING);
lcd.begin(20, 4);
Serial.begin(115200);
wifi_net_count = WiFi.scanNetworks();
Serial.print("WiFi Network count = ");
Serial.println(wifi_net_count);
UpdateLCD();
}
void loop() {
Update();
delay(200);
}