#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>
#define ENCODER_CLK 2
#define ENCODER_DT 4
#define ENCODER_SW 16
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* serverUrl = "http://129.151.244.160/";
unsigned const long interval = 2000;
unsigned long zero = 0;
int counter = 0 ;
int dist ;
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);
void setup(){
wifiConnect();
lcd.init();
lcd.backlight();
lcd.setCursor(0,1);
lcd.print("start");
pinMode(ENCODER_CLK, INPUT);
pinMode(ENCODER_DT, INPUT);
pinMode(ENCODER_SW, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ENCODER_CLK), readEncoder, FALLING);
}
void readEncoder() {
int bValue = digitalRead(ENCODER_DT);
if (bValue == HIGH) {
counter++;
}
if (bValue == LOW) {
counter--;
}
}
void loop() {
if(millis()-zero > interval){
HTTPClient http;
http.begin("http://129.151.244.160/API/getRecords.html");
int httpResponCode = http.GET();
if(httpResponCode > 0){
String payload = http.getString();
Serial.println(payload);
char json[500];
payload.toCharArray(json,500);
StaticJsonDocument <200> doc ;
deserializeJson(doc,json);
lcd.setCursor(0, 0);
lcd.print("Distance: ");
lcd.setCursor(0, 1);
int distance = doc["distance"] ;
lcd.print(distance);
lcd.print("cm");
}else{
Serial.print("error ");
Serial.println(httpResponCode);
}
zero = millis();
}
}
void wifiConnect(){
Serial.begin(115200);
WiFi.begin(ssid, password);
while(WiFi.status() != WL_CONNECTED){
delay(100);
Serial.println(".");
}
}
void test(){
int pi = 3.14 ;
int R = 5 ;
dist = (2*pi*R)/40 * counter;
}