参考:

  1. https://create.arduino.cc/projecthub/ryanchan/how-to-use-the-l298n-motor-driver-b124c5
  2. 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教学:红外遥控车相关推荐

  1. Arduino人体红外模块控制

    Arduino人体红外模块控制 示例代码 /** Arduino UNO R3(或Arduino Nano)连接红外人体感应模块检测是否有人*/int irSensorPin = 3;//Arduin ...

  2. arduino 的红外遥控解码

    测试发现   遥控器的角度不一样  或者有反射  导致解析的码也不一样 程序 /** IRrecvDemo-LED* =====================功能说明================ ...

  3. Arduino利用红外感应控制舵机

    实现功能:当红外感应到人时,控制舵机转动180度 参考:基于Arduino的多种方式控制舵机(舵机.电位器.蓝牙). 硬件连接: 舵机连接: Arduino Micro Servo 9g 5V 红线 ...

  4. Arduino人体红外感应+继电器+蜂鸣器

    实现功能:当人体红外感应到人时,蜂鸣器报警,继电器模块闭合:反之,继电器模块断开. 模块连接: Arduino人体红外和继电器连接同Arduino人体红外感应+继电器. 蜂鸣器连接: Arduino ...

  5. arduino学习笔记十--Arduino 读红外测距传感器

    Arduino 读红外测距传感器GP2D12 实例,仅供大家参考! 器材:Arduino 开发板,GP2D12,1602 字符液晶,连接线若干. GP2D12 是日本SHARP 公司生产的红外距离传感 ...

  6. (学习)Arduino无线通信——红外

    (学习)Arduino无线通信--红外 1.硬件准备 (1) 一体化红外接收头 (2) 红外遥控器 2.红外接收读取 /*<Arduino程序设计基础>中的代码不再适用最新的IRremot ...

  7. 基于Arduino的红外遥控器控制MP3播放

    基于Arduino的红外遥控器控制MP3播放(MP3音乐模块.红外接收模块.红外遥控器) ✨通过红外遥控器来控制音乐播放

  8. Arduino + GP2D12红外测距传感器+LCD1602

    一: GP2Y0A21YKIR Sensor是日本夏普公司推出的一款性价比高.最常用的红外测距传感器.其与GP2D12测量射程相同,但探测面积略有增加,可用来对物体的距离进行测量,实现轮式机器人的避障 ...

  9. arduino/mixly红外发射接收模块

    一.资料 http://资料链接:https://pan.baidu.com/s/1idRcrVCxQ5zWLh59EFpi9g 提取码:n8ud 默认波特率9600 串口通信,可以发送也可以接收 发 ...

最新文章

  1. pytorch 优化器 机器学习 调参
  2. opencv图像灰化_opencv读入图像、灰度化、归一化、向量化
  3. mipi和isp处理_VS-RK3399 在linux系统下面调试Mipi camera接口介绍
  4. java项目逻辑重要吗_JAVA小项目,逻辑+感觉+总结?java小白你做到了吗(源码+教程)...
  5. 分治算法求最大最小值c语言,[蓝桥杯][算法提高VIP]和最大子序列 (C语言代码)分治法...
  6. wow mysql dbc_DBC中悲观锁介绍附案例详解
  7. IDEA:生成javadoc/断点调试/缓存和索引的清理
  8. 特斯拉起诉小鹏汽车员工窃取 30 多万份商业机密,何小鹏回应
  9. 前端遮罩层实现_cocos creator--游戏开奖功能组件《刮刮卡》特效实现
  10. 版本控制、协同开发工具比较
  11. 无法进入recovery模式?fastboot来拯救
  12. C#读取系统注册表信息
  13. Linux入侵痕迹清理
  14. 是时候要说再见了,春风十里,不如邮你!
  15. Redis命令:scan实现模糊查询
  16. Facebook产品功能以及营销
  17. Mysterious Bacteria(唯一质因子解+素数筛)
  18. 查找两个数储存在二进制中相同的个数
  19. 专门除COD有机物的树脂工艺
  20. 【Windows 10 驱动程序 已解决】重装 Win 10 系统后 电脑无法识别外接屏幕。投影:你的电脑不能投影到其他屏幕。请尝试重新安装驱动程序或使用其他视频卡。

热门文章

  1. 09年软件评测师考试下午试题答案
  2. 电子书各种格式的转换常见问题
  3. docker commit镜像以及数据卷技术
  4. SpringBoot入门系列(二)如何返回统一的Json数据格式
  5. 如何把FLAC音频转换成MP3格式
  6. java aes ecb_java使用AES加密解密 AES-128-ECB加密
  7. 用什么软件可以修改PDF文件,软件的操作方法
  8. SpringBoot集成Liquibase
  9. aps自动排程助企业缩短制造周期
  10. yuv 格式之 Semi Planar和Planar