遥控宠物喂食器
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要的工具和机器
| ||||
|
应用和在线服务
|
关于这个项目
通过这个简单的 Arduino 项目,您可以使用遥控器喂养您的宠物。您只需要一个 Arduino Uno 板(或类似的)、一个塑料瓶、一个伺服电机(不必非常强大)、一个电视遥控器、IR 接收器 (TS0P1738) 和一小块纸板。
让我们开始吧!
安装 IR 库:
与arduino关联的第一件事就是下载IR库。
从下面的链接下载 IR 库并安装它:https://github.com/z3t0/Arduino-IRremote
如果您不知道如何安装库,请点击以下链接:https://www.arduino.cc/en/guide/libraries
解码红外信号:
首先,您需要按照给定的电路图连接部件:
您可以在下方查看 TSOP1738 的引脚:
使用以下代码解码红外遥控器:
/*IR 传感器的引脚连接到 Arduino,如下所示:Pin 1 to Vout (pin 11 on Arduino)Pin 2 to GNDPin 3 to Vcc (+5v from Arduino)*/#include int IRpin =11;IRrecvirrecv(IRpin);decode_results 结果;void setup(){Serial.begin(9600); ircv.enableIRIn(); // 启动接收器}void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, DEC); // 打印序列'results.value'irrecv.resume(); // 接收下一个值 }}
- 打开 Arduino IDE 并上传代码
- 打开串行监视器
- 将遥控器对准传感器并按下每个按钮
- 您可以看到每个按钮的不同数字
考虑任意两个按钮,并记下解码值。在我的例子中,我选择了电源按钮和模式按钮。
我得到以下值:
- 电源按钮=33441975
- 模式按钮 =33446055
我们将使用这两个值来控制伺服电机的旋转。您需要在下一步给出的程序中添加这两个值:
让我们设置最终的硬件!
最后一环!
- 将舵机的信号引脚连接到arduino上的引脚#9
- 将舵机的 VCC 和 GND 引脚连接到 arduino 上的 5V VCC 和 GND
- 伺服器将粘在塑料瓶的一端,然后旋转一块足够小的纸板以关闭瓶子的开口,从而挡住食物。
- 如果所有硬件设置都正确连接,您只需编译以下草图并将其上传到电路板即可。
#include #include int IRpin =11; // 红外传感器引脚IRrecvirrecv(IRpin);decode_results results;Servo myservo;void setup(){ Serial.begin(9600); ircv.enableIRIn(); // 启动接收器 myservo.attach(9); // 将引脚 9 上的伺服器连接到伺服器对象}void loop() { if (irrecv.decode(&results)) {irrecv.resume(); // 接收下一个值 } if (results.value ==33441975) // 根据您的 IR 遥控按钮编号更改 { myservo.write(0);延迟(15); } if (results.value ==33446055) // 根据您的红外遥控按钮编号更改 { myservo.write(30);延迟(15); }}
现在,您可以通过这个简单的项目远程控制宠物喂食器分配器的打开。 :-)
快乐制作!
代码
- 解码_IR
- IRremote_Servo_Control
Decode_IRArduino
使用此代码解码红外遥控器/* 红外传感器的引脚连接到 Arduino,如下所示: 引脚 1 到 Vout(Arduino 上的引脚 11) 引脚 2 到 GND 引脚 3 到 Vcc(来自 Arduino 的 +5v)*/#包括int IRpin =11;IRrecvirrecv(IRpin);decode_results results;void setup(){Serial.begin(9600); ircv.enableIRIn(); // 启动接收器}void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, DEC); // 打印序列'results.value'irrecv.resume(); // 接收下一个值 } }
IRremote_Servo_ControlArduino
在此代码中添加来自遥控器的解码值#include#include int IRpin =11; // 红外传感器引脚IRrecvirrecv(IRpin);decode_results results;Servo myservo;void setup(){ Serial.begin(9600); ircv.enableIRIn(); // 启动接收器 myservo.attach(9); // 将引脚 9 上的伺服连接到伺服对象 }void loop() { if (irrecv.decode(&results)) {irrecv.resume(); // 接收下一个值 } if (results.value ==33441975) // 根据您的 IR 遥控按钮编号更改 { myservo.write(0);延迟(15); } if (results.value ==33446055) // 根据您的红外遥控按钮编号更改 { myservo.write(30);延迟(15); } }
示意图
制造工艺