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");
        }
}
 
Programı bitirdim. İsmini de "Tuşla Gelsin" koydum. Tüm hakları saklıdır... :D

1599835076543.png
 
Ş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
 
IMG_20200911_192856 (1920x1080px).jpg

IMG_20200911_193323 (1920x1080px).jpg

IMG_20200911_193330 (1920x1080px).jpg
 
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.
 

Forum istatistikleri

Konular
5,883
Mesajlar
100,324
Üyeler
2,491
Son üye
djkop

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