Sınıfları aşağıdaki şekilde güncelleyebilirsin. Onlar önceki denemeden kalmış harici bir sınıf gerekmiyor. Benim kodu da düzeltiyorum.@uyesercan şu üçünün kütüphanedeki tam isimlerini öğrenebilir miyim? Bulamadım bir türlü
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
//
// FILE: I2Ckeypad_demo01.ino
// AUTHOR: Rob Tillaart
// VERSION: 0.1.0
// PURPOSE: demo
// URL: https://github.com/RobTillaart/I2CKeyPad
//
// HISTORY:
// 2019-10-01 0.0.1 initial version
// 2020-06-26 0.1.0 updated with lib
// PCF8574
// pin p0-p3 rows
// pin p4-p7 colums
// 4x4 or smaller keypad.
#include "Wire.h"
#include "I2CKeyPad.h"
const uint8_t KEYPAD_ADDRESS = 0x38;
I2CKeyPad keyPad;
uint32_t start, stop;
uint32_t lastKeyPressed = 0;
void setup()
{
Serial.begin(115200);
Serial.println(__FILE__);
Wire.begin();
Wire.setClock(400000);
if (keyPad.begin(KEYPAD_ADDRESS) == false)
{
Serial.println("\nERROR: cannot communicate to keypad.\nPlease reboot.\n");
while(1);
}
}
void loop()
{
uint32_t now = millis();
char keys[] = "123A456B789C*0#DNF"; // N = Nokey, F = Fail
if (now - lastKeyPressed >= 100)
{
lastKeyPressed = now;
start = micros();
uint8_t idx = keyPad.getKey();
stop = micros();
Serial.print(millis());
Serial.print("\t");
Serial.print(idx);
Serial.print("\t");
Serial.print(keys[idx]);
Serial.print("\t");
Serial.println(stop - start);
}
}
// -- END OF FILE --
Anladım yarın buna göre kodu değiştireyim bakalım becerebilek miyim."uint8_t idx = keyPad.getKey();" satırı bizdeki "char tus_degeri = TusTakimi.getKey();" satırı ile aynı yere tekabül ediyor. Döngüyü (loop) buna göre düzenleyebilirsin.
Hakkaten kontrasta bakmak hiç aklıma gelmediLCD'nin kontrast ayarı çok önemli. Bazen diğer her şey düzgün oluyor ama kontrast yanlış olduğu için LCD'de HİÇBİR ŞEY gözükmüyor. Böyle bir hata saatlerimi yemişti.
I2C kodunu ben internette arayıp buluyorum. Aynı modülleri herkes kullanıyor, o yüzden tutorial falan bir şeyler mutlaka oluyor.
Keypade de belki scanner yapmak gerekir. Kurcalarız. Asıl bir konu daha var. Biliyorsunuz İki ayrı i2c modülü seri bağlayarak daha az pin ve kablo kullanma niyetim var. Bakalım bunlara ayrı ayrı mı kod belirtmek getekecek yoksa tek kod mu atayacak.Keypad için de adresleri doğrulama gerekiyor. Kontrast olmaz çünkü zaten görüntü aldığın ekran değil mi bu?
Onlara karşı da bir hevesim var abi ama ucuzları çok küçük, azıcık büyükleri çok pahalı. Bir ortası yok yani.Böyle projelerde LCD yerine şu mavi oled leri kullanmak daha mantıklı. Direk I2c iletişim destekliyor. Daha ince ve kibar. Kullanımı daha kolay
İşin içinde başka bir şey var. lcd.begin(); komutu ekleyince düzeliyor ama bu seferde ekran ışığı yanmıyor.ben tersi gibi anladım aka ne değişken mi? sanki o char değilde int olacak
//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(3,0);
lcd.print("Hello, world!");
lcd.setCursor(2,1);
lcd.print("Ywrobot Arduino!");
}
void loop()
{
}
0x27 den bahsediyorsan güncel. Her taramada 0x27 veriyor. Zaten okuduğum tüm yazılarda 16x2 lcd nin kodu 0x27 diye geçiyor.0x27 olan I2C adresin güncel mi?
Kontrast i2c üzerindeki trimpottan ne kısılıyor nede açılıyor. Ekrana hangi ışık seviyesinde geldiyse öyle kalıyor. Ben kütüphanelerden şüphelenmeye başladım. Çeşit çeşit yükleyince karıştı galiba. İde yi sıfırdan kurasım var.Çok standart bir kod bu, adresten başka değişken yok o da doğruysa bu kod kesinlikle çalışır. Kontrast ayarını kontrol et.
Hiç bir şey çalışmasa bile bu ayarın yapılması ve ekranı tamamen pikselle doldurması ya da boşaltması lazım. Modülü bozmuş ya da hatalı bağlamış olabilir misin? Hiç görüntü aldın mı?Kontrast i2c üzerindeki trimpottan ne kısılıyor nede açılıyor.