Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: berkay_91 - 29 Ağustos 2018, 22:36:34

Başlık: Nextion Ekran RX/TX Haberleşme
Gönderen: berkay_91 - 29 Ağustos 2018, 22:36:34
Nextion ekrandan data geldikten hemen sonra arduinonunda ekrana farklı bir data göndermesi gerekiyor, arduino gelen datayı doğru bir şekilde okumasına rağmen ekrana düzgün bir şekilde data gönderemiyor, fakat nextiondan data gelmediği zamanlarda arduino düzgün bir şekilde istenilen rakamları gönderebiliyor... RX-TX haberleşmeler arasına delay(1000); koydum ama yine yemedi yardımcı olur musunuz?
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: bsenguler - 29 Ağustos 2018, 23:51:13
Kodunu paylaşır mısın?
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: berkay_91 - 30 Ağustos 2018, 12:55:20
zaman_kontrol() fonksiyonundan zaman dolduğu için çıkarsa Default_work_time_value() fonksiyonuna girip default değerleri düzgün bir şekilde gönderebiliyor, fakat program zaman_kontrol() fonksiyonunun içindeki while döngüsünde iken nextion dan bir data(pw=101) gelip çıkar ise Default_work_time_value() fonksiyonunun içine yine giriyor fakat dataları düzgün bir şekilde gönderemiyor nextion da sadece 00:00:00 lar gözükyor... while döngüsünden her iki çıkış durumunda da Buton_value() fonksiyonundaki değer düzgün bir şekilde gönderiliyor

#include <Wire.h>
#include <DS1307new.h>

byte sayac[3], pw, zm, st, dk, sn, r1, r2, dm, st2, dk2, sn2;
byte saniye, dakika, saat;
bool kontrol=false;
char v[3];

void setup(){
  Serial.begin(9600);
}

void loop(){

   if (kontrol == true)
      zaman_kontrol();
}

void zaman_kontrol() {

  bool knt = true;
  zaman_ayarla();

  while (knt == true && pw == 100) {

    RTC.getTime(); // Saat ve Tarih verilerini al
    saniye = RTC.second;
    dakika = RTC.minute;
    saat = RTC.hour;

    if (saniye >= sn && dakika >= dk && saat >= st)
      knt = false;

    data_kontrol();
  }

  Buton_value();
  Default_work_time_value();
}


void Default_work_time_value() {

  sprintf(v, "%02d", st);

  Serial.print("t0.txt=");
  Serial.print('"');
  Serial.print(v);
  Serial.print('"');
  Serial.write(255);
  Serial.write(255);
  Serial.write(255);

  sprintf(v, "%02d", dk);

  Serial.print("t2.txt=");
  Serial.print('"');
  Serial.print(v);
  Serial.print('"');
  Serial.write(255);
  Serial.write(255);
  Serial.write(255);

  sprintf(v, "%02d", sn);

  Serial.print("t4.txt=");
  Serial.print('"');
  Serial.print(v);
  Serial.print('"');
  Serial.write(255);
  Serial.write(255);
  Serial.write(255);
}

void Buton_value() {

  Serial.print("bt4.val=1");
  Serial.write(255);
  Serial.write(255);
  Serial.write(255);
}

void data_kontrol() {

  delay(100);

  if (Serial.available() > 43) {

    pw = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    zm = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    st = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    dk = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    sn = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    r1 = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    r2 = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    dm = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    st2 = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    dk2 = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();

    sn2 = Serial.read();
    for (int i = 0; i < 3; i++)
      sayac[i] = Serial.read();
  }

  if (pw == 100)
    kontrol = true;
}
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: berkay_91 - 01 Eylül 2018, 23:23:36
güncel
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: eeburakdemir - 02 Eylül 2018, 12:37:21
Merhaba,
Giden dataları usb/ttl dönüştürücüde kontrol etmeni tavsiye ederim.
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: lostromos - 02 Eylül 2018, 13:27:58
Serial.begin(115200);

Olarak degistirin duzelecektir.(Eger ekrana kartla yukleme yaparken yukarda 115200 yaziyor ise olacaktir. Haberlesme hizi fsrkliysa ona gore ayarlayın.)
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: berkay_91 - 02 Eylül 2018, 20:42:33
malesef işe yaramadı, ekrana programı yüklerken Baud Rate 115200 ayarladım, Arduinodaki programda Serial.begin(115200); yaptım ama şimdi hiç haberleşmiyor... bir sorun daha var program bir fonksiyonun içindeki while döngsünde iken Nextion dan veri geldiğinde void serialEvent(){...} içine girmiyor, serialEvent sadece loop ta çalışıyor. bu yüzden fonksiyonların içinde if (Serial.available() > 43) ile data gelip gelmediğini kontrol etmek zorunda kalıyorum
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: tunayk - 02 Eylül 2018, 23:17:49
Zamanında PC üzerinden test yaparken şöyle bişey yapmışım;
void Gonder()
        {
            try
            {
                if (textBox1.Text.Length > 0 && serialPort1.IsOpen)
                {
                    int len = System.Text.ASCIIEncoding.ASCII.GetByteCount(textBox1.Text);
                    byte[] txtdata = new byte[len];
                    Array.Copy(System.Text.ASCIIEncoding.ASCII.GetBytes(textBox1.Text), txtdata, len);
                    // txtdata[len] = 0xFF;
                    // txtdata[len + 1] = 0xFF;
                    // txtdata[len + 2] = 0xFF;
                    serialPort1.Write(txtdata, 0, len);
                    byte[] son = new byte[] { 0xFF, 0xFF, 0xFF };
                    System.Threading.Thread.Sleep(5);
                    serialPort1.Write(son, 0, 3);
                }
       

            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.ToString());
            }
           
        }

3 tane 0xFF göndermeden 1-2ms beklemek daha iyi sonuç veriyor. Yanlış değilsem dökümanında da aynı şeyden bahsediyordu.
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: Gediz1337 - 03 Eylül 2018, 00:41:08
Mesajınıza anlayamadığım bir sebepten dolayı yanıt veremedim, ileti sayımın yetersiz olmasından kaynaklanıyor sanırım. Ayrıntılı bakmak için pek vaktim yok fakat özel değilse Nextion projenizi paylaşabilirseniz debug yaparak yardım etmeye çalışırım.
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: mustafa_cmbz - 03 Eylül 2018, 02:14:53
Haberleşmeyi değiştirmek için farklı komutları var mesela kalıcı mı geçicimi vs gibi.

Bir zamanlar wiki den bakmıştım.
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: berkay_91 - 03 Eylül 2018, 20:38:26
Alıntı Yap3 tane 0xFF göndermeden 1-2ms beklemek daha iyi sonuç veriyor. Yanlış değilsem dökümanında da aynı şeyden bahsediyordu.

  sprintf(v, "%02d", kalan_st);

  Serial.print("t0.txt=");
  Serial.print('"');
  Serial.print(v);
  Serial.print('"');
  delay(2);
  Serial.write(255);
  Serial.write(255);
  Serial.write(255);

2 ms eklememe rağmen değişen bir şey olmadı...
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: berkay_91 - 03 Eylül 2018, 21:18:14
http://s7.dosya.tc/server9/cfihn3/Nextion_Baud_Rate_degistirme.docx.html

dosyadaki gibi ekranın Baud Rate ini 155200 olarak değiştirdim, Arduinonunda Baud Rate ini 115200 yaptım çift tarflı haberleşme olmasına rağmen sorun devam ediyor
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: e-zeki - 04 Eylül 2018, 08:03:40
Alıntı yapılan: berkay_91 - 03 Eylül 2018, 21:18:14http://s7.dosya.tc/server9/cfihn3/Nextion_Baud_Rate_degistirme.docx.html

dosyadaki gibi ekranın Baud Rate ini 155200 olarak değiştirdim, Arduinonunda Baud Rate ini 115200 yaptım çift tarflı haberleşme olmasına rağmen sorun devam ediyor


Nextion TFT'lerin baud rate'i 9600'da  sabit. başka baud rate'de çalışmayacaktır.


Edit : Eski versiyonlarda baudrate fix 9600 imiş sonradan baud update eklemişler
Başlık: Ynt: Nextion Ekran RX/TX Haberleşme
Gönderen: lostromos - 04 Eylül 2018, 11:04:25
Alıntı yapılan: e-zeki - 04 Eylül 2018, 08:03:40Nextion TFT'lerin baud rate'i 9600'da  sabit. başka baud rate'de çalışmayacaktır.

Ben 115200de kullanıyorum.