Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  0 2716
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:

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.