Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- This program receive RGB colour codes from nRF radio and analogWrite the colour to the RGB LED strip
- Date : 20/06/2013
- Written by Stanley Seow
- stanleyseow@gmail.com
- */
- #include <SPI.h>
- #include "nRF24L01.h"
- #include "RF24.h"
- #include "printf.h"
- #define RED_PIN 5
- #define GREEN_PIN 3
- #define BLUE_PIN 6
- RF24 radio(8,9);
- // Radio pipe addresses for the 2 nodes to communicate.
- const uint64_t pipes[6] = { 0xDEDEDEDEE7ULL, 0xDEDEDEDEE9ULL };
- char receivePayload[31];
- int r,g,b = 0;
- char red[3], green[3], blue[3];
- void setup(void)
- {
- pinMode(RED_PIN, OUTPUT);
- pinMode(GREEN_PIN, OUTPUT);
- pinMode(BLUE_PIN, OUTPUT);
- Serial.begin(57600);
- printf_begin();
- radio.begin();
- radio.setDataRate(RF24_250KBPS);
- radio.setPALevel(RF24_PA_MAX);
- radio.setChannel(85);
- radio.enableDynamicPayloads();
- radio.setRetries(15,15);
- radio.setCRCLength(RF24_CRC_16);
- radio.openWritingPipe(pipes[0]);
- radio.openReadingPipe(1,pipes[1]);
- radio.startListening();
- radio.printDetails();
- delay(1000);
- }
- void loop(void)
- {
- uint8_t len = 0;
- // Loop thru the pipes 0 to 5 and check for payloads
- if ( radio.available() ) {
- bool done = false;
- while (!done)
- {
- len = radio.getDynamicPayloadSize();
- done = radio.read( &receivePayload,len );
- receivePayload[len] = 0;
- printf("Got payload: %s len:%i 0x%x\n\r",receivePayload,len);
- // Strip the red, green & blue from the 6 chars
- HEXtoRGB();
- printf("%s %s %s\n\r",red,green,blue);
- printf("RGB:%i %i %i\n\r",r,g,b);
- analogWrite(RED_PIN,r);
- analogWrite(GREEN_PIN,g);
- analogWrite(BLUE_PIN,b);
- radio.startListening();
- }
- }
- r,g,b = 0;
- }
- void HEXtoRGB(void) {
- /* parse the string into three pieces of two */
- red[0] = toupper(receivePayload[1]);
- red[1] = toupper(receivePayload[2]);
- green[0] = toupper(receivePayload[3]);
- green[1] = toupper(receivePayload[4]);
- blue[0] = toupper(receivePayload[5]);
- blue[1] = toupper(receivePayload[6]);
- /* RED ********************************************/
- switch (red[0]) {
- case '0' : { r = 0; break; }
- case '1' : { r = 16; break; }
- case '2' : { r = 32; break; }
- case '3' : { r = 48; break; }
- case '4' : { r = 64; break; }
- case '5' : { r = 80; break; }
- case '6' : { r = 96; break; }
- case '7' : { r = 112; break; }
- case '8' : { r = 128; break; }
- case '9' : { r = 144; break; }
- case 'A' : { r = 160; break; }
- case 'B' : { r = 176; break; }
- case 'C' : { r = 192; break; }
- case 'D' : { r = 208; break; }
- case 'E' : { r = 224; break; }
- case 'F' : { r = 240; break; }
- }
- switch (red[1]) {
- case '0' : { r = r + 0; break; }
- case '1' : { r = r + 1; break; }
- case '2' : { r = r + 2; break; }
- case '3' : { r = r + 3; break; }
- case '4' : { r = r + 4; break; }
- case '5' : { r = r + 5; break; }
- case '6' : { r = r + 6; break; }
- case '7' : { r = r + 7; break; }
- case '8' : { r = r + 8; break; }
- case '9' : { r = r + 9; break; }
- case 'A' : { r = r + 10; break; }
- case 'B' : { r = r + 11; break; }
- case 'C' : { r = r + 12; break; }
- case 'D' : { r = r + 13; break; }
- case 'E' : { r = r + 14; break; }
- case 'F' : { r = r + 15; break; }
- }
- /* GREEN ********************************************/
- switch (green[0]) {
- case '0' : { g = 0; break; }
- case '1' : { g = 16; break; }
- case '2' : { g = 32; break; }
- case '3' : { g = 48; break; }
- case '4' : { g = 64; break; }
- case '5' : { g = 80; break; }
- case '6' : { g = 96; break; }
- case '7' : { g = 112; break; }
- case '8' : { g = 128; break; }
- case '9' : { g = 144; break; }
- case 'A' : { g = 160; break; }
- case 'B' : { g = 176; break; }
- case 'C' : { g = 192; break; }
- case 'D' : { g = 208; break; }
- case 'E' : { g = 224; break; }
- case 'F' : { g = 240; break; }
- }
- switch (green[1]) {
- case '0' : { g = g + 0; break; }
- case '1' : { g = g + 1; break; }
- case '2' : { g = g + 2; break; }
- case '3' : { g = g + 3; break; }
- case '4' : { g = g + 4; break; }
- case '5' : { g = g + 5; break; }
- case '6' : { g = g + 6; break; }
- case '7' : { g = g + 7; break; }
- case '8' : { g = g + 8; break; }
- case '9' : { g = g + 9; break; }
- case 'A' : { g = g + 10; break; }
- case 'B' : { g = g + 11; break; }
- case 'C' : { g = g + 12; break; }
- case 'D' : { g = g + 13; break; }
- case 'E' : { g = g + 14; break; }
- case 'F' : { g = g + 15; break; }
- }
- /* BLUE ********************************************/
- switch (blue[0]) {
- case '0' : { b = 0; break; }
- case '1' : { b = 16; break; }
- case '2' : { b = 32; break; }
- case '3' : { b = 48; break; }
- case '4' : { b = 64; break; }
- case '5' : { b = 80; break; }
- case '6' : { b = 96; break; }
- case '7' : { b = 112; break; }
- case '8' : { b = 128; break; }
- case '9' : { b = 144; break; }
- case 'A' : { b = 160; break; }
- case 'B' : { b = 176; break; }
- case 'C' : { b = 192; break; }
- case 'D' : { b = 208; break; }
- case 'E' : { b = 224; break; }
- case 'F' : { b = 240; break; }
- }
- switch (blue[1]) {
- case '0' : { b = b + 0; break; }
- case '1' : { b = b + 1; break; }
- case '2' : { b = b + 2; break; }
- case '3' : { b = b + 3; break; }
- case '4' : { b = b + 4; break; }
- case '5' : { b = b + 5; break; }
- case '6' : { b = b + 6; break; }
- case '7' : { b = b + 7; break; }
- case '8' : { b = b + 8; break; }
- case '9' : { b = b + 9; break; }
- case 'A' : { b = b + 10; break; }
- case 'B' : { b = b + 11; break; }
- case 'C' : { b = b + 12; break; }
- case 'D' : { b = b + 13; break; }
- case 'E' : { b = b + 14; break; }
- case 'F' : { b = b + 15; break; }
- }
- } /* end of Hex to RGB */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement