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后的版本可改为:
//项目十四 – 红外接收管
#include <IRremote.h> //调用IRremote.h库
#include <IRremoteTools.h> //调用IRremoteTools.h库

void setup(){
Serial.begin(9600); //串口波特率设为9600
beginIRremote();
}
void loop() {
//是否接收到解码数据,把接收到的数据存储在变量results中
if (IRrecived()) {
//接收到的数据以16进制的方式在串口输出
Serial.println(getIRresult(), HEX);
resumeIRremote(); // 继续等待接收下一组信号
}
}

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

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

#include <IRremote.h>          //调用IRremote.h库
#include <Servo.h>

// INFRARED
int RECV_PIN = 11;             //定义RECV_PIN变量为11
IRrecv irrecv(RECV_PIN);       //设置RECV_PIN(也就是11引脚)为红外接收端
decode_results results;      //定义results变量为红外结果存放位置
long effectivePressed = 0;       //储存按下一个按钮时,有效的键位值(除去0XFFFFFFFF之后,最新的那个值)

// LED
int ledPin = 10;
boolean ledState = LOW;

// SERVO
Servo myservo;
int pos = 0; // 储存servo位置

void setup(){
   Serial.begin(9600);          //串口波特率设为9600
   irrecv.enableIRIn();         //启动红外解码
   pinMode(ledPin, OUTPUT);
   myservo.attach(9);
   myservo.write(pos);
}

void loop() {
   //是否接收到解码数据,把接收到的数据存储在变量results中
   if (irrecv.decode(&results)) {
            //接收到的数据以16进制的方式在串口输出
            Serial.println(results.value, HEX);

            if (results.value == 0xFD00FF) {
            ledState = !ledState;
            digitalWrite(ledPin, ledState);
            if (ledState) {//按亮IR电源键,正转到180位置
                for (pos = myservo.read(); pos<180; pos+=1){
                  myservo.write(pos);
                  delay(15);
                }
            } else {//按灭IR电源键,反转到0位置
                for (pos = myservo.read(); pos >= 1; pos-=1){
                  myservo.write(pos);
                  delay(15);
                }
            }
            }

            if (results.value == 0xFD50AF || (results.value == 0xFFFFFFFF && effectivePressed == 0xFD50AF)) { // 按下上行按钮,servo正转
            myservo.write(constrain(myservo.read() + 1, 0, 179));
            delay(15);
            }
            if (results.value == 0xFD10EF || (results.value == 0xFFFFFFFF && effectivePressed == 0xFD10EF)) { // 按下下行按钮,servo反转
            myservo.write(constrain(myservo.read() - 1, 0, 179));
            delay(15);
            }
            
            Serial.println(effectivePressed, HEX);
            if (results.value != 0xFFFFFFFF) effectivePressed = results.value;
            
            irrecv.resume();// 继续等待接收下一组信号
      }
}

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:

MoonShine 发表于 2015-7-30 12:49:37

https://mc.dfrobot.com.cn/home.php?mod=space&uid=70171&do=album&picid=1876&goto=up#pic_block

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

给个赞
页: 1 [2] 3
查看完整版本: Arduino教程15--红外遥控数码管「DFR0100 」