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
hocam aydınlanma çağının en karanlık noktasındasın bir adım sonra aydınlanma başlayacak. kısa yoldan cevap vermek istemiyorum. şu yazıyı baştan sona okuyup anlar mısın
https://forum.arduino.cc/t/serial-input-basics-updated/382007/2
mümkünse lorasız da olsa önce bi serial haberleşmeyi iyice anla. Seri haberleşmede aklına takılabilecek sorulara cevap verecek seviyedeyim ama kendinizin öğrenmesi bence daha önemlidir. 1 hafta nı alır belki daha fazla ama bunu öğrenince artık yazılımda en önemli basamaklardan biri aşmış olacaksın.