用按键控制小灯泡亮程序
时间: 2024-05-06 21:20:11 浏览: 179
以下为Arduino代码实现:
```
int led = 13; // 将LED连接到数字引脚13
int button = 7; // 将按钮连接到数字引脚7
int state = 0; // 初始化状态变量为0
void setup() {
pinMode(led, OUTPUT); // 将LED引脚设置为输出模式
pinMode(button, INPUT); // 将按钮引脚设置为输入模式
}
void loop() {
state = digitalRead(button); // 读取按钮状态
if (state == HIGH) { // 如果按钮被按下
digitalWrite(led, HIGH); // 点亮LED
} else { // 如果按钮没有被按下
digitalWrite(led, LOW); // 关闭LED
}
}
```
将按钮连接到数字引脚7,将LED连接到数字引脚13,然后将按钮引脚设置为输入模式,将LED引脚设置为输出模式。在`loop()`函数中,通过`digitalRead()`函数读取按钮的状态,如果按钮状态为HIGH,即被按下,那么通过`digitalWrite()`函数点亮LED;否则关闭LED。
相关问题
三个按键控制八个流水灯亮灭的程序
要编写一个简单的程序,使用三个按键控制八个流水灯(LED)的亮灭,我们可以假设每个按键对应两个相邻的灯泡,通过轮流点亮和熄灭这两个灯泡来实现。这里是一个基本的Python示例,我们使用GPIO库在Raspberry Pi上实现:
```python
import RPi.GPIO as GPIO
import time
# 定义灯泡列表和按键
lights = [7, 8, 9, 10, 11, 12, 13, 15] # GPIO pin numbers for lights
buttons = [4, 17, 27] # GPIO pins for buttons
GPIO.setmode(GPIO.BCM)
def setup():
GPIO.setup(lights, GPIO.OUT)
GPIO.setup(buttons, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def light_cycle(i):
GPIO.output(lights[i], GPIO.HIGH) # Turn on the light
time.sleep(0.5) # Short delay
GPIO.output(lights[i], GPIO.LOW) # Turn off the light
def button_handler(pin):
if GPIO.input(pin) == False: # Button is pressed
index = buttons.index(pin)
light_cycle(index * 2) # Switch on/off every two lights
light_cycle(index * 2 + 1)
def main():
setup()
while True:
for button in buttons:
button_handler(button)
time.sleep(0.1) # Small delay to debounce the buttons
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
GPIO.cleanup() # Clean up GPIO pins when interrupted
```
在这个程序中,`setup()`函数初始化GPIO,并设置按键为输入模式、灯泡为输出。`light_cycle(i)`函数负责开关指定位置的灯,`button_handler(pin)`则监听按键,当按下时切换相应范围内的灯。`main()`函数持续监控按键并响应。
用52单片机,双向可控硅,过零检测,控制220v的灯泡实现8个亮度调节,运用两个按键,一个按键控制亮度增加,一个按键控制亮度减小的程序
以下是用52单片机,双向可控硅,过零检测,控制220v的灯泡实现8个亮度调节,运用两个按键,一个按键控制亮度增加,一个按键控制亮度减小的程序:
```
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ZC = P3^2; // 过零检测引脚
sbit SCR = P1^0; // 双向可控硅控制引脚
uchar count = 0; // 计数器,用于控制灯泡亮度
void delay(uint xms); // 延时函数
void init(); // 初始化函数
void main() {
init(); // 初始化
while(1) {
if (ZC == 0) { // 如果检测到过零
if (count < 8) { // 如果亮度还没有达到最大
SCR = 1; // 双向可控硅导通
delay(count + 1); // 延时的时间决定灯泡亮度
SCR = 0; // 双向可控硅截止
} else { // 如果亮度已经达到最大
SCR = 1; // 双向可控硅导通
delay(10); // 延时最大,灯泡亮度最高
SCR = 0; // 双向可控硅截止
}
}
}
}
void init() {
ZC = 1; // 过零检测引脚初始化为高电平
SCR = 0; // 双向可控硅控制引脚初始化为低电平
}
void delay(uint xms) {
uchar i, j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}
```
接下来,我们需要添加按键控制功能。我们假设按键1(P3.3)是增加亮度的按键,按键2(P3.4)是减小亮度的按键。当按键1被按下时,计数器 count 的值加 1;当按键2 被按下时,计数器 count 的值减 1(如果计数器的值已经为 0,则不再减小)。修改后的程序如下:
```
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit ZC = P3^2; // 过零检测引脚
sbit SCR = P1^0; // 双向可控硅控制引脚
sbit BTN1 = P3^3; // 按键1,用于增加亮度
sbit BTN2 = P3^4; // 按键2,用于减小亮度
uchar count = 0; // 计数器,用于控制灯泡亮度
void delay(uint xms); // 延时函数
void init(); // 初始化函数
void main() {
init(); // 初始化
while(1) {
if (BTN1 == 0) { // 如果按键1被按下
if (count < 8) // 如果亮度还没有达到最大
count++; // 计数器加 1
}
if (BTN2 == 0) { // 如果按键2被按下
if (count > 0) // 如果亮度还没有达到最小
count--; // 计数器减 1
}
if (ZC == 0) { // 如果检测到过零
if (count < 8) { // 如果亮度还没有达到最大
SCR = 1; // 双向可控硅导通
delay(count + 1); // 延时的时间决定灯泡亮度
SCR = 0; // 双向可控硅截止
} else { // 如果亮度已经达到最大
SCR = 1; // 双向可控硅导通
delay(10); // 延时最大,灯泡亮度最高
SCR = 0; // 双向可控硅截止
}
}
}
}
void init() {
ZC = 1; // 过零检测引脚初始化为高电平
SCR = 0; // 双向可控硅控制引脚初始化为低电平
}
void delay(uint xms) {
uchar i, j;
for (i = xms; i > 0; i--)
for (j = 110; j > 0; j--);
}
```
现在,我们可以通过按下按键1和按键2,来控制灯泡的亮度。当按键1被按下时,亮度会增加;当按键2被按下时,亮度会减小。计数器 count 的取值范围为 0 到 8,对应灯泡的亮度为最低到最高。
阅读全文