This week I used the nRF24L01 wireless transceiver. A pair is about $7. Easily compatible with Arduino. Just had to install the RF24 Library to make it work.
The arduino uno on the right was used to transmit data. While a button was pressed, a red LED on the breadboard lit up, and the arduino looped from 0-255 continuously and sent each number to the receiving module.
#include < nRF24L01.h> #include < RF24.h> #include < RF24_config.h> #include < SPI.h> int msg[1]; RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; const int button2Pin = 3; const int ledPin = 2; void setup(void){ pinMode(button2Pin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); radio.begin(); radio.openWritingPipe(pipe); } void loop(void){ int button2State; button2State = digitalRead(button2Pin); if (button2State == LOW) { digitalWrite(ledPin, HIGH); // turn the LED on for (int x=0;x<255;x++){ msg[0] = x; radio.write(msg, 1); } } else { digitalWrite(ledPin, LOW); // turn the LED off } }
The receiving module listened for the numbers sent from the transmitting module. If it received data, a yellow LED lit up, else, it would just turn on a red LED.
#include < nRF24L01.h> #include < RF24.h> #include < RF24_config.h> #include < SPI.h> int msg[1]; RF24 radio(9,10); const uint64_t pipe = 0xE8E8F0F0E1LL; int red = 3; int green = 5; int redNeg = 4; int greenNeg = 6; int lastmsg = 1; void setup(void){ Serial.begin(9600); radio.begin(); radio.openReadingPipe(1,pipe); radio.startListening(); pinMode(red, OUTPUT); pinMode(green, OUTPUT); pinMode(redNeg, OUTPUT); pinMode(greenNeg, OUTPUT); digitalWrite(greenNeg, LOW); digitalWrite(redNeg, LOW); } void loop(void){ if (radio.available()){ bool done = false; while (!done){ done = radio.read(msg, 2); if (msg[0] != lastmsg +1){ digitalWrite(red, HIGH); digitalWrite(green,LOW); } else { digitalWrite(red,LOW); digitalWrite(green,HIGH); } lastmsg = msg[0]; Serial.println(msg[0]); } } else { digitalWrite(red, HIGH); digitalWrite(green,LOW); } }