2014-6-5 17:40:42 [显示全部楼层]
74341浏览
楼主: Jane

[入门教程] DFR0100 Arduino教程 16--遥控灯

[复制链接]

droid_noob  见习技师

发表于 2015-2-12 00:58:24

现在试过三种情况:
Case 1:直流电机由Power侧的 5V供电,运行之后整个Uno板似乎工作异常,表现为串口出来的解析值错乱
Case 2:直流电机由 PWM管脚供电,情况与Case 1相同
Case 3:直流电机由Uno板以外的电源供电,比如几节1.5V的电池,这种情况是可以完美工作的

你都可以试一把,不过应该是没法实现这种控制的
我看商城里面有:L298P Motor Shield  这么个东西,如果用上是否就不需要额外的电源支持直流电机工作了呢?有机会请帮忙试一把
回复

使用道具 举报

Jane  高级技匠
 楼主|

发表于 2015-2-13 10:14:36

droid_noob 发表于 2015-2-12 00:58
现在试过三种情况:
Case 1:直流电机由Power侧的 5V供电,运行之后整个Uno板似乎工作异常,表现为串口出来 ...

我知道了,那就是电机供电不足的原因了,电流消耗太大
回复

使用道具 举报

Mr.why  见习技师

发表于 2015-3-8 20:12:03

nivek 发表于 2014-12-14 05:44
我一点下载就会出现:
C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5: ...

https://lamb-mei.com/436/使用-arduino-1-5-x-ide-編譯有引用-irremote-出現-error-tkd2-was-not-declared-in-this-scope/
回复

使用道具 举报

NorrisTong  见习技师

发表于 2015-6-7 21:52:42

nivek 发表于 2014-12-14 05:44
我一点下载就会出现:
C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5: ...


将IRremoteTools.h 也包含到程序中,同时将IRremoteTools中的 int RECV_PIN 改为 11 就可以了

1.6后的版本可改为:
  1. //项目十四 – 红外接收管
  2. #include <IRremote.h> //调用IRremote.h库
  3. #include <IRremoteTools.h> //调用IRremoteTools.h库
  4. void setup(){
  5. Serial.begin(9600); //串口波特率设为9600
  6. beginIRremote();
  7. }
  8. void loop() {
  9. //是否接收到解码数据,把接收到的数据存储在变量results中
  10. if (IRrecived()) {
  11. //接收到的数据以16进制的方式在串口输出
  12.   Serial.println(getIRresult(), HEX);
  13. resumeIRremote(); // 继续等待接收下一组信号
  14. }
  15. }
复制代码
回复

使用道具 举报

linck  见习技师

发表于 2015-7-29 21:21:28

改了一下用遥控器控制SERVO的代码。 按开关键正转到179或反转到0。或者按向上按钮(不放)可以一点一点向前转,按向下按钮(不放)可以一点一点向后转。

  1. #include <IRremote.h>          //调用IRremote.h库
  2. #include <Servo.h>
  3. // INFRARED
  4. int RECV_PIN = 11;             //定义RECV_PIN变量为11
  5. IRrecv irrecv(RECV_PIN);       //设置RECV_PIN(也就是11引脚)为红外接收端
  6. decode_results results;        //定义results变量为红外结果存放位置
  7. long effectivePressed = 0;       //储存按下一个按钮时,有效的键位值(除去0XFFFFFFFF之后,最新的那个值)
  8. // LED
  9. int ledPin = 10;
  10. boolean ledState = LOW;
  11. // SERVO
  12. Servo myservo;
  13. int pos = 0; // 储存servo位置
  14. void setup(){
  15.      Serial.begin(9600);          //串口波特率设为9600
  16.      irrecv.enableIRIn();         //启动红外解码
  17.      pinMode(ledPin, OUTPUT);
  18.      myservo.attach(9);
  19.      myservo.write(pos);
  20. }
  21. void loop() {
  22.      //是否接收到解码数据,把接收到的数据存储在变量results中
  23.      if (irrecv.decode(&results)) {  
  24.             //接收到的数据以16进制的方式在串口输出
  25.             Serial.println(results.value, HEX);
  26.             if (results.value == 0xFD00FF) {
  27.               ledState = !ledState;
  28.               digitalWrite(ledPin, ledState);
  29.               if (ledState) {//按亮IR电源键,正转到180位置
  30.                 for (pos = myservo.read(); pos<180; pos+=1){
  31.                   myservo.write(pos);
  32.                   delay(15);
  33.                 }
  34.               } else {//按灭IR电源键,反转到0位置
  35.                 for (pos = myservo.read(); pos >= 1; pos-=1){
  36.                   myservo.write(pos);
  37.                   delay(15);
  38.                 }
  39.               }
  40.             }
  41.             if (results.value == 0xFD50AF || (results.value == 0xFFFFFFFF && effectivePressed == 0xFD50AF)) { // 按下上行按钮,servo正转
  42.               myservo.write(constrain(myservo.read() + 1, 0, 179));
  43.               delay(15);
  44.             }
  45.             if (results.value == 0xFD10EF || (results.value == 0xFFFFFFFF && effectivePressed == 0xFD10EF)) { // 按下下行按钮,servo反转
  46.               myservo.write(constrain(myservo.read() - 1, 0, 179));
  47.               delay(15);
  48.             }
  49.             
  50.             Serial.println(effectivePressed, HEX);
  51.             if (results.value != 0xFFFFFFFF) effectivePressed = results.value;
  52.             
  53.             irrecv.resume();  // 继续等待接收下一组信号
  54.       }
  55. }
复制代码
回复

使用道具 举报

Jane  高级技匠
 楼主|

发表于 2015-7-30 11:13:08

linck 发表于 2015-7-29 21:21
改了一下用遥控器控制SERVO的代码。 按开关键正转到179或反转到0。或者按向上按钮(不放)可以一点一点向前 ...

谢谢分享~
回复

使用道具 举报

MoonShine  高级技匠

发表于 2015-7-30 12:45:25

老师直接复制代码结果出来这个错误,已经下载了RGBLED的库,也倒进去了,还是报错,不知道什么原因:funk:
回复

使用道具 举报

AVALONXLE  学徒

发表于 2015-11-17 20:49:43

为哈默偶滴晚剑编译出错了(⊙o⊙)?:'(
回复

使用道具 举报

powera  见习技师

发表于 2015-12-11 22:45:23

Jane 发表于 2015-2-13 10:14
我知道了,那就是电机供电不足的原因了,电流消耗太大

请问Jane,对于电机供电不足,在这种情况下如何解决?
就是还是用遥控器,控制LED灯和电机连的风扇
回复

使用道具 举报

说书人  见习技师

发表于 2016-12-4 20:35:16

大神,可以讲讲怎样写遥控蜂鸣器播放固定音乐的代码吗???
回复

使用道具 举报

说书人  见习技师

发表于 2016-12-4 20:35:18

大神,可以讲讲怎样写遥控蜂鸣器播放固定音乐的代码吗???
回复

使用道具 举报

969720505  见习技师

发表于 2016-12-5 23:55:31

droid_noob 发表于 2015-2-10 22:07
## 这图里的 继电器可能型号有点问题,找了个样子有点像的## 总归就是Lesson 14里说的那种6脚的继电器,1 ...

楼主 , 我实验了你这个实验  
连通电路之后,按下开关电机能正常工作,但是此时红外接收器会不断接受一下乱七八糟的信号,即使不按遥控器的开关按钮。  要不断按开关才能让红外接收器捕捉到信号。
把小马达断路后便不会出现此现象,求助楼主解决方案。
回复

使用道具 举报

ignore  学徒

发表于 2017-2-9 08:44:15

在思考这个红外遥控器,怎么采用长按一秒,执行A动作,长按2秒,执行B动作。。。。。
回复

使用道具 举报

李明哲  见习技师

发表于 2017-4-7 13:41:44

你好,想问一下遥控器具体按键对应的值是什么,就是这个:怎么通过遥控器上不同的按键,让舵机转动不同的角度,
回复

使用道具 举报

逍遥自在  见习技师

发表于 2017-10-14 20:53:14

为什么我的检查时它说IRrecv does not name atype
回复

使用道具 举报

逍遥自在  见习技师

发表于 2017-10-14 20:58:42

为什么我的检查时它回复IRrecv does not name a type
回复

使用道具 举报

传宇w  见习技师

发表于 2018-11-1 20:04:09

wanglei830205 发表于 2014-12-18 18:40
我用遥控来控制舵机

出现这个原因是因为arduino IDE库里的RobotIRremote库和你后来加载的库冲突了,解决这个问题最简单的办法,就是把RobotIRremote库这个库删了,重启IDE就好了。
回复

使用道具 举报

云胡不喜  学徒 来自手机

发表于 2018-11-5 11:20:04

Jane 发表于 2014-6-5 17:40
该教程实验平台:Arduino入门套件
上一篇教程:Arduino教程 Lesson 15--红外接收


楼主的接线图是用什么画的啊
回复

使用道具 举报

Jane  高级技匠
 楼主|

发表于 2018-11-6 13:21:52

云胡不喜 发表于 2018-11-5 11:20
楼主的接线图是用什么画的啊

用的inkscape画的
回复

使用道具 举报

小飞侠_  见习技师

发表于 2019-7-8 18:41:52

给个赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail