Bu gün kimsecikler yoktu. Bedavadan soru soracak kimse olmayınca sıkıldım devrelerle uğraşmadım.
Fusion 360 da Projenin alt kapağını çizdim.

tusla_gelsin_alt_kapak.png
 
@uyesercan şu üçünün kütüphanedeki tam isimlerini öğrenebilir miyim? Bulamadım bir türlü
Sınıfları aşağıdaki şekilde güncelleyebilirsin. Onlar önceki denemeden kalmış harici bir sınıf gerekmiyor. Benim kodu da düzeltiyorum.
Kod:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
 
i2c Keypad için Aşağıdaki resimdeki kütüphaneyi kurdum.
Sonra Github adresine gidip biraz inceledim. Örnek kodlara baktım. Ama İngilizcem yetersiz olduğundan anlayamadım.
@uyesercan Bunu bizim kodlarımıza nasıl dahil ederiz?

i2cKeypad.png


Örnek Bir Kod;

Kod:
//
//    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 --
 
"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.
 
"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.
Anladım yarın buna göre kodu değiştireyim bakalım becerebilek miyim.
 
Lcd ye bir türlü görüntü alamıyorum.
Bu i2c nin bir kodu var 0x3 gibi bir şey. Bu sabit mi? Değişmesi gerekiyorsa neye göre değişiyor?
Scanner diye bir şey var. Bu kodu tarayıp buluyor sanırım ama daha nasıl olduğunu anlayamadan mesai saatim geldi. Akşam bakınacağım.
 
LCD'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.
 
LCD'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.
Hakkaten kontrasta bakmak hiç aklıma gelmedi :D
Önce ona bakayım. Olmazsa scanner olayına bakarım. O direk buluyor kodu.
 
Keypad için de adresleri doğrulama gerekiyor. Kontrast olmaz çünkü zaten görüntü aldığın ekran değil mi bu?
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.
Kontrast olabilir çünkü ilk başta benim lcd de i2c modül yoktu. Ben lcd yi 10k trimpot ile breadboard üzerinden kontrast ayarlıyordum. Şimdi i2c taktım lcd ye. Doğal olarak trimpot i2c üzerindeki oldu. Ve ona hiç ayar yapmadım daha önce.
 
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
Onlara karşı da bir hevesim var abi ama ucuzları çok küçük, azıcık büyükleri çok pahalı. Bir ortası yok yani.
 
Burada bir hata var. Sanırım değişkenlerin char olmasını istiyor.
Tam anlayamadım. Ne yapmak lazım?

lcd hata.png
 
@uyesercan
LiquidCrystal_i2c kütüphanesinden örnek dosya yükledim yine de ekrana bir şey yazmıyor.
Kütüphanenin UYUMSUZ kategorisinde olması bana mantıklı gelmedi.
Şu kadarcık kodu bile çalıştıramadım;
Kod:
//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()
{
}

uyumsuz.png
 
Ç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.
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.
 

Forum istatistikleri

Konular
6,953
Mesajlar
118,769
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top