本帖最后由 datefire 于 2022-4-21 00:48 编辑
一、功能要求:利用Arduino开发板和一些元器件实现抽水和排水的功能。
二、设计分析
用两个直流电机潜水泵当作抽水泵和排水泵,用电池盒提供电源,连接一个继电器控制开启与关闭,继电器的IN端连到Arduino引脚,通过该引脚的高低电平切换控制水泵开启关闭。
按键连接到Arduino的引脚,按键按下时信号传到开发板从而控制继电器的引脚,这样就可以实现按键控制水泵。
三、硬件选取
Ardunio UNOR3开发板
Ardunio UNOR3电源
1路光耦-高低电平继电器模块×2
直流电机小潜水泵×2
按键开关×2
10k电阻×2
四节五号电池盒×2
南孚五号电池×8
杜邦线若干
四、硬件电路连接
电路分析:
按键开关连接一个10k电阻作为上拉电阻稳定信号,一端接地,一端接Arduino引脚。
继电器引脚连接:
NC端——水泵
COM端——电池
VCC端——VCC
GND端——GND
IN端——Arduino引脚
(本人上图没有继电器引脚图,特此补充下图,对照连接即可)
五、代码
#define pumpPin 8 //抽水泵引脚
#define pumpButtonPin 7 //抽水按键控制
#define drainPin 9 //排水泵引脚
#define drainButtonPin 6 //排水按键控制
int val1 = 0; //按键现在电平
int old_val1 = 0; //按键之前电平
int state1 = 0;
int val2 = 0;
int old_val2 = 0;
int state2 = 0;
void setup() {
Serial.begin(9600);
pinMode(pumpPin, OUTPUT);
pinMode(pumpButtonPin, INPUT_PULLUP);
pinMode(drainPin, OUTPUT);
pinMode(drainButtonPin, INPUT_PULLUP);
}
void loop() {
val1 = digitalRead(pumpButtonPin);
if ((val1 == HIGH) && (old_val1 == LOW)) //按下按键
{
state1 = 1 - state1;
delay(40);
}
old_val1 = val1;
if (state1 == 1)
{
digitalWrite(pumpPin, HIGH);
}
else
{
digitalWrite(pumpPin, LOW);
}
val2 = digitalRead(drainButtonPin);
if ((val2 == HIGH) && (old_val2 == LOW))
{
state2 = 1 - state2;
delay(40);
}
old_val2 = val2;
if (state2 == 1)
{
digitalWrite(drainPin, HIGH);
}
else
{
digitalWrite(drainPin, LOW);
}
}
|