Advertisement
DuboisP

Tank_with_IR_Receiver

Nov 26th, 2024
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.87 KB | Source Code | 0 0
  1. /*
  2.     author : Patrick Dubois
  3.     licence : none
  4.  
  5.  
  6.     needs : IRremote Arduino Library  Version 3.3.0 (at least)
  7.     needs :  Adafruit Motor Shield library Version 1.0.1 (for Adafruit Motor shield V1)
  8. */
  9.  
  10.  
  11. /*
  12.     Specify which protocol(s) should be used for decoding.
  13.     If no protocol is defined, all protocols are active.
  14. */
  15.  
  16. //#define DECODE_DENON        // Includes Sharp
  17. //#define DECODE_JVC
  18. //#define DECODE_KASEIKYO
  19. //#define DECODE_PANASONIC    // the same as DECODE_KASEIKYO
  20. //#define DECODE_LG
  21. #define DECODE_NEC            // Includes Apple and Onkyo
  22. //#define DECODE_SAMSUNG
  23. //#define DECODE_SONY
  24. //#define DECODE_RC5
  25. //#define DECODE_RC6
  26.  
  27. //#define DECODE_BOSEWAVE
  28. //#define DECODE_LEGO_PF
  29. //#define DECODE_MAGIQUEST
  30. //#define DECODE_WHYNTER
  31.  
  32. #define DECODE_DISTANCE     // universal decoder for pulse width or pulse distance protocols
  33. #define DECODE_HASH         // special decoder for all protocols
  34.  
  35. #include <AFMotor.h>
  36.  
  37. #define IR_USE_AVR_TIMER1   // by default used timer is TIMER2, also used by Adafruit_Motor-Shield-v1  - tx = pin 9  
  38. #define IR_RECEIVE_PIN      2    // To be compatible with interrupt example, pin 2 is chosen here.    
  39.  
  40. #include <IRremote.hpp>
  41.  
  42. AF_DCMotor R_motor(1);          // defines Right motor connector
  43. AF_DCMotor L_motor(2);          // defines Left motor connector
  44.  
  45. IRrecv irrecv(IR_RECEIVE_PIN);  // create instance of 'irrecv'
  46.  
  47. int iSpeed = 64;                // 48 - 240
  48. int irSpeed;                    // relative speed when turning
  49. bool bAvant;
  50.  
  51. void setup() {
  52.  
  53.   Serial.begin(115200);         // sets up Serial library at 115200 bps
  54.  
  55.   IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
  56. }
  57.  
  58. void loop() {
  59.  
  60.   int nValue = 0;
  61.  
  62.   if (IrReceiver.decode()) { // have we received an IR signal
  63.  
  64.     //    IrReceiver.printIRResultShort(&Serial);
  65.     //    IrReceiver.printIRResultRawFormatted(&Serial, true);
  66.     //    IrReceiver.printIRResultShort(&Serial);
  67.     //    Serial.println(IrReceiver.decodedIRData.protocol);
  68.     //    Serial.println(IrReceiver.decodedIRData.decodedRawData);
  69.     //    Serial.println(IrReceiver.decodedIRData.address);
  70.     //    Serial.println(IrReceiver.decodedIRData.command);
  71.     nValue = IrReceiver.decodedIRData.command;
  72.  
  73.     Serial.println();
  74.     Serial.println(nValue);
  75.  
  76.     switch (nValue) {
  77.  
  78.       case 69:                          // POWER
  79.       case 71: {                        // FUNC/STOP
  80.           //changes the following values to make the robot  drive as straight as possible
  81.           R_motor.run(RELEASE);         // turns L motor off
  82.           L_motor.run(RELEASE);         // turns R motor off
  83.           break;
  84.         }
  85.       case 67: {                        // FAST FORWARD - TURN RIGHT ON RUNNING
  86.           if (bAvant) {
  87.             L_motor.run(FORWARD);
  88.             R_motor.setSpeed(irSpeed);
  89.             R_motor.run(FORWARD);
  90.           }
  91.           else {
  92.             R_motor.run(BACKWARD);
  93.             L_motor.setSpeed(irSpeed);
  94.             L_motor.run(BACKWARD);
  95.           }
  96.           break;
  97.         }
  98.       case 68: {                        // FAST BACK - TURN LEFT ON RUNNING
  99.           if (bAvant) {
  100.             R_motor.run(FORWARD);
  101.             L_motor.setSpeed(irSpeed);
  102.             L_motor.run(FORWARD);
  103.           }
  104.           else {
  105.             L_motor.run(BACKWARD);
  106.             R_motor.setSpeed(irSpeed);
  107.             R_motor.run(BACKWARD);
  108.           }
  109.           break;
  110.         }
  111.       case 64: {                        // START / PAUSE
  112.           break;
  113.         }
  114.       case 21: {                        // VOL- - SPEED DOWN
  115.           iSpeed = iSpeed > 32 ? iSpeed - 16 : iSpeed;
  116.           irSpeed = iSpeed / 4;
  117.           L_motor.setSpeed(iSpeed);      // sets L motor speed
  118.           R_motor.setSpeed(iSpeed);      // sets R motor speed
  119.           break;
  120.         }
  121.       case 70: {                        // VOL+ - SPEED UP
  122.           iSpeed = iSpeed < 240 ? iSpeed + 16 : iSpeed;
  123.           irSpeed = iSpeed / 4;
  124.           L_motor.setSpeed(iSpeed);      // sets L motor speed
  125.           R_motor.setSpeed(iSpeed);      // sets R motor speed
  126.           break;
  127.         }
  128.       case 7: {                         // DOWN
  129.           bAvant = false;
  130.           L_motor.setSpeed(iSpeed);     // sets L motor speed
  131.           R_motor.setSpeed(iSpeed);     // sets R motor speed
  132.           R_motor.run(BACKWARD);
  133.           L_motor.run(BACKWARD);
  134.           break;
  135.         }
  136.       case 9: {                         // UP
  137.           bAvant = true;
  138.           L_motor.setSpeed(iSpeed);     // sets L motor speed
  139.           R_motor.setSpeed(iSpeed);     // sets R motor speed
  140.           R_motor.run(FORWARD);
  141.           L_motor.run(FORWARD);
  142.           break;
  143.         }
  144.       case 25: {                        // EQ
  145.           break;
  146.         }
  147.       case 13: {                        // ST/REPT
  148.           break;
  149.         }
  150.       case 22: {                        // 0
  151.           break;
  152.         }
  153.       case 12: {                        // 1
  154.           break;
  155.         }
  156.       case 24: {                        // 2
  157.           break;
  158.         }
  159.       case 94: {                        // 3
  160.           break;
  161.         }
  162.       case 8: {                         // 4  - TURN LEFT ON PLACE
  163.           R_motor.run(FORWARD);
  164.           L_motor.run(BACKWARD);
  165.           break;
  166.         }
  167.       case 28: {                        // 5
  168.           break;
  169.         }
  170.       case 90: {                        // 6  - TURN RIGHT ON PLACE
  171.           L_motor.run(FORWARD);
  172.           R_motor.run(BACKWARD);
  173.           break;
  174.         }
  175.       case 66: {                        // 7
  176.           break;
  177.         }
  178.       case 82: {                        // 8
  179.           break;
  180.         }
  181.       case 74: {                        // 9
  182.           break;
  183.         }
  184.     }   // end switch
  185.     IrReceiver.resume(); // receive the next value
  186.   }   // end if
  187.   delay(250);
  188.  
  189. }   // end loop
  190.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement