Arduino R3 红外接收控制小坦克程序

程序功能:通过红外遥控器接收指令,坦克玩具进行前进、后退和行进中的炮塔转动

#include <Unistep2.h>//步进电动机库

#include <IRremote.h>//马达库

#define STEPS 4096

int steps = -STEPS;

Unistep2 stepper(8, 9, 10, 11, STEPS, 1000);// IN1, IN2, IN3, IN4, 總step數, 每步的延遲(in micros)

int RECV_PIN =7;

int runNum = 0;

decode_results results;

IRrecv irrecv(RECV_PIN);

#define A_1A 3 // A_1A控制A馬達的前進(HIGH)、後退(LOW)

#define A_1B 4 // A_1B控制A馬達的速度 0~255 ,LOW表示停止

#define B_1A 5 // B_1A控制B馬達的前進(HIGH)、後退(LOW)

#define B_1B 6 // B_1B控制B馬達的速度 0~255,LOW表示停止

 

int highSpeed = 200;

int lowSpeed = 100;

#define Speed 150

void setup()

{

    Serial.begin(9600);

    irrecv.enableIRIn();

    pinMode(A_1A,OUTPUT);

    pinMode(A_1B,OUTPUT);

    pinMode(B_1A,OUTPUT);

    pinMode(B_1B,OUTPUT);

    digitalWrite(A_1A,LOW);

    digitalWrite(A_1B,LOW);

    digitalWrite(B_1A,LOW);

    digitalWrite(B_1B,LOW);

}

 

//車子停止

void stopcar(){

    digitalWrite(A_1A,LOW);

    digitalWrite(A_1B,LOW);

    digitalWrite(B_1A,LOW);

    digitalWrite(B_1B,LOW);

 

//車子向前走

void forward(){

    digitalWrite(A_1A,HIGH);

    analogWrite(A_1B,LOW);

    digitalWrite(B_1A,HIGH);

    analogWrite(B_1B,LOW);

}

 

//車子向後走

void backward(){

    digitalWrite(A_1A,LOW);

    analogWrite(A_1B,Speed);

    digitalWrite(B_1A,LOW);

    analogWrite(B_1B,Speed);

}

//車子右轉

void turnRight(){

    digitalWrite(A_1A,LOW);

    analogWrite(A_1B,LOW);

    digitalWrite(B_1A,HIGH);

    analogWrite(B_1B,LOW);

}

//車子左轉

void turnLeft(){

    digitalWrite(A_1A,HIGH);

    analogWrite(A_1B,LOW);

    digitalWrite(B_1A,LOW);

    analogWrite(B_1B,LOW);

}

void loop()

{

  stepper.run();  //步進機啟動

  //红外接收

   if (irrecv.decode()) {  

          Serial.println(irrecv.decodedIRData.command);

          switch(irrecv.decodedIRData.command){

            case 70:

             runNum = 0;

             stepper.moveTo(runNum);

            break;

            case 69:

              runNum = runNum + 409;

              stepper.moveTo(runNum);

              //stepper.run();  

            break;

            case 71:

             runNum = runNum - 409;

             stepper.moveTo(runNum);

             // stepper.run();  

            break;

            case 68:

              backward();

            break;

            case 64:

             forward();

            break;

            case 67:

             stopcar();

            break;

            case 7:

             turnLeft();

            break;

            case 21:

              turnRight();

            break;

          }

          irrecv.resume();   

    }

 

参考博文:https://blog.jmaker.com.tw/tag/arduino_getting_started/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值