入坑树莓派-03-按键控制
按键指的是这几个:
分别对应这几个端口:
四个按键,四个灯,正好我们可以用按键控制灯。
python代码如下:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
BTN_1 = 6
BTN_2 = 13
BTN_3 = 19
BTN_4 = 26
LED_1 = 17
LED_2 = 27
LED_3 = 22
LED_4 = 5
GPIO.setup(BTN_1, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(BTN_2, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(BTN_3, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(BTN_4, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(LED_1, GPIO.OUT)
GPIO.setup(LED_2, GPIO.OUT)
GPIO.setup(LED_3, GPIO.OUT)
GPIO.setup(LED_4, GPIO.OUT)
while True:
if (GPIO.input(BTN_1) == GPIO.LOW):
GPIO.output(LED_1, GPIO.HIGH)
else:
GPIO.output(LED_1, GPIO.LOW)
if (GPIO.input(BTN_2) == GPIO.LOW):
GPIO.output(LED_2, GPIO.HIGH)
else:
GPIO.output(LED_2, GPIO.LOW)
if (GPIO.input(BTN_3) == GPIO.LOW):
GPIO.output(LED_3, GPIO.HIGH)
else:
GPIO.output(LED_3, GPIO.LOW)
if (GPIO.input(BTN_4) == GPIO.LOW):
GPIO.output(LED_4, GPIO.HIGH)
else:
GPIO.output(LED_4, GPIO.LOW)
time.sleep(0.01)
C代码如下:
#include <bcm2835.h>
#include <stdio.h>
#include <unistd.h>
// gcc -o button button.c -lbcm2835
#define KEY_1 6
#define KEY_2 13
#define KEY_3 19
#define KEY_4 26
#define PIN_R 17
#define PIN_Y 27
#define PIN_G 22
#define PIN_B 5
int main(int argc, char **argv)
{
if (!bcm2835_init())
return -1;
bcm2835_gpio_fsel(KEY_1, BCM2835_GPIO_FSEL_INPT);
bcm2835_gpio_fsel(KEY_2, BCM2835_GPIO_FSEL_INPT);
bcm2835_gpio_fsel(KEY_3, BCM2835_GPIO_FSEL_INPT);
bcm2835_gpio_fsel(KEY_4, BCM2835_GPIO_FSEL_INPT);
bcm2835_gpio_set_pud(KEY_1, BCM2835_GPIO_PUD_UP);
bcm2835_gpio_set_pud(KEY_2, BCM2835_GPIO_PUD_UP);
bcm2835_gpio_set_pud(KEY_3, BCM2835_GPIO_PUD_UP);
bcm2835_gpio_set_pud(KEY_4, BCM2835_GPIO_PUD_UP);
bcm2835_gpio_fsel(PIN_R, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PIN_Y, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PIN_G, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PIN_B, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_write(PIN_R, LOW);
bcm2835_gpio_write(PIN_Y, LOW);
bcm2835_gpio_write(PIN_G, LOW);
bcm2835_gpio_write(PIN_B, LOW);
while (1)
{
if(bcm2835_gpio_lev(KEY_1) == 0)
{
bcm2835_gpio_write(PIN_R, HIGH);
while(bcm2835_gpio_lev(KEY_1) == 0)
bcm2835_delay(100);
bcm2835_gpio_write(PIN_R, LOW);
}
if(bcm2835_gpio_lev(KEY_2) == 0)
{
bcm2835_gpio_write(PIN_Y, HIGH);
while(bcm2835_gpio_lev(KEY_2) == 0)
bcm2835_delay(100);
bcm2835_gpio_write(PIN_Y, LOW);
}
if(bcm2835_gpio_lev(KEY_3) == 0)
{
bcm2835_gpio_write(PIN_G, HIGH);
while(bcm2835_gpio_lev(KEY_3) == 0)
bcm2835_delay(100);
bcm2835_gpio_write(PIN_G, LOW);
}
if(bcm2835_gpio_lev(KEY_4) == 0)
{
bcm2835_gpio_write(PIN_B, HIGH);
while(bcm2835_gpio_lev(KEY_4) == 0)
bcm2835_delay(100);
bcm2835_gpio_write(PIN_B, LOW);
}
bcm2835_delay(100);
}
bcm2835_close();
return 0;
}