红外坦克

编程入门 行业动态 更新时间:2024-10-10 03:33:35

红外<a href=https://www.elefans.com/category/jswz/34/1770038.html style=坦克"/>

红外坦克

 

 

 

 

 

该模块具有极小的尺寸,仅5.5cm×5.5cm。支持电压范围7-24V,具有欠压保护功能。双路电机接口,每路额定输出电流 7A;瞬间峰值电流可达50A。类似 L298N 控制逻辑,每路都支持三线控制调速、正反转及刹车。控制信号使用灌电流驱动方式,支持绝大多数单片机直接驱动;使用光耦对全部控制信号进行隔离,避免电机动作时的回流电流对控制信号造成干扰;并且本模块具有静电泄放回路,避免了因静电造成危险。
配合Arduino源码,可以轻松实现电机控制。创客时代,我们能为您带来更多! 

产品参数:
工作电压(VM):DC 7 ~ 24 V,欠压保护
支持电压范围: 6.5 ~ 27V
控制信号高电平(Vhi):DC 3.0 ~ 6.5V(兼容3.3V和5V TTL电平)
控制信号低电平(Vli):DC 0 ~ 0.8V
输出通道数:2路
每路控制型号电流:3mA ~ 11mA
每路额定输入电流:7A
每路峰值电流:50A
支持PWM调速方式
PWM最小有效脉宽:5us
工作温度:-25 ~ 80°C
尺寸:55mm * 55mm
固定孔:M3
重量:32g

引脚说明:

.php?title=(SKU:_DRI0041)_12/24V_7A_160W%E5%8F%8C%E8%B7%AF%E7%9B%B4%E6%B5%81%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8%E6%A8%A1%E5%9D%97

接线图:

 

 

#include <IRremote.h>     // IRremote库声明//电机PIN
const int IN1=5;
const int IN2=4;
const int ENA=6;
const int IN3=8;
const int IN4=7;
const int ENB=9;
//电机速度
int speed = 100;//红外接收
int RECV_PIN = 3;
IRrecv irrecv(RECV_PIN);
decode_results results;
long control[7][3] = {//遥控器矫正数字{16580863, 16613503, 16597183},{16589023, 16621663, 16605343},{16584943, 16617583, 16601263},{16593103, 16625743, 16609423},{16582903, 16615543, 16599223},{16591063, 16623703, 16607383},{16586983, 16619623, 16603303}
};//初始化电机PIN
void initMotor(){pinMode(IN1, OUTPUT);pinMode(IN2, OUTPUT);pinMode(ENA, OUTPUT);pinMode(IN4, OUTPUT);pinMode(IN3, OUTPUT);pinMode(ENB, OUTPUT);
}
//初始化红外接收
void initIR(){irrecv.enableIRIn();
}void setup() {//初始电机
     initMotor();//初始化红外接收
     initIR();
}void loop() {/**Motor1_Brake();Motor2_Brake();delay(100);Motor1_Forward(200);//电机正转,PWM调速Motor2_Forward(200);//电机正转,PWM调速delay(1000);Motor1_Brake();Motor2_Brake();delay(100);Motor1_Backward(200);//电机反转,PWM调速Motor2_Backward(200);//电机反转,PWM调速delay(1000);**///
 if (irrecv.decode(&results)){Serial.println(results.value, HEX);//以16进制换行输出接收代码if (results.value == 4294967295) {//long click
} else {if (results.value == control[0][0]) {Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2Motor1_Backward(speed);//电机反转,PWM调速} else if (results.value == control[0][1]) {//上Motor1_Backward(speed);//电机反转,PWM调速Motor2_Backward(speed);//电机反转,PWM调速} else if (results.value == control[0][2]) {Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2Motor2_Backward(speed);//电机反转,PWM调速} else if (results.value == control[1][0]) {//左
} else if (results.value == control[1][1]) {//中Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2} else if (results.value == control[1][2]) {//右
} else if (results.value == control[2][0]) {Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2Motor1_Forward(speed);//电机正转,PWM调速} else if (results.value == control[2][1]) {//下Motor1_Forward(speed);//电机正转,PWM调速Motor2_Forward(speed);//电机正转,PWM调速} else if (results.value == control[2][2]) {Motor1_Brake();//停止电机1Motor2_Brake();//停止电机2Motor2_Forward(speed);//电机正转,PWM调速} else if (results.value == control[3][0]) {//0
} else if (results.value == control[3][1]) {} else if (results.value == control[3][2]) {//st
} else if (results.value == control[4][0]) {//1speed = 100;} else if (results.value == control[4][1]) {//2speed = 200;} else if (results.value == control[4][2]) {//3speed = 300;} else if (results.value == control[5][0]) {//4speed = 400;} else if (results.value == control[5][1]) {//5speed = 500;} else if (results.value == control[5][2]) {//6speed = 600;} else if (results.value == control[6][0]) {//7speed = 700;} else if (results.value == control[6][1]) {//8speed = 800;} else if (results.value == control[6][2]) {//9speed = 900;}}irrecv.resume(); // 接收下一个值
  }delay(100);
}void Motor1_Forward(int Speed) //电机1正转,Speed值越大,电机转动越快
{digitalWrite(IN1,HIGH);digitalWrite(IN2,LOW);analogWrite(ENA,Speed);
}void Motor1_Backward(int Speed) //电机1反转,Speed值越大,电机转动越快
{digitalWrite(IN1,LOW);digitalWrite(IN2,HIGH);analogWrite(ENA,Speed);
}
void Motor1_Brake()              //电机1刹车
{digitalWrite(IN1,LOW);digitalWrite(IN2,LOW);
}
void Motor2_Forward(int Speed) //电机2正转,Speed值越大,电机转动越快
{digitalWrite(IN3,HIGH);digitalWrite(IN4,LOW);analogWrite(ENB,Speed);
}void Motor2_Backward(int Speed) //电机2反转,Speed值越大,电机转动越快
{digitalWrite(IN3,LOW);digitalWrite(IN4,HIGH);analogWrite(ENB,Speed);
}
void Motor2_Brake()
{digitalWrite(IN3,LOW);digitalWrite(IN4,LOW);
}

 

转载于:.html

更多推荐

红外坦克

本文发布于:2024-02-06 20:33:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1751196.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:坦克

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!