用arduino实现按下开关1 舵机旋转180度,1602显示屏显示“garage open”.按下开关2 同一个舵机反向旋转180度,1602显示屏显示“garage close” 用millis函数将舵机和1602显示屏分开
时间: 2024-05-07 20:21:36 浏览: 144
好的,我来给你提供一个大致的实现思路。
首先,你需要准备以下材料:
- Arduino开发板
- 舵机
- 两个开关
- 1602液晶显示屏
- 杜邦线若干
接下来,你需要按照下面的步骤进行操作:
1. 连接硬件
将舵机的控制线连接到Arduino板的数字引脚9上,将两个开关分别连接到数字引脚2和3上,将1602显示屏的SDA、SCL、VCC、GND引脚分别连接到对应的Arduino引脚上。
2. 编写代码
首先,你需要定义一些变量,如舵机控制引脚、两个开关引脚、1602显示屏对象等。
然后,你需要编写一个函数来将舵机旋转到指定的角度,这里可以使用Arduino自带的Servo库来实现。
接着,你需要编写一个函数来显示指定的文字,这里可以使用LiquidCrystal库来实现。
最后,你需要在主函数中使用millis函数来判断是否需要旋转舵机和更新显示屏内容,具体实现可以参考下面的代码:
```
#include <Servo.h>
#include <LiquidCrystal.h>
Servo myservo;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int switch1 = 2;
int switch2 = 3;
int angle = 0;
unsigned long lastTime = 0;
unsigned long interval = 1000;
bool isOpen = false;
void setup() {
myservo.attach(9);
pinMode(switch1, INPUT_PULLUP);
pinMode(switch2, INPUT_PULLUP);
lcd.begin(16, 2);
lcd.print("Garage Close");
}
void loop() {
if (millis() - lastTime >= interval) {
if (isOpen) {
angle = 0;
myservo.write(angle);
lcd.clear();
lcd.print("Garage Close");
isOpen = false;
} else {
angle = 180;
myservo.write(angle);
lcd.clear();
lcd.print("Garage Open");
isOpen = true;
}
lastTime = millis();
}
if (digitalRead(switch1) == LOW) {
angle = 180;
myservo.write(angle);
lcd.clear();
lcd.print("Garage Open");
isOpen = true;
lastTime = millis();
}
if (digitalRead(switch2) == LOW) {
angle = 0;
myservo.write(angle);
lcd.clear();
lcd.print("Garage Close");
isOpen = false;
lastTime = millis();
}
}
```
3. 测试运行
将代码上传到Arduino板上,按下开关1,舵机旋转180度,1602显示屏显示“Garage Open”;按下开关2,舵机反向旋转180度,1602显示屏显示“Garage Close”。
以上就是基本实现的步骤,你可以根据自己的需求对代码进行进一步优化和调整。
阅读全文