请设计一个基于ArduinoUNO开发板的智能控制系统,系统包含带上拉电阻的按键模块、带上拉电阻的LED指示灯、数码管模块和舵机模块,具体功能要求如下。 1) 当按键按下LED指示灯常亮,舵机位于0度位置。(20分) 2) 当按键按下LED指示灯常亮,舵机位于0度位置,并且舵机从初始0度运行至175度。(20分) 3) 当按键按下LED指示灯常亮,舵机位于0度位置,并且舵机从初始0度运行至175度,然后从175度返回至0度,并循环摆动(30分) 4) 数码管同步显示舵机摆动次数,(0度~120度 ~0度)来回算一次,数码管计数器显示加一,最高9次。并对硬件电路和软件设计流程进行简要说明
时间: 2024-03-05 12:49:32 浏览: 54
基于Arduino UNO开发板的智能控制系统如下:
硬件电路设计:
1. 按键模块连接到数字引脚2上,同时接上上拉电阻。
2. LED指示灯连接到数字引脚3上,同时接上上拉电阻。
3. 数码管模块连接到数字引脚4~10上。
4. 舵机模块连接到数字引脚11上。
5. 这些模块都接上电源和接地即可。
软件设计流程:
1. 初始化数码管模块。
2. 设置舵机初始位置为0度。
3. 在主循环中,读取按键状态。
4. 如果按键按下,则点亮LED指示灯,并将舵机转到0度位置。
5. 如果按键按下,则点亮LED指示灯,并将舵机转到175度位置。
6. 如果按键按下,则点亮LED指示灯,并将舵机从0度到175度运行,然后从175度返回至0度,并循环摆动。
7. 每次舵机转到120度时,数码管计数器加一,最高9次。
代码实现:
```
#include <LiquidCrystal.h>
#include <Servo.h>
// 定义按键和LED指示灯引脚
const int buttonPin = 2;
const int ledPin = 3;
// 定义数码管引脚
const int digitPins[] = {4, 5, 6, 7};
const int segmentPins[] = {8, 9, 10, 11, 12, 13};
// 定义舵机引脚
const int servoPin = 11;
// 定义舵机运行角度
const int servoDeg[] = {0, 120, 0};
// 定义全局变量
int count = 0; // 摆动次数计数器
bool isRunning = false; // 舵机是否在运行
// 初始化LCD数码管
LiquidCrystal lcd(4, 5, 6, 7, 8, 9, 10);
// 初始化舵机
Servo servo;
void setup() {
// 初始化数码管
for (int i = 0; i < sizeof(digitPins)/sizeof(int); i++) {
pinMode(digitPins[i], OUTPUT);
}
for (int i = 0; i < sizeof(segmentPins)/sizeof(int); i++) {
pinMode(segmentPins[i], OUTPUT);
}
lcd.begin(2, 16); // 设置LCD数码管列数和行数
// 初始化按键和LED指示灯
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
// 初始化舵机
servo.attach(servoPin);
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
digitalWrite(ledPin, HIGH); // 点亮LED指示灯
if (isRunning) {
return;
}
// 舵机运行至0度位置
servo.write(servoDeg[0]);
delay(1000);
// 舵机运行至175度位置
servo.write(servoDeg[1]);
delay(1000);
// 舵机循环摆动
isRunning = true;
while (isRunning) {
for (int i = 0; i < 2; i++) {
servo.write(servoDeg[i]);
delay(1000);
count++;
if (count >= 9) { // 摆动9次后停止
isRunning = false;
break;
}
}
}
} else {
digitalWrite(ledPin, LOW); // 熄灭LED指示灯
}
// 数码管同步显示摆动次数
int d1 = count % 10;
int d2 = count / 10;
lcd.setCursor(0, 0);
lcd.print(d2);
lcd.print(d1);
}
```
以上就是基于Arduino UNO开发板的智能控制系统的设计和实现,希望能对您有所帮助。
阅读全文