Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SPI.h>
- #include "nRF24L01.h"
- #include "RF24.h"
- // RF Defines
- RF24 radio(9,10);
- const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
- typedef enum { role_ping_out = 1, role_pong_back } role_e;
- const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};
- role_e role = role_pong_back;
- #define ledE1 12
- #define ledE2 11
- #define ledE3 8
- #define ledD1 5
- #define ledD2 4
- #define ledD3 3
- #define motorEsq 7
- #define motorDir 6
- #define ESTADO_APAGADO '0'
- #define ESTADO_LED1 '1'
- #define ESTADO_LED2 '2'
- #define ESTADO_LED3 '3'
- #define ESTADO_LIGARMOTORESQ '4'
- #define ESTADO_DESLIGARMOTORESQ '5'
- #define ESTADO_LIGARMOTORDIR '6'
- #define ESTADO_DESLIGARMOTORDIR '7'
- char c = '0';
- boolean shine = false;
- void maquinaDeEstados(char c)
- {
- if(c == ESTADO_APAGADO)
- {
- digitalWrite(ledE1,LOW);
- digitalWrite(ledE2,LOW);
- digitalWrite(ledE3,LOW);
- digitalWrite(ledD1,LOW);
- digitalWrite(ledD2,LOW);
- digitalWrite(ledD3,LOW);
- analogWrite(motorEsq,0);
- analogWrite(motorDir,0);
- shine = false;
- }
- else if(c == ESTADO_LED1)
- {
- digitalWrite(ledE1,HIGH);
- digitalWrite(ledD1,HIGH);
- shine = false;
- }
- else if(c == ESTADO_LED2)
- {
- digitalWrite(ledE2,HIGH);
- digitalWrite(ledD2,HIGH);
- shine = false;
- }
- else if(c == ESTADO_LED3)
- {
- shine = true;
- }
- else if(c == ESTADO_LIGARMOTORESQ)
- {
- analogWrite(motorEsq,255);
- }
- else if(c == ESTADO_DESLIGARMOTORESQ)
- {
- analogWrite(motorEsq,0);
- }
- else if(c == ESTADO_LIGARMOTORDIR)
- {
- analogWrite(motorDir,255);
- }
- else if(c == ESTADO_DESLIGARMOTORDIR)
- {
- analogWrite(motorDir,0);
- }
- }
- void setup()
- {
- Serial.begin(9600);
- shine = false;
- pinMode(13, OUTPUT);
- digitalWrite(13,LOW);
- pinMode(ledE1, OUTPUT);
- pinMode(ledE2, OUTPUT);
- pinMode(ledE3, OUTPUT);
- pinMode(ledD1, OUTPUT);
- pinMode(ledD2, OUTPUT);
- pinMode(ledD3, OUTPUT);
- pinMode(motorEsq, OUTPUT);
- pinMode(motorDir, OUTPUT);
- digitalWrite(ledE1,LOW);
- digitalWrite(ledE2,LOW);
- digitalWrite(ledE3,LOW);
- digitalWrite(ledD1,LOW);
- digitalWrite(ledD2,LOW);
- digitalWrite(ledD3,LOW);
- analogWrite(motorEsq,0);
- analogWrite(motorDir,0);
- radio.begin();
- radio.setRetries(15,15);
- radio.startListening();
- // Become the primary receiver (pong back)
- role = role_pong_back;
- radio.openWritingPipe(pipes[1]);
- radio.openReadingPipe(1,pipes[0]);
- }
- void loop()
- {
- if ( role == role_pong_back )
- {
- // if there is data ready
- if ( radio.available() )
- {
- // Dump the payloads until we've gotten everything
- bool done = false;
- while (!done)
- {
- // Fetch the payload, and see if this was the last one.
- done = radio.read( &c, sizeof(c) );
- // Spew it
- Serial.println("Got payload: ");
- Serial.println(c);
- maquinaDeEstados(c);
- // Delay just a little bit to let the other unit
- // make the transition to receiver
- delay(20);
- }
- // First, stop listening so we can talk
- radio.stopListening();
- // Send the final one back.
- // radio.write( &got_time, sizeof(unsigned long) );
- // printf("Sent response.\n\r");
- // Now, resume listening so we catch the next packets.
- radio.startListening();
- }
- }
- if (shine)
- {
- digitalWrite(ledE1,HIGH);
- digitalWrite(ledE2,HIGH);
- digitalWrite(ledE3,HIGH);
- digitalWrite(ledD1,HIGH);
- digitalWrite(ledD2,HIGH);
- digitalWrite(ledD3,HIGH);
- delay(100);
- digitalWrite(ledE1,LOW);
- digitalWrite(ledE2,LOW);
- digitalWrite(ledE3,LOW);
- digitalWrite(ledD1,LOW);
- digitalWrite(ledD2,LOW);
- digitalWrite(ledD3,LOW);
- delay(100);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement