#include <WiFi.h>
#include <PubSubClient.h>
#include <LiquidCrystal_I2C.h>
#define ssid "Wokwi-GUEST"//ganti ssid
#define pass "" //ganti password
#define server "broker.emqx.io"
#define port 1883
WiFiClient espClient;
PubSubClient client(espClient);
LiquidCrystal_I2C lcd(0x27, 20, 4);
int count = 0;
int kaki[12] = { 32, 33, 25, 26, 27, 14, 16, 17, 5, 18, 19, 23 };
int a[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int b[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int c[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
char d[13] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l' };
void reconnect() {
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
if (client.connect(clientId.c_str())) {
Serial.println("MQTT Connected");
client.publish("ini/topik/bebas", "0");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
}
void setup() {
Serial.begin(115200);
for (int i = 0; i < 12; i++) {
pinMode(kaki[i], INPUT_PULLUP);
}
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if (count > 10) {
ESP.restart();
}
count++;
}
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("a: b: c: ");
lcd.setCursor(0, 1);
lcd.print("d: e: f: ");
lcd.setCursor(0, 2);
lcd.print("g: h: i: ");
lcd.setCursor(0, 3);
lcd.print("j: k: l: ");
client.setServer(server, 1883);
delay(1000);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
for (int i = 0; i < 12; i++) {
a[i] = !digitalRead(kaki[i]);
delay(10);
if (a[i] != b[i] && a[i]) {
c[i]++;
lcd.setCursor((i % 3) * 7 + 2, i / 3);
lcd.print(c[i]);
String data = "{\"" + String(d[i]) + "\":" + String(c[i]) + "}";
Serial.println(data);
client.publish("ini/topik/bebas", (char*)data.c_str());
delay(10);
}
b[i] = a[i];
}
}a
b
c
d
e
f
g
h
l
j
i
k
12 Tombol Counter terhubung IoT MQTT Panel