Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <IRremote.h>
- // PIN Setup
- #define IR_IN_PIN 2
- #define MOTOR_SPEED 11
- #define MOTOR_IN_1 13
- #define MOTOR_IN_2 12
- // IR Setup
- IRrecv irrecv(IR_IN_PIN);
- decode_results results;
- // State
- unsigned long latestInput = 0;
- unsigned long lastButtonInput = 0;
- void setup() {
- irSetup();
- dcMotorSetup();
- }
- void loop(){
- if(irrecv.decode(&results)) {
- switch(results.value){
- case WILDCARD:
- results.value = lastButtonInput;
- break;
- case GO_FORWARD:
- dcMotorMove(FORWARD);
- lastButtonInput = GO_FORWARD;
- break;
- case GO_BACKWARD:
- dcMotorMove(BACKWARD);
- lastButtonInput = GO_BACKWARD;
- break;
- }
- delay(30);
- irrecv.resume();
- } else {
- if(latestInput || lastButtonInput) {
- dcMotorStop();
- latestInput = 0;
- lastButtonInput = 0;
- }
- }
- }
- void irSetup() {
- irrecv.enableIRIn();
- irrecv.blink13(true);
- }
- void dcMotorSetup() {
- pinMode(MOTOR_SPEED, OUTPUT);
- pinMode(MOTOR_IN_1, OUTPUT);
- pinMode(MOTOR_IN_2, OUTPUT);
- }
- void dcMotorMove(int direction) {
- switch(direction) {
- case FORWARD:
- digitalWrite(MOTOR_IN_1, HIGH);
- digitalWrite(MOTOR_IN_2, LOW);
- break;
- case BACKWARD:
- digitalWrite(MOTOR_IN_1, LOW);
- digitalWrite(MOTOR_IN_2, HIGH);
- break;
- }
- dcMotorAccelerate();
- }
- void dcMotorAccelerate(int min_speed = 0, int max_speed = 255, int interval = 20) {
- for (int i = min_speed; i =< max_speed; ++i) {
- analogWrite(MOTOR_SPEED, i);
- delay(interval);
- }
- }
- void dcMotorDecelerate(int min_speed = 0, int max_speed = 255, int interval = 20) {
- for (int i = max_speed; i >= min_speed; i++) {
- analogWrite(MOTOR_SPEED, i);
- delay(interval);
- }
- }
- void dcMotorStop() {
- dcMotorDecelerate();
- digitalWrite(MOTOR_IN_1, LOW);
- digitalWrite(MOTOR_IN_2, LOW);
- }
- enum Moves {
- GO_FORWARD = 0xFF629D,
- GO_BACKWARD = 0xFFA857,
- TURN_RIGHT = 0xFFC23D,
- TURN_LEFT = 0xFF22DD,
- TURN_RIGHT_90 = 0xFFE21D,
- TURN_LEFT_90 = 0xFFA25D,
- TURN_180 = 0xFF02FD,
- WILDCARD = 0xFFFFFFFF
- }
- enum Direction {
- FORWARD,
- BACKWARD
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement