arduino教学:红外遥控车
参考:
- https://create.arduino.cc/projecthub/ryanchan/how-to-use-the-l298n-motor-driver-b124c5
- https://howtomechatronics.com/tutorials/arduino/arduino-dc-motor-control-tutorial-l298n-pwm-h-bridge/
#include "IRremote.h"
#define IRRECV_1 0xFFA25D
#define IRRECV_2 0xFF629D
#define IRRECV_3 0xFFE21D
#define IRRECV_4 0xFF22DD
#define IRRECV_5 0xFF02FD
#define IRRECV_6 0xFFC23D
#define IRRECV_7 0xFFA25D
#define IRRECV_8 0xFFE01F
#define IRRECV_9 0xFF906F
#define IRRECV_0 0xFF9867
#define IRRECV_Hashtag 0xFFB04F // #号
#define IRRECV_Asterisk 0xFF6897 // *号
#define IRRECV_OK 0xFF38C7
#define IRRECV_UP 0xFF18E7
#define IRRECV_LEFT 0xFF10EF
#define IRRECV_RIGHT 0xFF5AA5
#define IRRECV_DOWN 0xFF4AB5#define BAUD 115200 //串口波特率
#define BOARDLEDPIN 13 //板载led接口#define L298ENA 9
#define L298ENB 10
#define L298IN1 7
#define L298IN2 8
#define L298IN3 5
#define L298IN4 6#define highSPEED 90
#define lowSPEED 70
#define RECV_PIN 11IRrecv irrecv(RECV_PIN);
decode_results IRResults;
unsigned int lastIRKey = 0;
bool running = false;void alertBlink(unsigned int t, unsigned long deltms);
void (*resetFunc)(void) = 0; //控制主控板自动重启
void setup()
{Serial.begin(BAUD);irrecv.enableIRIn();pinMode(BOARDLEDPIN,INPUT);// wait for Leonardo enumeration, others continue immediatelywhile (!Serial);motorStop();alertBlink(10, 500);
}void loop()
{if (irrecv.decode(&IRResults)){Serial.println(IRResults.value,HEX);switch (IRResults.value){case IRRECV_OK:lastIRKey = 20;running = !running;break;case IRRECV_LEFT:lastIRKey = 21;break;case IRRECV_UP:lastIRKey = 22;break;case IRRECV_RIGHT:lastIRKey = 23;break;case IRRECV_DOWN:lastIRKey = 24;break;default:break;}irrecv.resume(); // Receive the next value}Serial.println(String("lastIRKey is :")+lastIRKey);motorMotion(lastIRKey);
}/*** 功能:让板载led以一定的时间间隔闪烁* t:闪烁次数,当t=0时,不闪烁,一直亮。* deltms:闪烁间隔的毫秒数。*/
void alertBlink(unsigned int t, unsigned long deltms)
{if (t == 0){digitalWrite(BOARDLEDPIN, HIGH);}for (int i = 0; i < t; i++){digitalWrite(BOARDLEDPIN, HIGH);delay(deltms);digitalWrite(BOARDLEDPIN, LOW);delay(deltms);}
}
void motorMotion(unsigned int lastIRKey)
{switch (lastIRKey){case 20:if (running){motorForward();}else{motorStop();}break;case 21:if (running)motorTurnLeft();break;case 22:if (running)motorForward();break;case 23:if (running)motorTurnRight();break;case 24:if (running)motorBack();break;default:break;}
}
void motorForward()
{analogWrite(L298ENA, highSPEED);digitalWrite(L298IN1, HIGH);digitalWrite(L298IN2, LOW);analogWrite(L298ENB, highSPEED);digitalWrite(L298IN3, HIGH);digitalWrite(L298IN4, LOW);
}void motorBack()
{analogWrite(L298ENA, highSPEED);digitalWrite(L298IN1, LOW);digitalWrite(L298IN2, HIGH);analogWrite(L298ENB, highSPEED);digitalWrite(L298IN3, LOW);digitalWrite(L298IN4, HIGH);
}void motorTurnLeft()
{analogWrite(L298ENA, highSPEED);digitalWrite(L298IN1, HIGH);digitalWrite(L298IN2, LOW);analogWrite(L298ENB, lowSPEED);digitalWrite(L298IN3, HIGH);digitalWrite(L298IN4, LOW);}void motorTurnRight()
{analogWrite(L298ENA, lowSPEED);digitalWrite(L298IN1, HIGH);digitalWrite(L298IN2, LOW);analogWrite(L298ENB, highSPEED);digitalWrite(L298IN3, HIGH);digitalWrite(L298IN4, LOW);
}void motorStop()
{analogWrite(L298ENA, 0);analogWrite(L298ENB, 0);
}
arduino教学:红外遥控车相关推荐
- Arduino人体红外模块控制
Arduino人体红外模块控制 示例代码 /** Arduino UNO R3(或Arduino Nano)连接红外人体感应模块检测是否有人*/int irSensorPin = 3;//Arduin ...
- arduino 的红外遥控解码
测试发现 遥控器的角度不一样 或者有反射 导致解析的码也不一样 程序 /** IRrecvDemo-LED* =====================功能说明================ ...
- Arduino利用红外感应控制舵机
实现功能:当红外感应到人时,控制舵机转动180度 参考:基于Arduino的多种方式控制舵机(舵机.电位器.蓝牙). 硬件连接: 舵机连接: Arduino Micro Servo 9g 5V 红线 ...
- Arduino人体红外感应+继电器+蜂鸣器
实现功能:当人体红外感应到人时,蜂鸣器报警,继电器模块闭合:反之,继电器模块断开. 模块连接: Arduino人体红外和继电器连接同Arduino人体红外感应+继电器. 蜂鸣器连接: Arduino ...
- arduino学习笔记十--Arduino 读红外测距传感器
Arduino 读红外测距传感器GP2D12 实例,仅供大家参考! 器材:Arduino 开发板,GP2D12,1602 字符液晶,连接线若干. GP2D12 是日本SHARP 公司生产的红外距离传感 ...
- (学习)Arduino无线通信——红外
(学习)Arduino无线通信--红外 1.硬件准备 (1) 一体化红外接收头 (2) 红外遥控器 2.红外接收读取 /*<Arduino程序设计基础>中的代码不再适用最新的IRremot ...
- 基于Arduino的红外遥控器控制MP3播放
基于Arduino的红外遥控器控制MP3播放(MP3音乐模块.红外接收模块.红外遥控器) ✨通过红外遥控器来控制音乐播放
- Arduino + GP2D12红外测距传感器+LCD1602
一: GP2Y0A21YKIR Sensor是日本夏普公司推出的一款性价比高.最常用的红外测距传感器.其与GP2D12测量射程相同,但探测面积略有增加,可用来对物体的距离进行测量,实现轮式机器人的避障 ...
- arduino/mixly红外发射接收模块
一.资料 http://资料链接:https://pan.baidu.com/s/1idRcrVCxQ5zWLh59EFpi9g 提取码:n8ud 默认波特率9600 串口通信,可以发送也可以接收 发 ...
最新文章
- pytorch 优化器 机器学习 调参
- opencv图像灰化_opencv读入图像、灰度化、归一化、向量化
- mipi和isp处理_VS-RK3399 在linux系统下面调试Mipi camera接口介绍
- java项目逻辑重要吗_JAVA小项目,逻辑+感觉+总结?java小白你做到了吗(源码+教程)...
- 分治算法求最大最小值c语言,[蓝桥杯][算法提高VIP]和最大子序列 (C语言代码)分治法...
- wow mysql dbc_DBC中悲观锁介绍附案例详解
- IDEA:生成javadoc/断点调试/缓存和索引的清理
- 特斯拉起诉小鹏汽车员工窃取 30 多万份商业机密,何小鹏回应
- 前端遮罩层实现_cocos creator--游戏开奖功能组件《刮刮卡》特效实现
- 版本控制、协同开发工具比较
- 无法进入recovery模式?fastboot来拯救
- C#读取系统注册表信息
- Linux入侵痕迹清理
- 是时候要说再见了,春风十里,不如邮你!
- Redis命令:scan实现模糊查询
- Facebook产品功能以及营销
- Mysterious Bacteria(唯一质因子解+素数筛)
- 查找两个数储存在二进制中相同的个数
- 专门除COD有机物的树脂工艺
- 【Windows 10 驱动程序 已解决】重装 Win 10 系统后 电脑无法识别外接屏幕。投影:你的电脑不能投影到其他屏幕。请尝试重新安装驱动程序或使用其他视频卡。