[Raspberry Pi] - Bài 3: Lập trình GPIO và điều khiển LED - BeeLab

Wednesday, December 14, 2016

[Raspberry Pi] - Bài 3: Lập trình GPIO và điều khiển LED



Trong bài này tôi sẽ hướng dẫn cách sử dụng các chân GPIO của Raspberry Pi để điều khiển các thiết bị (đèn Led) cũng như nhận tín hiệu đầu vào (nút bấm)
1. Tải và cài đặt thư viện bcm2835
  • Bước 1: Vào thư mục Desktop:
cd /home/pi/Desktop/ 
  • Bước 2: Tạo một thư mục Programming:
mkdir Programming
  • Bước 3: Vào thư mục Programming:
cd Programming
  • Bước 4: download thư viện “bcm2835-1.37”
wget http://www.airSpayce.com/mikem/bcm2835/bcm2835-1.39.tar.gz
  • Bước 5: giải nén file “bcm2835-1.37.tar.gz”
tarzxvf bcm2835-1.37.tar.gz
  • Bước 6: vào thư mục vừa giải nén xong “bcm2835-1.37”
cd bcm2835-1.37
  • Bước 7: Chạy configure:
sudo ./configure
  • Bước 8: chạy makefile cho thư viện:
make
  • Bước 9: Cài đặt makefile vừa tạo ra:
sudo make install

2. Lập trình output ra LED cơ bản.
Phần này hướng dẫn cách lập trình GPIO để điều khiển nhấp nháy đèn Led.
  • Bước 1: Thoát khỏi thư mục “bcm2835-1.39” và tao một thư mục “blink”:
cd ..
mkdir blink
  • Bước 2: Vào thư mục blink vừa được tạo và tạo một chương trình có tên là “$blink.c”:
cd /blink
sudo nano blink.c
Chương trình blink.c
#include <bcm2835.h>
// Blinks on RPi Plug P1 pin 11 (which is GPIO pin 17)
#define PIN RPI_V2_GPIO_P1_11
int main(int argc, char **argv)
{
// If you call this, it will not actually access the GPIO
// Use for testing
// bcm2835_set_debug(1);
if (!bcm2835_init())
return 1;
// Set the pin to be an output
bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);
// Blink
while (1)
{
// Turn it on
bcm2835_gpio_write(PIN, HIGH);
// wait a bit
bcm2835_delay(500);
// turn it off
bcm2835_gpio_write(PIN, LOW);
// wait a bit
bcm2835_delay(500);
}
bcm2835_close();
return 0;
}
  • Bước 3: biên dịch chương trình “c” sẽ tạo ra file “blink
gcc –o blink blink.c -l bcm2835
  • Bước 4: Chạy file vừa được biên dịch xong :
sudo ./blink

3. Lập trình Input chân GPIO
  • Các bước thực hiện tạo file.c cũng như quy trình biên dịch giống như trong phần 2 lập trình Output ra LED(nháy LED).
  • Bước 1: Tạo một thư mục có tên là input
mkdir input
  • Bước 2: Vào thư mục input và tạo một chương trình có tên là “input.c”
cd /input
sudo nano input.c
Chương trình input.c
#include <bcm2835.h>
#include <stdio.h>
// Input on RPi pin GPIO 15
#define PIN RPI_GPIO_P1_15
int main(int argc, char **argv)
{
// If you call this, it will not actually access the GPIO
// Use for testing
// bcm2835_set_debug(1);
if (!bcm2835_init())
return 1;
// Set RPI pin P1-15 to be an input
bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_INPT);
// with a pullup
bcm2835_gpio_set_pud(PIN, BCM2835_GPIO_PUD_UP);
// Blink
while (1)
{
// Read some data
uint8_t value = bcm2835_gpio_lev(PIN);
printf("read from pin 15: %d\n", value);
// wait a bit
delay(500);
}bcm2835_close();
return 0;}
  • Bước 3: biên dịch chương trình “blink.c” sẽ tạo ra file “blink”
gcc –o input input.c -l bcm2835
  • Bước 4: Chạy file vừa được biên dịch xong :
sudo ./input