使用arduino ide开发电路,用3个光敏电阻控制3个led灯,用millis函数进行多任务处理,光敏电阻的阻值大于200,灯亮起。光敏电阻输入对应a0,a1,a2串口,灯的输出对应a3,a4,a5串口,并在单位时间6000ms内计算光敏电阻感应到物体靠近(数值>200)的次数靠近次数越多,灯亮度越低,6000ms后,次数重置为0
时间: 2023-06-27 18:01:15 浏览: 195
首先,我们需要连接3个光敏电阻和3个LED灯到Arduino板子上。将3个光敏电阻分别连接到A0、A1和A2引脚,3个LED灯分别连接到A3、A4和A5引脚。接下来,我们需要编写程序进行控制:
```c
// 定义3个光敏电阻输入引脚和3个LED灯输出引脚
int LDR1 = A0;
int LDR2 = A1;
int LDR3 = A2;
int LED1 = A3;
int LED2 = A4;
int LED3 = A5;
// 定义计时器和次数变量
unsigned long previousMillis = 0;
unsigned long currentMillis = 0;
int count = 0;
void setup() {
// 将3个LED灯的引脚设置为输出模式
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
// 打开串口
Serial.begin(9600);
}
void loop() {
// 读取3个光敏电阻的数值
int value1 = analogRead(LDR1);
int value2 = analogRead(LDR2);
int value3 = analogRead(LDR3);
// 判断光敏电阻的数值是否大于200
if (value1 > 200) {
digitalWrite(LED1, HIGH);
} else {
digitalWrite(LED1, LOW);
}
if (value2 > 200) {
digitalWrite(LED2, HIGH);
} else {
digitalWrite(LED2, LOW);
}
if (value3 > 200) {
digitalWrite(LED3, HIGH);
} else {
digitalWrite(LED3, LOW);
}
// 计算单位时间内光敏电阻感应到物体靠近的次数
currentMillis = millis();
if (currentMillis - previousMillis >= 6000) {
Serial.print("Count: ");
Serial.println(count);
// 根据次数控制灯的亮度
if (count <= 10) {
analogWrite(LED1, 255);
analogWrite(LED2, 255);
analogWrite(LED3, 255);
} else if (count <= 20) {
analogWrite(LED1, 128);
analogWrite(LED2, 128);
analogWrite(LED3, 128);
} else {
analogWrite(LED1, 0);
analogWrite(LED2, 0);
analogWrite(LED3, 0);
}
// 重置计数器
count = 0;
previousMillis = currentMillis;
} else {
// 统计次数
if (value1 > 200 || value2 > 200 || value3 > 200) {
count++;
}
}
}
```
这个程序通过读取3个光敏电阻的数值,判断是否大于200,控制3个LED灯的亮灭。同时,使用`millis()`函数计算单位时间6000ms内光敏电阻感应到物体靠近的次数,并根据次数控制灯的亮度。最后,在6000ms结束后重置计数器。
阅读全文