智能晾衣
#设计介绍
智能晾衣系统使用开源硬件arduino作为主控,涉及按键开关的使用,雨水感应器的使用和直流电机的使用,还会涉及一些机械的运用。
通电→按键选择模式
①雨水感应模式 → 1号LED指示灯亮
→雨水传感器检测外界是否存雨水,并向主控板arduino传输信号
→传感器检测不到雨水时,电机执行顺时针转动,推出晾衣架,并当运行到限位开关时停止
→传感器检测到雨水时,电机执行逆时针转动,收回晾衣架,并当运行到限位开关时停止
② 按键模式 → 2号LED指示灯亮
→通过两个按键开关控制电机顺时针或逆时针转动来控制衣架进出
→按下按键1,电机执行顺时针转动,推出晾衣架,并当运行到限位开关时停止
→按下按键2,电机执行逆时针转动,收回晾衣架,并当运行到限位开关时停止
雨水传感器原理:感应板上没有水滴时,DO输出为高电平(1),开关指示灯灭,滴上一滴水,DO输出为低电频(0),开关指示灯亮,刷掉上面的水滴,又恢复到输出高电频(1)
碰撞开关原理:模块输出低电频(0);无碰撞,输出高电频(1)
按键开关:数字电频按下高电频(1),释放低电频(0)
第一行
第一行:雨水传感器DO接入的主控板的管脚数为第 10排信号脚
第二三行:电机接入主控板的管脚数第二和第三排的信号脚,输出的高低电平来控制电机的正转或反转。
第四行:碰撞开关接入第五排信号角,控制电机停止。
第五六行:电机接入主控板的管脚数,第二和第三排的信号角,同时输出低电平时,电机停止。
第七行:雨水传感器DO接入主控板的管角数为第十排的信号脚。
第八九行:电机接入主控板的管脚数,第二和第三排的信号脚,低电平来控制电机的症状或反转。
第十行:碰撞开关接入第十排信号脚,控制电机停止。
第十一十二行:电机接入主控板的管脚数第二和第三排的信号脚同时输出低电平时,电机停止。
第一行:八号管脚接入一个按键
第二三行:电机接入主控板的管脚数,第二和第三排的信号脚,高低电平来控制电机的正转或反转。
第四行:碰撞开关接入第五排信号角,控制电机停止。
第五六行:电机接入主控板的管脚数,第二和第三排的信号角同时输出低电平时,电机停止。
第七行:九号管脚接入一个按键
第八九行:电机接入主控板的管脚数,第二和第三排的信号角,低电平来控制电机的正转或反转。
第十行:碰撞开关接入第四排信号角,控制电机停止。
第十一十二行:电机接入主控板的管脚数第二和第三排的信号角,同时输出低电平时,电机停止。
arduino代码:
volatile boolean A;
void anzan() {
if (!digitalRead(8)) {
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
if (!digitalRead(5)) {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
}
}
if (!digitalRead(9)) {
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
if (!digitalRead(4)) {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
}
}
}
void yixai() {
if (!digitalRead(10)) {
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
if (!digitalRead(5)) {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
}
} else if (digitalRead(10)) {
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
if (!digitalRead(4)) {
digitalWrite(2,LOW);
digitalWrite(3,LOW);
}
}
}
void setup(){
A = false;
pinMode(7, INPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, INPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(5, INPUT);
pinMode(4, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
}
void loop(){
if (digitalRead(7)) {
delay(10);
while (digitalRead(7)) {
delay(10);
}
A = !A;
digitalWrite(12,(!A));
digitalWrite(11,A);
}
if (digitalRead(7) == !A) {
yixai();
} else {
anzan();
}
}