Serial Buffer
  • Merhabalar Arduino Uno üzerinden Hc05 kullanarak P10 led panel üzerine yazı yazdırıyorum.Panel 1 tane olduğunda sorun yok fakat 2 yada daha fazla panelde bluetoothdan gönderdiğim kelimlerde harf kayıpları oluyor rastgele 1 harf yada daha fazla gidiyor.Programda bir sorun olduğu düşünmüyorum zaten kolay bir program sorunun serial buffer boyutundan kaynaklandığını düşünüyorum.Bunu güclendirmek için nasıl bir şey yapabilirim yada sorunun başka bir kaynaktan oluştuğunu düşünen varmı ?
  • Varmı bu konuda fikri olan niye yapıyor olabilir harf kaybetmeyi buffer dışında ?
  • arkadaşım forumda müneccim yok kodları paylaşmadan kimden nasıl bi fikir bekliyosun anlamadım.
  • #include //* Spı kütüphanesini cagirdim
    #include
    #include //* DMD kütüphanesini cagirdim
    #include //* Timerone kütüphanesini
    #include
    #include "SystemFont5x7.h" //* Yazilacak fontu 5x7 boyutunda ayarladim
    #include "Arial_black_16.h" //* Yazinin fontunu arial black olarak ayarladim.
    #define DISPLAYS_ACROSS 1 //* P10un boyut ayari
    #define DISPLAYS_DOWN 1 //* P10un boyut ayari
    DMD dmd(2, 1); //* P10un boyut ayari
    #define max_char 100 //* gonderdigim mesajin maximum boyutu ayarladim
    char message[max_char]; //* gonderdigim mesaji mesaj boyutu ile char metin olarak tanimladim
    char r_char; //* Okuyacagim veri
    byte index ; //* Olusturdugum donguler icin index girisi
    int i; //* Olusturdugum donguler icin i girisi
    SoftwareSerial mySerial(2, 3); // RX, TX
    DS1307 rtc(SDA, SCL);
    void ScanDMD()

    {
    dmd.scanDisplayBySPI(); //* DMDyi baslat

    }
    void setup(void) {

    rtc.begin();
    rtc.halt(false);
    Timer1.initialize(5000);
    Timer1.attachInterrupt( ScanDMD );
    dmd.clearScreen( true );
    Serial.begin(38200);
    mySerial.begin(9600);
    }

    void loop(void) {

    while ( mySerial.available() < 1) {
    dmd.selectFont(SystemFont5x7);
    dmd.drawString( 0, 1, rtc.getTimeStr(), 8, GRAPHICS_NORMAL );
    dmd.drawString( 0, 9, rtc.getDateStr(), 10, GRAPHICS_NORMAL );
    }

    if (mySerial.available()) { //*Tampon bellekteki okunmayi bekleyen verileri denetledim
    for (i = 0; i < 128 ; i++) {
    message[i] = '\0';

    }
    index = 0;
    }
    while ( mySerial.available() > 0) { //*Tampon bellekteki okunmayi bekleyen verileri denetledim gonderdigim veriyi messega ile esitledim
    if (index < (max_char - 1))
    {
    r_char = mySerial.read();
    message[index] = r_char;
    index++;
    message[index] = '\0';
    }
    }

    dmd.clearScreen( true );
    dmd.selectFont(Arial_Black_16);
    dmd.drawMarquee(message, max_char, 63 , 1); //* Seri yoldan aldigim veriyi P10a bastigim komut
    long start = millis(); //* Kayan yazı olmasi icin zamanlayicilari kullandim
    long timer = start;
    boolean ret = false;
    while (!ret) {
    if ((timer + 30) < millis()) {
    ret = dmd.stepMarquee(-1, 0);
    timer = millis();

    }
    }

    }
  • Programsal bir hata olduğunu sanmıyorum

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.