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?
 
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
 
0x27 olan I2C adresin güncel mi?
 
Ç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.
 
Ç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.
 
Kontrast i2c üzerindeki trimpottan ne kısılıyor nede açılıyor.
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ı?

Keypad bağlı değil diye düşünüyorum.
 

Çevrimiçi personel

Forum istatistikleri

Konular
5,894
Mesajlar
100,601
Üyeler
2,494
Son üye
yasin533

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Kesici/Spindle hızı hesaplamak için SpreadSheet UDF'leri kullanın, hesap makinesi çok eski kalan bir yöntem :)
Back
Top