Hi
New on the forum.
i have a wifi scan program with wemos d1 mini and a lcd.
i have attached a button to D5.
now i want to show the first ssid and stop until i press the button and then show second ssid etc.
but i can´t figure it out.
anyone has any ideas?
Robert
code:
#include "ESP8266WiFi.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
WiFiClient client;
LiquidCrystal_I2C lcd(0x27,16,2);
const int RSSI_MAX =-50;// define maximum strength of signal in dBm
const int RSSI_MIN =-100;// define minimum strength of signal in dBm
int i=1;
void setup() {
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
pinMode(D5, INPUT_PULLUP);
Serial.begin(115200);
}
void loop() {
SSID_scan();
delay(10000);
}
void SSID_scan() {
lcd.clear();
Serial.println("");
Serial.println("scan start");
lcd.setCursor(0,0);
lcd.print("Scan started");
WiFi.disconnect();
delay(100);
// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks();
if (n == 0) {
Serial.println("no networks found");
lcd.setCursor(3,0);
lcd.print("No networks found");
}
else
{
Serial.print(n);
Serial.println(" networks found");
lcd.setCursor(0,1);
lcd.print(n);
lcd.setCursor(2,1);
lcd.print("Networks found...");
delay(3000);
for (int i = 0; i < n; ++i)
{
// Print SSID and RSSI for each network found
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(WiFi.RSSI(i));
Serial.print(" (");
lcd.clear();
lcd.print(WiFi.SSID(i));
lcd.setCursor(0,1);
lcd.print("dBm:");
lcd.print(WiFi.RSSI(i));
lcd.setCursor(10,1);
lcd.print(dBmtoPercentage(WiFi.RSSI(i)));//Signal strength in %
lcd.print("%");
int button=digitalRead(D5);
if (button==HIGH){
}
}
}
Serial.println("scan done");
lcd.print("Scan Done.");
Serial.println("");
}
String encryptionTypeStr(uint8_t authmode) {
switch (authmode) {
case ENC_TYPE_NONE:
return "NONE";
case ENC_TYPE_WEP:
return "WEP";
case ENC_TYPE_TKIP:
return "TKIP";
case ENC_TYPE_CCMP:
return "CCMP";
case ENC_TYPE_AUTO:
return "AUTO";
default:
return "?";;
}
}
int dBmtoPercentage(int dBm)
{
int quality;
if(dBm <= RSSI_MIN)
{
quality = 0;
}
else if(dBm >= RSSI_MAX)
{
quality = 100;
}
else
{
quality = 2 * (dBm + 100);
}
return quality;
}//dBmtoPercentage