Daha fazla
- Cinsiyet
- Erkek
ESP8266 modülü ile sıcaklık ve nem değerlerini thingspeak'e gönderen bir sistem yapmıştım ve gayet iyi çalıştı.
Sonradan LCD ekran ile bu verileri ve işlemleri LCD den okumak istedim ve LiquidCrystal kütüphanesini ekledim gerekli pin ayarlarını yaptım.
Maalesef LCD çalışmadı ve değişik karaketrler akmaya başladı. Ardından dümdüz bir ekran çıktı.
LCD'nin doğru bağlandığını teyit etmek için:
kodunu çalıştırdım ve eksiksiz çalıştı.
Kod kısmındaki hata nerede?
Sonradan LCD ekran ile bu verileri ve işlemleri LCD den okumak istedim ve LiquidCrystal kütüphanesini ekledim gerekli pin ayarlarını yaptım.
Kod:
#include <SoftwareSerial.h>
#include <dht11.h>
#include <LiquidCrystal.h>
const int rs = 0, en = 1, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
String agAdi = "**********";
String agSifresi = "****************";
int rxPin = 10;
int txPin = 11;
int dht11Pin = 2;
String ip = "184.106.153.149"; //Thingspeak ip adresi
float sicaklik, nem;
dht11 DHT11;
SoftwareSerial esp(rxPin, txPin); //Seri haberleşme pin ayarları
void setup() {
lcd.begin(16,2);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
digitalWrite(8, HIGH);
Serial.begin(9600); //Seri port ile haberleşmemizi başlatıyoruz
Serial.println("Started");
lcd.print("Started");
esp.begin(115200); //ESP8266 ile seri haberleşmeyi başlatıyor
esp.println("AT"); //AT komutu ile modül kontrolünü yapıyoruz
Serial.println("AT Yollandi");
while(!esp.find("OK")){
esp.println("AT");
Serial.println("ESP8266 Bulunamadı.");
lcd.print("ESP8266 Bulunamadi");
lcd.clear();
lcd.setCursor(0, 0);
}
lcd.clear();
lcd.setCursor(0, 0);
Serial.println("OK Komutu Alındı");
delay(100);
esp.println("AT+CWMODE=1"); //ESP8266 modülünü client olarak ayarlıyoruz
while(!esp.find("OK")){
esp.println("AT+CWMODE=1");
Serial.println("Ayar Yapiliyor....");
lcd.print("Ayar yapiliyor");
}
lcd.clear();
lcd.setCursor(0, 0);
Serial.println("Client olarak ayarlandı");
Serial.println("Aga Baglaniliyor...");
lcd.print("Aga Baglaniliyor");
esp.println("AT+CWJAP=\""+agAdi+"\",\""+agSifresi+"\"") ;//Ağımıza bağlanıyoruz
lcd.clear();
lcd.setCursor(0, 0);
while(!esp.find("OK"));
Serial.println("Aga Baglandi.");
digitalWrite(8, LOW);
lcd.print("Aga Baglandi");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
}
void loop() {
digitalWrite(9, HIGH);
esp.println("AT+CIPSTART=\"TCP\",\""+ip+"\",80"); //Thingspeake bağlanıyoruz
if(esp.find("Error")){
Serial.println("AT+CIPSTART Error");
lcd.print("Error");
lcd.clear();
lcd.setCursor(0, 0);
}
DHT11.read(dht11Pin);
sicaklik = (float)DHT11.temperature;
nem = (float)DHT11.humidity;
lcd.print(sicaklik);
lcd.setCursor(4, 2);
lcd.print(nem);
String veri = "GET https://api.thingspeak.com/update?api_key=*********************"; //Key kısmına kendi api keyimizi yazıyoruz. Kendi API keyim olduğu için sansürledim.
veri += "&field1=";
veri += String(sicaklik);
veri += "&field2=";
veri += String(nem);
veri += "\r\n\r\n";
esp.print("AT+CIPSEND=");
esp.println(veri.length()+2);
delay(2000);
if(esp.find(">")){
esp.print(veri);
Serial.println(veri);
Serial.println("Veri gonderildi.");
delay(1000);
}
Serial.println("Baglantı Kapatildi.");
esp.println("AT+CIPCLOSE"); //Bağlantıyı kapatıyor
delay(1000); //Yeni veri gönderimi için 1 saniye bekliyor
lcd.clear();
lcd.setCursor(0, 0);
}
Maalesef LCD çalışmadı ve değişik karaketrler akmaya başladı. Ardından dümdüz bir ekran çıktı.
LCD'nin doğru bağlandığını teyit etmek için:
Kod:
#include <LiquidCrystal.h>
const int rs = 0, en = 1, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
lcd.begin(16,2);
}
void loop() {
lcd.print("Deneme yazısı");
delay(50);
lcd.clear();
}
kodunu çalıştırdım ve eksiksiz çalıştı.
Kod kısmındaki hata nerede?