Olvasgattam a neten és elég sok mindent találtam a soros portról. Vannak olyan kontrollerek, amiknek több serial portja is van.
Valahogy ehhez kapcsolódik az UART és az USART. De nem igazán tudom mi a különbség.
Amit szeretnék csinálni, az egy olyan eszköz, ami egy modemből soros porton keresztül kiolvassa az adatokat és ebből kiválogatja ami nekem kell néhány érték, majd kiírja egy kijelzőre.
Ott tartok, hogy a kijelzőre ki tudom íratni amit soros porton keresztül küldök a számítógépről.
A számítógépen látom a soros porti adatokat, amiket a modem küld, egy USB FTDI adaptert használva.
Viszont ha a modem RX, TX, GND lábait rákötöm az Arduino Nano D0, D1, GND lábaira, akkor látom, hogy az arduinon villog az RX LED, de nem történik semmi, a program valamiért nem észleli. Van egy olyan sejtésem, hogy az USB-n keresztüli és a D0, D1 fizikai csatlakozók meg vannak különböztetve. De hogyan?
Olyan mintha a Serial.read() parancs csak az USB-n keresztül működne.
Semmit nem találtam sajnos Youtube-on is mindenhol olyan példák vannak, hogy az Arduino IDE konzolról küldik az adatokat a vezérlőnek és vissza.
Hogy lehetne a fizikai RX, TX portot megszólítani?
Kód: Egész kijelölése
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
int inByte = 0;
char betu;
int karakter = 0;
void setup() {
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(700);
display.clearDisplay();
pinMode (2, INPUT);
digitalWrite(2, HIGH);
pinMode (3, INPUT);
digitalWrite(3, HIGH);
pinMode (4, INPUT);
digitalWrite(4, HIGH);
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.println(F(" ELSO SOR "));
display.setCursor(50,16);
display.println(F(" -2- "));
display.println(F("Csokiiiiii"));
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(80,56);
display.print(F("Ver. 0.1"));
display.display();
display.setTextColor(WHITE);
display.setTextSize(1);
}
void loop() {
if (Serial.available() > 0) {
inByte = Serial.read();
karakter++;
betu = inByte;
//Serial.write(betu);
if (karakter == 168) {
karakter = 0;
}
if (karakter == 1) {
display.clearDisplay();
display.display();
display.setCursor(0,0);
}
display.print(betu);
display.display();
}
}
