Anladığım kadarıyla o tablo, hangi tuşa basıldığında hangi kodun döndürüleceğini belirliyor. A ya karşılık gelen yere A yerine '\n' koyarsan, A ya basınca sana '\n' karakter' gelir. Ama bu mantıklı olmaz, sadece kafa karıştırır. Basılan tuş A ise, karakter olarak da A gelmesini istemek lazım. Program yazmak zaten yeterince karmaşık, bir de böyle kendine zihinsel tuzaklar kurmamak lazım :)
Bence mantıklı. A harfinin üzerine bir Enter sticker'ı yapıştırmaya bakar iş :D
Enter a ihtiyacın varsa ve keypadin de yoksa bence bu seçenek ideal.
 
Bence mantıklı. A harfinin üzerine bir Enter sticker'ı yapıştırmaya bakar iş :D
Enter a ihtiyacın varsa ve keypadin de yoksa bence bu seçenek ideal.

Evet etiket yapıştırırsan mantıklı :)
 
Gülmekten karnım ağrıdı :D
Sayın ustam. Sen kod konusunda baya iyisin. Şu benim koda bir el atsan?
Php olsa çat pat yapacağım da bu dilleri hiç beceremiyorum. Uğraşıyorum uğraşıyorum bulamıyorum. Bişey değil proje yatacak bu gidişle :D
 
Dizi değişkeninin içindekilerinin doğru yazılışını bir türlü bulamadım. Foreach döngüsü nodemcu da çalışmıyor. Çalışsa çatır çatır yazdıracağım ama yok.
 
Diziyi gerek yok, basamakları birleştirmek için basitçe bir değişkeni toplarsın. Aşağıdaki kod 1+2+3 = 123 (yüz yirmi üç) yazıp "*" tuşuna bastığında 123 sayısını istediğin yere gönderir. A tuşunu ise hatalı girişe karşı temizlemek için kullandım.

Kodu yazmışken hurdalıktan bulduğum ESP v0.9'u da denedim. İkisi de sorunsuz çalışıyor.


1599789782097.png


C++:
#include <Keypad.h>
const byte n_rows = 4;
const byte n_cols = 4;
char keys[n_rows][n_cols] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte colPins[n_rows] = {D3, D2, D1, D0};
byte rowPins[n_cols] = {D7, D6, D5, D4};
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, n_rows, n_cols);
int toplamrakam = 0;
void setup(){
Serial.begin(115200);
}

void loop() {
    char tus_degeri = myKeypad.getKey();
    if ( isdigit(tus_degeri) ) { // basılan tuş rakam ise, basamakları toplar 1+2+3 =123
        uint8_t rakam = tus_degeri - '0';
        toplamrakam = ((toplamrakam * 10) + rakam);
        //Serial.println(tus_degeri); // basılan her bir tuş
        //Serial.println(toplamrakam); // ortaya çıkan sayı
    } else if ( tus_degeri == '*' ) {
        Serial.print(toplamrakam);
        Serial.print( " numaralı sipariş oluşturuldu. \nBir daha yeni bir sipariş oluşturmadan önce hayatın ne kadar pahalı olduğunu düşünün!\n" );
        toplamrakam = 0;
        // yıldız duşu enter gibi davranır
    } else if ( tus_degeri == 'A' ) {
        toplamrakam = 0;
        Serial.print("Toplamrakam ");
        Serial.print(toplamrakam);
        Serial.print(" sıfırlandı.\n");
        // A tuşu yanlış girişi sıfırlar....
    }
}

IMG_20200911_050352.jpg
 
Diziyi gerek yok, basamakları birleştirmek için basitçe bir değişkeni toplarsın. Aşağıdaki kod 1+2+3 = 123 (yüz yirmi üç) yazıp "*" tuşuna bastığında 123 sayısını istediğin yere gönderir. A tuşunu ise hatalı girişe karşı temizlemek için kullandım.

Kodu yazmışken hurdalıktan bulduğum ESP v0.9'u da denedim. İkisi de sorunsuz çalışıyor.


5348 eklentisine bak

C++:
#include <Keypad.h>
const byte n_rows = 4;
const byte n_cols = 4;
char keys[n_rows][n_cols] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte colPins[n_rows] = {D3, D2, D1, D0};
byte rowPins[n_cols] = {D7, D6, D5, D4};
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, n_rows, n_cols);
int toplamrakam = 0;
void setup(){
Serial.begin(115200);
}

void loop() {
    char tus_degeri = myKeypad.getKey();
    if ( isdigit(tus_degeri) ) { // basılan tuş rakam ise, basamakları toplar 1+2+3 =123
        uint8_t rakam = tus_degeri - '0';
        toplamrakam = ((toplamrakam * 10) + rakam);
        //Serial.println(tus_degeri); // basılan her bir tuş
        //Serial.println(toplamrakam); // ortaya çıkan sayı
    } else if ( tus_degeri == '*' ) {
        Serial.print(toplamrakam);
        Serial.print( " numaralı sipariş oluşturuldu. \nBir daha yeni bir sipariş oluşturmadan önce hayatın ne kadar pahalı olduğunu düşünün!\n" );
        toplamrakam = 0;
        // yıldız duşu enter gibi davranır
    } else if ( tus_degeri == 'A' ) {
        toplamrakam = 0;
        Serial.print("Toplamrakam ");
        Serial.print(toplamrakam);
        Serial.print(" sıfırlandı.\n");
        // A tuşu yanlış girişi sıfırlar....
    }
}

5349 eklentisine bak
Çok teşekkür ettim. Sabahın 7 sinde işe gitmeden oturdum denedim. Bende de sorunsuz çalışıyor.
Şimdi bunun devamında tus_değeri değişkenini lcd ye göndereceğim. Ardından yıldıza basıldığın da durum mesajını yazdıracağım.
 
Şimdi Nodemcu dan TX ile veri gönderip Arduino Due RX bacağından veri almaya çalışıyorum.
Kartların ikiside 3.3v ile çalışıyor.
Nodemcu dan
Kod:
Serial.write(değişken);
ile veri gönderip, Arduino Due den
Kod:
 Serial.available() > 0
ile kontrol ederek
Kod:
Serial.read(gelenVeri);
ile Almaya çalışıyorum ama ya gönderemiyorum yada alamıyorum.

Kodlarımı Tamamı ise Şöyle;

NodeMcu Tarafı
C:
#include <Keypad.h>
const byte n_rows = 4;
const byte n_cols = 4;
char keys[n_rows][n_cols] = {
{'1','4','7','*'},
{'2','5','8','0'},
{'3','6','9','#'},
{'A','B','C','D'}
};
byte colPins[n_rows] = {D3, D2, D1, D0};
byte rowPins[n_cols] = {D7, D6, D5, D4};
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, n_rows, n_cols);
int toplamrakam = 0;
void setup(){
Serial.begin(115200);
}

void loop() {
    char tus_degeri = myKeypad.getKey();
    if ( isdigit(tus_degeri) ) { // basılan tuş rakam ise, basamakları toplar 1+2+3 =123
        uint8_t rakam = tus_degeri - '0';
        toplamrakam = ((toplamrakam * 10) + rakam);
        //Serial.println(tus_degeri); // basılan her bir tuş
        //Serial.println(toplamrakam); // ortaya çıkan sayı
    } else if ( tus_degeri == 'D' ) {
        Serial.write(toplamrakam);
        /*Serial.print( " Siparis Eklendi." );*/
        toplamrakam = 0;
        // yıldız duşu enter gibi davranır
    } else if ( tus_degeri == 'A' ) {
        toplamrakam = 0;
        Serial.print("Toplamrakam ");
        Serial.print(toplamrakam);
        Serial.print(" sıfırlandı.\n");
        // A tuşu yanlış girişi sıfırlar....
    }
}

Arduino Due Tarafı
C:
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 7, 6, 5, 4, 3);

int gelenVeri = 0;   // genel veriyi tutacak değişken
char gelenKarakter;

void setup() {
  Serial.begin(115200);
  lcd.begin(16, 2);
}

void loop() {
  // Veri gelmiş mi?
        if (Serial.available() > 0) {
                // gelen veriyi oku
                gelenVeri = Serial.read();
                gelenKarakter = gelenVeri;
                lcd.setCursor(8, 0);
                lcd.print(gelenVeri);
                lcd.setCursor(0, 1);
                lcd.print("Siparis Eklendi");
        }
}
 
Şimdi Nodemcu dan TX ile veri gönderip Arduino Due RX bacağından veri almaya çalışıyorum.
Kartların ikiside 3.3v ile çalışıyor.
Nodemcu dan
Kod:
Serial.write(değişken);
ile veri gönderip, Arduino Due den
Kod:
 Serial.available() > 0
ile kontrol ederek
Kod:
Serial.read(gelenVeri);
ile Almaya çalışıyorum ama ya gönderemiyorum yada alamıyorum.

Kodlarımı Tamamı ise Şöyle;

NodeMcu Tarafı
C:
#include <Keypad.h>
const byte n_rows = 4;
const byte n_cols = 4;
char keys[n_rows][n_cols] = {
{'1','4','7','*'},
{'2','5','8','0'},
{'3','6','9','#'},
{'A','B','C','D'}
};
byte colPins[n_rows] = {D3, D2, D1, D0};
byte rowPins[n_cols] = {D7, D6, D5, D4};
Keypad myKeypad = Keypad( makeKeymap(keys), rowPins, colPins, n_rows, n_cols);
int toplamrakam = 0;
void setup(){
Serial.begin(115200);
}

void loop() {
    char tus_degeri = myKeypad.getKey();
    if ( isdigit(tus_degeri) ) { // basılan tuş rakam ise, basamakları toplar 1+2+3 =123
        uint8_t rakam = tus_degeri - '0';
        toplamrakam = ((toplamrakam * 10) + rakam);
        //Serial.println(tus_degeri); // basılan her bir tuş
        //Serial.println(toplamrakam); // ortaya çıkan sayı
    } else if ( tus_degeri == 'D' ) {
        Serial.write(toplamrakam);
        /*Serial.print( " Siparis Eklendi." );*/
        toplamrakam = 0;
        // yıldız duşu enter gibi davranır
    } else if ( tus_degeri == 'A' ) {
        toplamrakam = 0;
        Serial.print("Toplamrakam ");
        Serial.print(toplamrakam);
        Serial.print(" sıfırlandı.\n");
        // A tuşu yanlış girişi sıfırlar....
    }
}

Arduino Due Tarafı
C:
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 7, 6, 5, 4, 3);

int gelenVeri = 0;   // genel veriyi tutacak değişken
char gelenKarakter;

void setup() {
  Serial.begin(115200);
  lcd.begin(16, 2);
}

void loop() {
  // Veri gelmiş mi?
        if (Serial.available() > 0) {
                // gelen veriyi oku
                gelenVeri = Serial.read();
                gelenKarakter = gelenVeri;
                lcd.setCursor(8, 0);
                lcd.print(gelenVeri);
                lcd.setCursor(0, 1);
                lcd.print("Siparis Eklendi");
        }
}

Osiloskop ile gönderen taraf ne gönderiyor bak ve UART protokolünü görmeye çalış.
 
Osiloskop ile gönderen taraf ne gönderiyor bak ve UART protokolünü görmeye çalış.
Abi ilk önce LCD tarafını çözelim. Serial Monitörden girdiğim değerleri hiç bir şekilde doğru yazmıyor.

Rakam Girince
20200911_184312.jpg

lcd_panel.png


Harf Girince

20200911_184504.jpg

lcd_panel2.png
 
Osiloskop ile gönderen taraf ne gönderiyor bak ve UART protokolünü görmeye çalış.
Şuanda iki modül ayrı ayrı çalışıyor. Tek sıkıntı ikisi arasında haberleşme.
Gönderme tuşuna bastığım andaki olay.
nodemcu osiloskop.png
 
Ölçüm doğru değil sanki. Trigger modda yapman lazım. Trigger seviyesi de 1.5 V gibi olmalı. Ama bununla trigger modda nasıl ölçüm yapılır ona bakmam lazım. Benimkini artık kurup bir video çekme zamanı geldi :)
 
Ha tamam resimde sanki görüyorum :) Sağ ortada "Trigger Mode" diyor. Şu anda "Auto". İşte o Auto olmayacak! "Triggered" veya artık Çinliler ne isim verdilerse o olacak. "Trigger Style" da şu anda "Rising Edge". Onu da "Falling Edge" yapacaksın.
 
@uyesercan 20 satır yazmış olsan 5tl den 100TL cebindeydi şimdiye :D
Benim kodlarımın satırı 1000TL. Çok emeğim var çünkü. Bide yolduğum saçlarımı geri ektirecem :katil1: :katil1:


2 satır kod için 3 günde onlarca video, onlarca web sayfası, belki yüzlerce kod denemesi yaptım.
Hepi topu 2 satırı doğru yazabilmek için :cheeky4:
 
Bir konuya da açıklık getireyim. 3.3v modül ile 5v modülün birlikte çalışmayacağını düşünüyorduk hep.
Eğer 3.3v modülden 5v modüle gönderim yapıyorsak sıkıntısız çalışıyor. "Voltajlar tutmaz" dediğimiz olay şehir efsanesi imiş.
Eğer 5v modülden 3.3v modüle veri göndereceksek uygun bir direnci voltaj bölücü olarak kullanarak yine işlem yaptırabiliyoruz.
 

Çevrimiçi personel

Forum istatistikleri

Konular
6,953
Mesajlar
118,765
Ü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