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 />}
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