Kablo pin testi

ToplamSayi değişkeninde her zaman tuşladığın sayılar olacak.
arac_no değişkeni hesapla fonksiyonuna özel değişken. Kodların en altına yazdığımız fonksiyonu kullanmak için lazım olan yerde çağırmamız lazım.
Çağırmak için ise bu kodu kullanıyoruz. hesapla() ;
parantez içine ne yazarsan en alttaki fonksiyonda tanımadığımız arac_no değişkeninin içine o gider.
Örnek:
Kod:
int kafadan_sayi = 12345;
hesapla(kafadan_sayi);
Böyle yapınca en alttaki fonksiyona 12345 rakamını gönderdik. Şuanda oradaki arac_no değişkeninin içinde 12345 var.


Yapmaz. arac_no değişkenini sadece en alttaki fonksiyon içinde kullanabilirsin.
A tuşunu test etmek istiyorsan ToplamSayi değişkenini kullanabilirsin. Veyahut kendin birşeyler yazabilirsin. İlla değişken olması şart değil.
Örnek:
Kod:
lcd.setCursor(0,1) // LCD nin hangi satırına yazacağını belirtti.
lcd.print("                  "); // Satır başka yazı varsa silinir.
lcd.print("Bu bir denemedir"); // Yeni mesajı yazdır.
Bu kodları A içine yazıp tuşa basarsan ekranda "Bu bir denemedir" yazar.


ToplamSayi değişkenini sıfıra eşitle.
Kod:
ToplamSayi = 0;

tıoplam sayı 0 yazıyor uan ki kodda

birinci resimde 12345 tuşladım ve monitrde aynısını yazdırıyor
ikinci resimde ise 123456 tuşladım ve yazan rakamlar farklı


1615317673011.png


1615317731129.png
 
bir önceki kodda ekranda tuşladığım rakamları da görebiliyordum orda da 12345 yazıyorum çıkıyor ama arkasından 6 veya başka tuşa bastığımda farklı şeyler yazmaya başlıyordu
 

# ye basınca mı çıkıyor, yoksa diğer harfleri mi test ediyorsun? Kodun son halini atar mısın?
keypaddrn basıp basamadığımı anlmamk için toplamsayıyı lcd ye yazdırdım
# bastığımdada monitorde yazanda aynı şekilde oluyyor 5 rakamdan sonra



Kod:
#include <I2CKeyPad.h>
#include <Wire.h>
#include <LiquidCrystalTr_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

const uint8_t KEYPAD_ADDRESS = 0x20;  //yeni
I2CKeyPad keyPad;  //yeni


int lcdCursor = 0;

int lcdprint = 0;


int ToplamSayi = 0;

void setup(){

  Serial.begin(115200);
 
lcd.begin();

lcd.backlight();

  // Ekrana yazdırılacak metin

  for(int i=0; i<4; i++)
  {
    lcd.setCursor(0,1);
    lcd.print("   MERCEDES  BENZ   ");
    delay(250);
    lcd.clear();
    lcd.setCursor(0,2);
    lcd.print("   MERCEDES  BENZ   ");
    delay(250);
    lcd.clear();
  }
  lcd.setCursor(0,1);
  lcd.print("   MERCEDES  BENZ   ");
 
    
 
 if (keyPad.begin(KEYPAD_ADDRESS) == false)
  {
    Serial.println("\nERROR: cannot communicate to keypad.\nPlease reboot.\n");//  yeni
    while(1);
  }
}



 void loop(){


    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("  ARAC NUMARASI GIR  ");
    lcd.setCursor(0,1);     
    lcd.print(ToplamSayi);

    
    uint8_t idxx = keyPad.getKey();
    char idx = "123A456B789C*0#D"[idxx];

    if ( isdigit(idx) ) {
        uint8_t sayi = idx - '0';
        ToplamSayi = ((ToplamSayi * 10) + sayi);
    }
    else if ( idx == '#' ) {
  
         hesapla(ToplamSayi);
         ToplamSayi = 0;
      
    }
    else if ( idx == '*' ) {
  
       //Serial.print(ToplamSayi);
    }
    else if ( idx == 'A' ) {
  
        //Serial.print(ToplamSayi);
    }
      else if ( idx == 'B' ) {
    
        //Serial.print(ToplamSayi);
    }
    else if ( idx == 'C' ) {
  
        //Serial.print(ToplamSayi);
    }
    else if ( idx == 'D' ) {
  
        //Serial.print(ToplamSayi);
    }
    delay(300);
}

     void hesapla(int arac_no) {
     Serial.print("Fonksiyon içi:");
     Serial.println(arac_no);
}
 


keypaddrn basıp basamadığımı anlmamk için toplamsayıyı lcd ye yazdırdım
# bastığımdada monitorde yazanda aynı şekilde oluyyor 5 rakamdan sonra



Kod:
#include <I2CKeyPad.h>
#include <Wire.h>
#include <LiquidCrystalTr_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

const uint8_t KEYPAD_ADDRESS = 0x20;  //yeni
I2CKeyPad keyPad;  //yeni


int lcdCursor = 0;

int lcdprint = 0;


int ToplamSayi = 0;

void setup(){

  Serial.begin(115200);

lcd.begin();

lcd.backlight();

  // Ekrana yazdırılacak metin

  for(int i=0; i<4; i++)
  {
    lcd.setCursor(0,1);
    lcd.print("   MERCEDES  BENZ   ");
    delay(250);
    lcd.clear();
    lcd.setCursor(0,2);
    lcd.print("   MERCEDES  BENZ   ");
    delay(250);
    lcd.clear();
  }
  lcd.setCursor(0,1);
  lcd.print("   MERCEDES  BENZ   ");

   

if (keyPad.begin(KEYPAD_ADDRESS) == false)
  {
    Serial.println("\nERROR: cannot communicate to keypad.\nPlease reboot.\n");//  yeni
    while(1);
  }
}



void loop(){


    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("  ARAC NUMARASI GIR  ");
    lcd.setCursor(0,1);    
    lcd.print(ToplamSayi);

   
    uint8_t idxx = keyPad.getKey();
    char idx = "123A456B789C*0#D"[idxx];

    if ( isdigit(idx) ) {
        uint8_t sayi = idx - '0';
        ToplamSayi = ((ToplamSayi * 10) + sayi);
    }
    else if ( idx == '#' ) {
 
         hesapla(ToplamSayi);
         ToplamSayi = 0;
     
    }
    else if ( idx == '*' ) {
 
       //Serial.print(ToplamSayi);
    }
    else if ( idx == 'A' ) {
 
        //Serial.print(ToplamSayi);
    }
      else if ( idx == 'B' ) {
   
        //Serial.print(ToplamSayi);
    }
    else if ( idx == 'C' ) {
 
        //Serial.print(ToplamSayi);
    }
    else if ( idx == 'D' ) {
 
        //Serial.print(ToplamSayi);
    }
    delay(300);
}

     void hesapla(int arac_no) {
     Serial.print("Fonksiyon içi:");
     Serial.println(arac_no);
}
Fonksiyon içi yazan yeri c harfi yap. Kütüphanede ç ile ilgili sıkıntı var. Ayrıca daha küçük bir şey de yazabilirsin. Ekran 20 hane olduğu için sığmayıp sapıtabilir. Birde monitörün baud' unu kontrol et. 115200 olduğuna emin ol.
 
Fonksiyon içi yazan yeri c harfi yap. Kütüphanede ç ile ilgili sıkıntı var. Ayrıca daha küçük bir şey de yazabilirsin. Ekran 20 hane olduğu için sığmayıp sapıtabilir. Birde monitörün baud' unu kontrol et. 115200 olduğuna emin ol.


Baud 115200

6 karakter basıyorum ekrana onda sapıtıyor
123 yapıyorum ekranda 123 yazıyor # basıyorum monitör de de 123 yazıyor

12345 ekranda yazıyor 6 bastığımda ekranda mesela 2384 yazıyor ve bu sayı her seferinde değişiyor # bastığımda ekranda ne yazıyor ise onu monitöre yaZdiriyir
 
Baud 115200

6 karakter basıyorum ekrana onda sapıtıyor
123 yapıyorum ekranda 123 yazıyor # basıyorum monitör de de 123 yazıyor

12345 ekranda yazıyor 6 bastığımda ekranda mesela 2384 yazıyor ve bu sayı her seferinde değişiyor # bastığımda ekranda ne yazıyor ise onu monitöre yaZdiriyir
Bu sorunu aşmıştık. Tekrar olduğuna göre keypad de sıkıntı olabilir. Birde jumper kablolar dandiktir. Kabloları değiştirip dene.
 
Böyle durumlarda devreyi en basite indirgeyip kısım kısım çalıştırmak lazım. Mesela önce sadece ekranı çalıştır. Sonra da sadece klavyeyi çalıştır. Herşeyi bir arada denersen, birşey çalışmayınca problem alanını daraltmak zor oluyor.
 
Böyle durumlarda devreyi en basite indirgeyip kısım kısım çalıştırmak lazım. Mesela önce sadece ekranı çalıştır. Sonra da sadece klavyeyi çalıştır. Herşeyi bir arada denersen, birşey çalışmayınca problem alanını daraltmak zor oluyor.
I2C modülünü çıkartıp 8 pin ile bağlamayı deneyeceğim
 
Böyle durumlarda devreyi en basite indirgeyip kısım kısım çalıştırmak lazım. Mesela önce sadece ekranı çalıştır. Sonra da sadece klavyeyi çalıştır. Herşeyi bir arada denersen, birşey çalışmayınca problem alanını daraltmak zor oluyor.


Merhaba ekranda yazan rakamları 6 haneden sonra farklı yazıyordu o sorunu şu şekilde çözüme ulaştırdım
İnit toplamsayi şeklinde yapıldığında Int -32,768 ile 32,767 arasindaki sayilari tutmak icin kullanılıyormuş
Long -2,147,483,648 ile 2,147,483,647 arasi sayılar için kullanılıyormuş
long toplamsayi ile ekrana yazılan rakamlar düzeldi
Fakat seri monitöre basılan sayılar da sorun var mesela ben 123546789 rakamlaribu tusladim # bastığımda monitörde 11429 sayısı çıkıyor
 

Ekler

  • 16154999846787475892243136708041.jpg
    16154999846787475892243136708041.jpg
    243.8 KB · Görüntüleme: 122
  • 16155000122063372619251589921705.jpg
    16155000122063372619251589921705.jpg
    256.9 KB · Görüntüleme: 123
Merhaba ekranda yazan rakamları 6 haneden sonra farklı yazıyordu o sorunu şu şekilde çözüme ulaştırdım
İnit toplamsayi şeklinde yapıldığında Int -32,768 ile 32,767 arasindaki sayilari tutmak icin kullanılıyormuş
Long -2,147,483,648 ile 2,147,483,647 arasi sayılar için kullanılıyormuş
long toplamsayi ile ekrana yazılan rakamlar düzeldi
Fakat seri monitöre basılan sayılar da sorun var mesela ben 123546789 rakamlaribu tusladim # bastığımda monitörde 11429 sayısı çıkıyor
Ç harfi yerine C kullan demiştim. Kütüphanede ç harfi ile ilgili hata var. Ondan bile yapıyor olabilir.
Ayrıca lcd de doğru gösterirken arduino idesinde hem ç yi hemde rakamları yanlış göstermesi tuhaf. O ideyi silip temiz bir şekilde yeniden yükle. Bilgisayarında virüs taraması yap. Hatta varsa başka bilgisayarda dene.

Umarım resimde görünen breadboard daki onlarca kablo arduinoya bağlı iken bu testleri yapmıyorsundur.

İnteger diye yazdığın 32768 sayısı "short" veritipidir.
Long diye yazdığın 2147483648 sayısı "integer" veritipidır.
Long veritipi ise -9.223.372.036.854.775.808 ile +9.223.372.036.854.775.808 arasında ki değerleri almaktadır.
 
Ç harfi yerine C kullan demiştim. Kütüphanede ç harfi ile ilgili hata var. Ondan bile yapıyor olabilir.
Ayrıca lcd de doğru gösterirken arduino idesinde hem ç yi hemde rakamları yanlış göstermesi tuhaf. O ideyi silip temiz bir şekilde yeniden yükle. Bilgisayarında virüs taraması yap. Hatta varsa başka bilgisayarda dene.

Umarım resimde görünen breadboard daki onlarca kablo arduinoya bağlı iken bu testleri yapmıyorsundur.

İnteger diye yazdığın 32768 sayısı "short" veritipidir.
Long diye yazdığın 2147483648 sayısı "integer" veritipidır.
Long veritipi ise -9.223.372.036.854.775.808 ile +9.223.372.036.854.775.808 arasında ki değerleri almaktadır.


C yi duzelltim dün gece
Kabloları söküp gene deneyeceğim bugün
Long init bilgisi nette yazıyordu orda gördüm bende
Umarım olur yapabilirim artik
 
Ç harfi yerine C kullan demiştim. Kütüphanede ç harfi ile ilgili hata var. Ondan bile yapıyor olabilir.
Ayrıca lcd de doğru gösterirken arduino idesinde hem ç yi hemde rakamları yanlış göstermesi tuhaf. O ideyi silip temiz bir şekilde yeniden yükle. Bilgisayarında virüs taraması yap. Hatta varsa başka bilgisayarda dene.

Umarım resimde görünen breadboard daki onlarca kablo arduinoya bağlı iken bu testleri yapmıyorsundur.

İnteger diye yazdığın 32768 sayısı "short" veritipidir.
Long diye yazdığın 2147483648 sayısı "integer" veritipidır.
Long veritipi ise -9.223.372.036.854.775.808 ile +9.223.372.036.854.775.808 arasında ki değerleri almaktadır.

merhaba;

şimdi o sorunu da bitti die düşünüyorum

hesapla fonksiyonu içerisinde ki init arac no değişkenini de long ile değiştirince lcd ekran monitor ve fonksiyon içi değişkenin içinde de aynı sayılar yazmaya başladı.



1615549486262.png
 
merhaba;

şimdi o sorunu da bitti die düşünüyorum

hesapla fonksiyonu içerisinde ki init arac no değişkenini de long ile değiştirince lcd ekran monitor ve fonksiyon içi değişkenin içinde de aynı sayılar yazmaya başladı.



8815 eklentisine bak
Bir anormallik var senin işte ama çözemedik. Ben int olarak kullanıyorum sorun olmuyor.
Neyse madem long ile düzgün çalışıyor öyle devam et.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
5,885
Mesajlar
100,432
Üyeler
2,493
Son üye
cym247

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.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
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)
Back
Top