Advertisement
Rapela

Luva - Receptor

Jul 5th, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.97 KB | None | 0 0
  1. #include <SPI.h>
  2. #include "nRF24L01.h"
  3. #include "RF24.h"
  4.  
  5. // RF Defines
  6. RF24 radio(9,10);
  7. const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };
  8. typedef enum { role_ping_out = 1, role_pong_back } role_e;
  9. const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};
  10. role_e role = role_pong_back;
  11.  
  12. #define ledE1 12
  13. #define ledE2 11
  14. #define ledE3 8
  15. #define ledD1 5
  16. #define ledD2 4
  17. #define ledD3 3
  18.  
  19. #define motorEsq 7
  20. #define motorDir 6
  21.  
  22. #define ESTADO_APAGADO '0'
  23. #define ESTADO_LED1 '1'
  24. #define ESTADO_LED2 '2'
  25. #define ESTADO_LED3 '3'
  26. #define ESTADO_LIGARMOTORESQ '4'
  27. #define ESTADO_DESLIGARMOTORESQ '5'
  28. #define ESTADO_LIGARMOTORDIR '6'
  29. #define ESTADO_DESLIGARMOTORDIR '7'
  30.  
  31. char c = '0';
  32. boolean shine = false;
  33.  
  34. void maquinaDeEstados(char c)
  35. {
  36.    if(c == ESTADO_APAGADO)
  37.     {
  38.       digitalWrite(ledE1,LOW);
  39.       digitalWrite(ledE2,LOW);
  40.       digitalWrite(ledE3,LOW);
  41.       digitalWrite(ledD1,LOW);
  42.       digitalWrite(ledD2,LOW);
  43.       digitalWrite(ledD3,LOW);
  44.       analogWrite(motorEsq,0);
  45.       analogWrite(motorDir,0);
  46.       shine = false;
  47.     }
  48.     else if(c == ESTADO_LED1)
  49.     {
  50.       digitalWrite(ledE1,HIGH);
  51.       digitalWrite(ledD1,HIGH);
  52.       shine = false;
  53.     }
  54.     else if(c == ESTADO_LED2)
  55.     {
  56.       digitalWrite(ledE2,HIGH);
  57.       digitalWrite(ledD2,HIGH);
  58.       shine = false;
  59.     }
  60.     else if(c == ESTADO_LED3)
  61.     {
  62.       shine = true;
  63.     }
  64.     else if(c == ESTADO_LIGARMOTORESQ)
  65.     {
  66.       analogWrite(motorEsq,255);
  67.     }
  68.     else if(c == ESTADO_DESLIGARMOTORESQ)
  69.     {
  70.       analogWrite(motorEsq,0);
  71.     }
  72.     else if(c == ESTADO_LIGARMOTORDIR)
  73.     {
  74.       analogWrite(motorDir,255);
  75.     }
  76.     else if(c == ESTADO_DESLIGARMOTORDIR)
  77.     {
  78.       analogWrite(motorDir,0);
  79.     }
  80.  
  81. }
  82.  
  83. void setup()
  84. {                
  85.   Serial.begin(9600);
  86.  
  87.   shine = false;
  88.   pinMode(13, OUTPUT);
  89.   digitalWrite(13,LOW);
  90.   pinMode(ledE1, OUTPUT);    
  91.   pinMode(ledE2, OUTPUT);
  92.   pinMode(ledE3, OUTPUT);
  93.   pinMode(ledD1, OUTPUT);
  94.   pinMode(ledD2, OUTPUT);
  95.   pinMode(ledD3, OUTPUT);
  96.   pinMode(motorEsq, OUTPUT);
  97.   pinMode(motorDir, OUTPUT);
  98.   digitalWrite(ledE1,LOW);
  99.   digitalWrite(ledE2,LOW);
  100.   digitalWrite(ledE3,LOW);
  101.   digitalWrite(ledD1,LOW);
  102.   digitalWrite(ledD2,LOW);
  103.   digitalWrite(ledD3,LOW);
  104.   analogWrite(motorEsq,0);
  105.   analogWrite(motorDir,0);
  106.  
  107.   radio.begin();
  108.   radio.setRetries(15,15);
  109.   radio.startListening();
  110.   // Become the primary receiver (pong back)
  111.   role = role_pong_back;
  112.   radio.openWritingPipe(pipes[1]);
  113.   radio.openReadingPipe(1,pipes[0]);
  114.  
  115. }
  116.  
  117. void loop()
  118. {
  119.  
  120.     if ( role == role_pong_back )
  121.     {
  122.       // if there is data ready
  123.       if ( radio.available() )
  124.       {
  125.         // Dump the payloads until we've gotten everything
  126.         bool done = false;
  127.         while (!done)
  128.         {
  129.           // Fetch the payload, and see if this was the last one.
  130.           done = radio.read( &c, sizeof(c) );
  131.  
  132.           // Spew it
  133.           Serial.println("Got payload: ");
  134.           Serial.println(c);
  135.           maquinaDeEstados(c);
  136.          // Delay just a little bit to let the other unit
  137.          // make the transition to receiver
  138.           delay(20);
  139.         }
  140.  
  141.         // First, stop listening so we can talk
  142.         radio.stopListening();
  143.  
  144.            // Send the final one back.
  145.          //      radio.write( &got_time, sizeof(unsigned long) );
  146.         //      printf("Sent response.\n\r");
  147.  
  148.         // Now, resume listening so we catch the next packets.
  149.         radio.startListening();
  150.        
  151.       }
  152.     }
  153.  
  154.   if (shine)
  155.   {
  156.     digitalWrite(ledE1,HIGH);
  157.     digitalWrite(ledE2,HIGH);
  158.     digitalWrite(ledE3,HIGH);
  159.     digitalWrite(ledD1,HIGH);
  160.     digitalWrite(ledD2,HIGH);
  161.     digitalWrite(ledD3,HIGH);
  162.     delay(100);
  163.     digitalWrite(ledE1,LOW);
  164.     digitalWrite(ledE2,LOW);
  165.     digitalWrite(ledE3,LOW);
  166.     digitalWrite(ledD1,LOW);
  167.     digitalWrite(ledD2,LOW);
  168.     digitalWrite(ledD3,LOW);
  169.     delay(100);
  170.   }
  171.  
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement