Çözüldü1.75K görüntülenmeLoraLoRa e22 Oled Adafruit_SSD1306 ekran
0

Merhaba.

E22 900T22D lora modülünü 3in1 PCP kartta Arduino nano ile kullanıyorum. Seri konsolda sorun yok. Her satırda;
Lora denemeleri
Lora denemeleri şeklinde satır atlatarak yazıyor.
Aşağıdaki kod içinde bulunan setup kısmında hiç bir sorun yok. Ancak void loop kısmında;
display.println(rc);  satırında ekrana gelen rc değişkeni değişimli olarak 1 harf şeklinde değişerek yansıyor.
Örnek veriyorum, diğer loradan gelen,

String veri =”Lora denemeleri”;   değişkeni ekrana, önce L harfi ardından o harfi sonra r harfi şeklinde devam ediyor. Tabi ekrana tek harf yansıdığı için gelen veri tam olarak geçsede birer harf şeklinde yansıdığından anlaşılmıyor.
Yardımcı olabilirmisiniz.

Teşekkürler

/// Oled<br />#include <Wire.h><br />#include <SPI.h><br />#include <Adafruit_SSD1306.h><br />#include<Fonts/FreeSans9pt7b.h><br />#define SCREEN_WIDTH 128 // OLED display width, in pixels<br />#define SCREEN_HEIGHT 64 // OLED display height, in pixels<br />#define OLED_RESET    0  // Reset pin for display (0 or -1 if no reset pin)<br />Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);<br />#include <Adafruit_GFX.h><br /> #include <SoftwareSerial.h><br />  SoftwareSerial FixSerial(10, 11);<br />char rc;<br /> #define M0 6<br />#define M1 7<br /> void setup() {<br />  Serial.begin(115200);<br />  pinMode(M0, OUTPUT);<br />  pinMode(M1, OUTPUT);<br />  digitalWrite(M0, LOW);<br />  digitalWrite(M1, LOW);<br />  FixSerial.begin(9600);<br />  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {<br />    Serial.println(F("SSD1306 allocation failed"));<br />    for(;;);<br />    }<br />    if (FixSerial.available() < 1) {<br />      display.clearDisplay();<br />      display.setFont(&FreeSans9pt7b);<br />      display.setTextSize(1);<br />      display.setTextColor(SSD1306_WHITE);<br />      display.setCursor(43, 12);<br />      display.println("G P S");<br />      display.setTextColor(WHITE);<br />      display.setCursor(28, 36);<br />      display.println("LoRa E22");<br />      display.setCursor(25, 55);<br />      display.println("E2EE Wan");<br />      display.display();<br />      delay(3000);<br />      /// Oled yazdır<br />    }<br />}<br /> void loop() {<br />  while (FixSerial.available()) {<br />    rc = FixSerial.read();<br />    Serial.print(rc);<br />    /// Oled yazdır<br />    display.clearDisplay();<br />    display.setFont(&FreeSans9pt7b);<br />    display.setTextSize(1);<br />    display.setTextColor(SSD1306_WHITE);<br />    display.setCursor(43, 12);<br />    display.println("G P S");<br />    display.println("");<br />    display.setTextSize(1.6);<br />    display.setTextColor(WHITE);<br />    display.println(rc);<br />    display.display();<br />  }<br />}

Soru yeni cevaplara kapalıdır.
Mehmet En iyi cevap olarak seçildi Haziran 5, 2022
0

Hocam Merhaba.

Lora ve seri iletişim konusunda doğrusu zayıfım. Ancak dediğiniz üzere, bağlantıdaki anlatılmak istenenin, 1 haftamı alacağını düşünmüyorum. Yardım ve önerileriniz için çok teşekkür ediyorum.

Mantık olarak seri iletişimde, “Yeni satır” ve “Satır sonu” belirtilmediğinde; char(karakter) ve bayt sınırında işlem yapması yerine; “Yeni satır” ve “Satır sonu” belirtilerek tümünü bir dizeye atayarak okuması benim sorunumu çözmektedir.
– Bir de gelen dizenin ekrana sığmaması konusunuda Adafruit_SSD1036 oled ekran için, Soru Cevap kısmını okuyan diğer arkadaşların fikir edinebileceklerini düşündüğümden sorunu;

display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.setCursor(10, 0);
display.println(dize);
display.display();
display.startscrollleft(0x00, 0x0F);

ile gelen diziyi ekranda tek satır olarak sağdan sola kayan yazı ile hallettim.
Yardımlarınız için teşekkür ediyorum.
İyi Çalışmalar

Mehmet En iyi cevap olarak seçildi Haziran 5, 2022
2 cevaptan 1'ini inceliyorsun, tüm cevapları görmek için buraya tıklayın.