Hei!
Jeg driver å leker litt med Arduino, og har nå fått en Funduino Nano til å sende kommandoer trådløst til en Funduino Pro Mini. Trådløsmodulen er en APC220 på hver av arduinoene.
Problemet er at jeg opplever en merkbar forsinkelse ved trådløs overføring kontra direkte mellom seriellportene.
Er dette helt normalt som ikke kan gjøres noe med, eller det en lur måte å hindre dette på?
Legger ved en liten video som viser den merkbare laggen. Jeg har tre knapper på den ene enheten som skal aktivere hver sin lampe på den andre enheten.
https://www.youtube.com/watch?v=fGlNJZ7mw00
Legger også ved kodene hvis det skulle være interessant:
EDIT:
Fant ut av det!
Måtte sette en Serial.flush(); i slutten av loopen på senderen. Fornøyd nå!
Endret også baud-raten (air) til 19200 bps, kan hende det også hadde noe å si.
Jeg driver å leker litt med Arduino, og har nå fått en Funduino Nano til å sende kommandoer trådløst til en Funduino Pro Mini. Trådløsmodulen er en APC220 på hver av arduinoene.
Problemet er at jeg opplever en merkbar forsinkelse ved trådløs overføring kontra direkte mellom seriellportene.
Er dette helt normalt som ikke kan gjøres noe med, eller det en lur måte å hindre dette på?
Legger ved en liten video som viser den merkbare laggen. Jeg har tre knapper på den ene enheten som skal aktivere hver sin lampe på den andre enheten.
https://www.youtube.com/watch?v=fGlNJZ7mw00
Legger også ved kodene hvis det skulle være interessant:
Kode
// Sender.ino int knapp1 = 2; int knapp2 = 3; int knapp3 = 4; void setup() { Serial.begin(9600); pinMode(knapp1, INPUT); pinMode(knapp2, INPUT); pinMode(knapp3, INPUT); } void loop() { if(digitalRead(knapp1) == HIGH){ Serial.write(21); } else{ Serial.write(20); } if(digitalRead(knapp2) == HIGH){ Serial.write(31); } else{ Serial.write(30); } if(digitalRead(knapp3) == HIGH){ Serial.write(41); } else{ Serial.write(40); } }
Kode
//Mottaker.ino int cmd; int red = 2; int gul = 3; int green = 4; void setup() { Serial.begin(9600); pinMode(green, OUTPUT); pinMode(gul, OUTPUT); pinMode(red, OUTPUT); for(int i=0; i<4; i++){ digitalWrite(red, 1); //Tester led-lampene digitalWrite(green, 1); digitalWrite(gul, 1); delay(100); digitalWrite(red, 0); digitalWrite(gul, 0); digitalWrite(green, 0); delay(100); } } void loop() { cmd = Serial.read(); if(cmd == 21){ digitalWrite(red, HIGH); } if(cmd == 20){ digitalWrite(red, LOW); } if(cmd == 31){ digitalWrite(gul, HIGH); } if(cmd == 30){ digitalWrite(gul, LOW); } if(cmd == 41){ digitalWrite(green, HIGH); } if(cmd == 40){ digitalWrite(green, LOW); } }
EDIT:
Fant ut av det!
Måtte sette en Serial.flush(); i slutten av loopen på senderen. Fornøyd nå!
Endret også baud-raten (air) til 19200 bps, kan hende det også hadde noe å si.
Sist endret av nikkibever; 31. august 2016 kl. 14:02.
Grunn: Automatisk sammenslåing med etterfølgende innlegg.