// Sercan & Gökhan
// https://mekatronik.org/forum
#include <ESP8266WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <ESP8266HTTPClient.h>
#include "Wire.h"
#include "I2CKeyPad.h"
// WiFi ayarları
const char* WiFi_Adi="TPLINK_WIFI";
const char* WiFi_Sifre = "password";
// Verinin gönderileceği SSL URL adresi
String url_ekle = "http://webadresi.com/int/keypad.php?siparis=";
String url_sil = "http://webadresi.com/int/keypad.php?id=";
// true seri port ile heberleşir, false kapatır.
bool konsol = false;
// LCD ekran bilgileri
LiquidCrystal_I2C lcd(0x27,16,2);
const uint8_t KEYPAD_ADDRESS = 0x20;
I2CKeyPad keyPad;
int ToplamSayi = 0;
int NoktaSay = 0;
void setup()
{
pinMode(D0, OUTPUT);
pinMode(D8, OUTPUT);
digitalWrite(D8, LOW);
digitalWrite(D0, HIGH);
delay(300);
Serial.begin(115200);
Wire.begin();
if (keyPad.begin(KEYPAD_ADDRESS) == false)
{
Serial.println("\nERROR: cannot communicate to keypad.\nPlease reboot.\n");
while(1);
}
if (konsol) {
Serial.begin(115200);
delay(500);
Serial.println(F("Tusla Gelsin v1"));
}
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Tusla Gelsin v1");
WiFi.mode(WIFI_STA);
WiFi.begin(WiFi_Adi,WiFi_Sifre);
lcd.setCursor(0,1);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
if (konsol) {
Serial.print(".");
}
if (NoktaSay++ < 20) {
lcd.print(".");
} else {
SatirTemizle(1);
NoktaSay = 0;
}
}
//if (konsol) {
SatirTemizle(0);
lcd.setCursor(0,0);
lcd.print("WiFi'ya baglandi");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("IP:");
lcd.setCursor(4,1);
lcd.print(WiFi.localIP());
digitalWrite(D8, HIGH);
delay(5000);
//}
SatirTemizle(0);
lcd.setCursor(0,0);
lcd.print("Tusla Gelsin v1");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Urun No Giriniz");
}
void loop()
{
uint8_t idxx = keyPad.getKey();
char idx = "D#0*C987B654A321"[idxx];
if ( isdigit(idx) ) {
uint8_t sayi = idx - '0';
ToplamSayi = ((ToplamSayi * 10) + sayi);
if (konsol) {
Serial.print( "Tuslanan Sayi:" );
Serial.println(ToplamSayi);
}
SatirTemizle(1);
lcd.print(ToplamSayi);
} else if ( idx == '#' ) {
// # tuşu enter gibi davranır
SatirTemizle(1);
lcd.print("Urun Ekleniyor.");
if (konsol) {
Serial.print(ToplamSayi);
Serial.println( " Urun Eklendi.\n" );
}
int urlEk = ToplamSayi;
String TamUrl = url_ekle + urlEk;
SiparisVer(TamUrl, urlEk);
ToplamSayi = 0;
} else if ( idx == '*' ) {
// * tuşu yanlış girişi sıfırlar....
ToplamSayi = 0;
if (konsol) {
Serial.print("ToplamSayi ");
Serial.print(ToplamSayi);
Serial.println(" sıfırlandı.\n");
}
SatirTemizle(1);
lcd.print("Sayi Silindi...");
delay(4000);
SatirTemizle(1);
lcd.print("Urun No Giriniz");
} else if ( idx == 'A' ) {
// Bu tuş hızlıca favori ürün siparişi verebilir!
if (konsol) {
Serial.println("A tuşuna basıldı");
}
SatirTemizle(1);
lcd.print("A");
} else if ( idx == 'B' ) {
// Bu tuş hızlıca favori ürün siparişi verebilir!
if (konsol) {
Serial.println("B tuşuna basıldı");
}
SatirTemizle(1);
lcd.print("B");
} else if ( idx == 'C' ) {
// C Tuşu NodeMCU ya Reset Atar!
digitalWrite(D0, LOW);
} else if ( idx == 'D' ) {
// D Tuşu numarası girilen ürünü siler!
SatirTemizle(1);
lcd.print("Urun Ekleniyor.");
if (konsol) {
Serial.print(ToplamSayi);
Serial.println( " Urun Eklendi.\n" );
}
int urlEk = ToplamSayi;
String TamUrl = url_sil + urlEk;
SiparisSil(TamUrl, urlEk);
ToplamSayi = 0;
}
delay(300);
}
void SiparisVer(String TamUrl, int urlEk) {
// Sipariş Verme Fonksiyonu
SatirTemizle(0);
lcd.setCursor(0,0);
lcd.print("Tusla Gelsin v1");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Baglaniyor...");
delay(4000);
//TCP bağlantıları oluşturmak için HTTPClient sınıfını kullanın
HTTPClient http;
http.begin(TamUrl);
SatirTemizle(0);
SatirTemizle(1);
lcd.setCursor(0,0);
lcd.print("Baglandi...");
lcd.setCursor(0,1);
lcd.print("Urun Ekleniyor..");
delay(4000);
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
Serial.print("Gönderilen Url: ");
Serial.println(TamUrl);
Serial.print("Sayfa yanıtı:");
Serial.println(payload);
if(payload == "0"){
SatirTemizle(0);
lcd.setCursor(0,0);
lcd.print("Urun Eklendi");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Yeni Urun Girinz");
}else if(payload == "1"){
SatirTemizle(0);
lcd.setCursor(0,0);
lcd.print("Urun Zaten Var");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Yeni Urun Girinz");
}else if(payload == "2"){
lcd.setCursor(0,0);
lcd.print("Hatali Numara");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Yeniden Deneyin.");
}else{
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Baglanti Hatasi.");
digitalWrite(D0, LOW);
}
}
http.end();
delay(2000); // 2 saniyede bir işlemi tekrarlayacak
}
void SiparisSil(String TamUrl, int urlEk) {
// Sipariş Silme Fonksiyonu
SatirTemizle(0);
lcd.setCursor(0,0);
lcd.print("Tusla Gelsin v1");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Baglaniyor...");
delay(5000);
//TCP bağlantıları oluşturmak için HTTPClient sınıfını kullanın
HTTPClient http;
http.begin(TamUrl);
SatirTemizle(0);
SatirTemizle(1);
lcd.setCursor(0,0);
lcd.print("Baglandi...");
lcd.setCursor(0,1);
lcd.print("Urun Siliniyor..");
delay(4000);
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
Serial.print("Gönderilen Url: ");
Serial.println(TamUrl);
Serial.print("Sayfa yanıtı:");
Serial.println(payload);
if(payload == "0"){
SatirTemizle(0);
lcd.setCursor(0,0);
lcd.print("Urun Silindi");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Yeni Urun Girinz");
}else if(payload == "1"){
SatirTemizle(0);
lcd.setCursor(0,0);
lcd.print("Urun Bulunamadi");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Yeni Urun Girinz");
}else if(payload == "2"){
lcd.setCursor(0,0);
lcd.print("Hatali Numara");
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Yeniden Deneyin.");
}else{
SatirTemizle(1);
lcd.setCursor(0,1);
lcd.print("Baglanti Hatasi.");
digitalWrite(D0, LOW);
}
}
http.end();
delay(2000); // 2 saniyede bir işlemi tekrarlayacak
}
void SatirTemizle(int satir) {
lcd.setCursor(0,satir);
lcd.print(" ");
lcd.setCursor(0,satir);
}