Komunikace Arduino-Nextion
Napsal: 18 říj 2019, 20:45
Ahoj,
potřeboval bych prosím poradit proč mi jde vždy jen odeslat data do displeje.
Pokud chci ovládat vstupy v arduinu z displeje,tak mi to jde jen pokud vymažu(odkomentuju) tu část kodu
kde ovládám to odesílání dat z arduina.viz kod.
Omlouvám v tomto začínám,takže dělám někde nějakou blbost,ale nikde jsem na netu nenašel radu,která by mi pomohla....
Nebo snad obousměrná komunikace je problém????
Děkuji
potřeboval bych prosím poradit proč mi jde vždy jen odeslat data do displeje.
Pokud chci ovládat vstupy v arduinu z displeje,tak mi to jde jen pokud vymažu(odkomentuju) tu část kodu
kde ovládám to odesílání dat z arduina.viz kod.
Omlouvám v tomto začínám,takže dělám někde nějakou blbost,ale nikde jsem na netu nenašel radu,která by mi pomohla....
Nebo snad obousměrná komunikace je problém????
Děkuji
Kód: Vybrat vše
// připojení potřebné knihovny
#include <SoftwareSerial.h>
// nastavení čísel propojovacích pinů
#define RX 7
#define TX 8
#define LEDka 13
int Pin_pohyb = 9;
String zprava ="";
// vytvoření objektu swSerial z knihovny s nastavenými piny
SoftwareSerial swSerial(RX, TX);
// proměnná pro uložení času přepisu textu
unsigned long casPrepisu = 0;
void setup() {
// zahájení komunikace po softwarové sériové lince
swSerial.begin(9600);
//swSerial.setTimeout(100);
// nastavení LED diody jako výstupu
// a zapsání základního stavu
pinMode(LEDka, OUTPUT);
digitalWrite(LEDka, LOW);
pinMode(Pin_pohyb, INPUT);
digitalWrite(Pin_pohyb, LOW);
// nastaví objekty do základního stavu
swSerial.print("A.b0.picc=39");SerialFFF();swSerial.print("A.b1.picc=39");SerialFFF();
swSerial.print("A.b2.picc=39");SerialFFF();swSerial.print("A.b3.picc=39");SerialFFF();
swSerial.print("A.bt0.val=0");SerialFFF();swSerial.print("A.bt1.val=0");SerialFFF();
swSerial.print("A.bt2.val=0");SerialFFF();swSerial.print("A.bt3.val=0");SerialFFF();
}
void loop() {
// kontrola příchozí zprávy
if (swSerial.available()) {
// vytvoření proměnné pro uložení zprávy
String zprava;
// načtení všech znaků zprávy s převodem
// (char) na znaky
while (swSerial.available()) {
zprava += swSerial.readString();
}
// pokud najdeme ve zprávě znak b,
// LED diodu zapneme
if (zprava.substring(1) == "b") {
digitalWrite(LEDka, HIGH);
}
// pokud najdeme ve zprávě znak a,
// LED diodu vypneme
else if (zprava.substring(1) == "a") {
digitalWrite(LEDka, LOW);
}
}
if(digitalRead(Pin_pohyb) == HIGH){
digitalWrite(LEDka, HIGH);
swSerial.print("A.b0.picc=96"); // do b0 nahraje obrazek
SerialFFF();
swSerial.print("A.n1.val=");
swSerial.print(digitalRead(Pin_pohyb));
SerialFFF();
}else if(digitalRead(Pin_pohyb) == LOW)
{
digitalWrite(LEDka, LOW);
swSerial.print("A.b0.picc=39"); // do b0 nahraje obrazek
SerialFFF();
swSerial.print("A.n1.val=");
swSerial.print(digitalRead(Pin_pohyb));
SerialFFF();
}
}
void SerialFFF(void)
{
swSerial.write(0xFF);
swSerial.write(0xFF);
swSerial.write(0xFF);
delay(100);
}