# 项目介绍 #
晾衣服是每个家庭的日常家务,看似很小的事情,但是确实苦恼颇多。对于属于上班族的妈妈们来说,经常为突然的降雨而坐立不安。我俩就想如果能为妈妈做点什么就好了,这不刚学习了创客,先做个模型试试,或许真的可以由工厂生产呢!
我们设计的智能晾衣架有三种模式:
(1)手动模式。通过两个按钮来操控实现晾衣服和收衣服。现在一想,我们利用一个按钮也够了。当时做作品时,编程水平还低,原谅原谅自己!
(2)遥控模式。通过一个红外遥控器控制晾衣杆的收放,比如在厨房做饭时,突然下雨了,就不用手足无措了。
(3)智能模式。天黑了,自动收衣服。下雨了,自动收衣服。
下面是演示视频:
材料清单
- Arduino Uno主控板 X1
- IO扩展板 X1
- 舵机 X2
- 光线传感器 X1
- 雨滴传感器 X1
- 红外遥控模块(套) X1
- 按键开关 X2
# 编程软件 # 米思齐0.998
步骤1 制定方案
两人讨论交流,制定制作方案,包括要实现的功能、需要使用的硬件和其他材料、工具、程序流程图等。
步骤2 准备材料
根据方案,准备所需的硬件和其他材料:1块Arduino主控板、1块扩展板、2个舵机、1个光线传感器、1个雨滴传感器、1套红外遥控模块、2个按键开关、若干根小木棒、瓦楞纸、杜邦线。
步骤3 硬件搭建
将扩展板安装到Arduino主控板上,然后将其他元件连接到扩展板上。
步骤4 编写程序
利用Mixly0.998软件编写程序,测试硬件连接是否正确,并编写项目程序。
步骤5 晾衣架制作、硬件安装
使用一个废弃纸盒做底座,用于封装电子元件及固定支架。
利用小木棒制作晾衣架的支架。
将舵机通过热熔胶固定在支架上,进行阶段性测试。
步骤6 制作阳台、安装雨滴传感器、光线传感器
用瓦楞纸制作阳台模型。
步骤7 调试、美化
#include <Servo.h>
#include <IRremote.h>
long ir_item;
Servo servo_4;
Servo servo_5;
void 收衣服() {
servo_4.write(135);
delay(0);
servo_5.write(130);
delay(0);
delay(500);
servo_4.write(105);
delay(0);
servo_5.write(100);
delay(0);
delay(500);
servo_4.write(85);
delay(0);
servo_5.write(80);
delay(0);
}
void 晒衣服() {
servo_4.write(105);
delay(0);
servo_5.write(100);
delay(0);
delay(500);
servo_4.write(135);
delay(0);
servo_5.write(130);
delay(0);
delay(500);
servo_4.write(165);
delay(0);
servo_5.write(160);
delay(0);
}
IRrecv irrecv_8(8);
decode_results results_8;
void setup(){
servo_4.attach(4);
servo_5.attach(5);
Serial.begin(9600);
irrecv_8.enableIRIn();
收衣服();
pinMode(2, INPUT);
pinMode(3, INPUT);
}
void loop(){
if (irrecv_8.decode(&results_8)) {
ir_item=results_8.value;
String type="UNKNOWN";
String typelist[14]={"UNKNOWN", "NEC", "SONY", "RC5", "RC6", "DISH", "SHARP", "PANASONIC", "JVC", "SANYO", "MITSUBISHI", "SAMSUNG", "LG", "WHYNTER"};
if(results_8.decode_type>=1&&results_8.decode_type<=13){
type=typelist[results_8.decode_type];
}
Serial.print("IR TYPE:"+type+" ");
Serial.println(ir_item,HEX);
if (ir_item == 0xFF30CF) {
晒衣服();
}
if (ir_item == 0xFF18E7) {
收衣服();
}
irrecv_8.resume();
} else {
}
Serial.println(analogRead(A0));
Serial.println(analogRead(A1));
if (analogRead(A0) < 800) {
servo_4.write(85);
delay(0);
servo_5.write(80);
delay(0);
}
if (analogRead(A1) > 600) {
servo_4.write(85);
delay(0);
servo_5.write(80);
delay(0);
}
if (digitalRead(2) == 0) {
收衣服();
}
if (digitalRead(3) == 0) {
晒衣服();
}
}
评论