NodeMcu Programlama

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

Forum istatistikleri

Konular
7,847
Mesajlar
129,976
Üyeler
3,155
Son üye
Serdar50

Son kaynaklar

Son profil mesajları

Mutluluğun resmi illa güzel çizilmiş tablo olmak zorunda değil.Bazen basit bir çizgi,doğru bir renk,yada küçük bir detay
Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
az bilgili çok meraklı
Back
Top