This is an old revision of the document!
Pentru lucrarea curentă de laborator veți folosi biblioteca ZigduinoTransfer ce folosește clasele definite în laboratorul anterior pentru transmisia radio. Clasa implementează un protocol peste functiile de transmisie și recepție obișnuite și poate fi descărcată de aici.
Instalarea bibliotecii este foarte facilă, trebuie doar să dezarhivați arhiva în Arduino\libraries
Mai jos aveți un exemplu care vă permite să trimiteți și să recepționați pachete de date de pe interfața radio. Pentru aceasta aveți nevoie de două noduri: primul rulează codul care transmite (Tx) și al doilea recepționează (Rx).
Codul pentru Transmitter:
#include <ZigduinoTransfer.h> //create object ZigduinoTransfer ET; struct SEND_DATA_STRUCTURE{ //put your variable definitions here for the data you want to send //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO int blinks; int pause; }; //give a name to the group of data SEND_DATA_STRUCTURE mydata; void setup(){ Serial.begin(9600); //start the library, pass in the data details ET.begin(details(mydata)); pinMode(11, OUTPUT); } void loop(){ //this is how you access the variables. [name of the group].[variable name] mydata.blinks = 5; mydata.pause = 10; //send the data ET.sendData(); //Just for fun, we will blink it out too for(int i = mydata.blinks; i>0; i--){ digitalWrite(11, HIGH); delay(mydata.pause * 100); digitalWrite(11, LOW); delay(mydata.pause * 100); } delay(5000); }
Codul pentru Receiver:
#include <ZigduinoTransfer.h> //create object ZigduinoTransfer ET; struct RECEIVE_DATA_STRUCTURE{ //put your variable definitions here for the data you want to receive //THIS MUST BE EXACTLY THE SAME ON THE OTHER NODE!!! int blinks; int pause; }; //give a name to the group of data RECEIVE_DATA_STRUCTURE mydata; void setup(){ Serial.begin(9600); //start the library, pass in the data details ET.begin(details(mydata)); pinMode(11, OUTPUT); } void loop(){ //check and see if a data packet has come in. if(ET.receiveData()){ //this is how you access the variables. [name of the group].[variable name] //since we have data, we will blink it out. for(int i = mydata.blinks; i>0; i--){ digitalWrite(11, HIGH); delay(mydata.pause * 100); digitalWrite(11, LOW); delay(mydata.pause * 100); } } //you should make this delay shorter than your transmit delay or else messages could be lost delay(250); }