Lập trình cơ bản Raspberry Pi với GPIO
Sau quá trình nghiên cứu raspberry pi3
Hôm nay mình giới thiệu lập trình cơ bản Wiringpi dùng c
Thư viện wiring hỗ trợ nhiều thư viện giống arduino
1. Kiến thức phần cứng
các bạn truy cập https://pinout.xyz/pinout/wiringpi
để xem GPIO wiring pi
Hôm nay mình sẽ lập trình nháy led WiringPi
đầu tiên các bạn cd /home/pi
sau đó : mkdir led
tới thư mục led :cd led
tạo mới led.c :sudo nano led.c
sau đó viết chương trình đơn giản
các bạn cần cài đặt thư viện wringpi trước khi lập trình. Có thể tải thư viện và xem hướng dẫn cài đặt tại Wiringpi-project.
Bài 1: lập trình bật tắt LED
#include <wiringPi.h>
int main(void)
{
wiringPiSetupGpio();
pinMode(17, OUTPUT);
while(1){
digitalWrite(17, HIGH);
}
return 0;
1. Thêm thư viện Wiringpi : #include<wiringPi.h>
2. Thiết lập chọn kiểu đánh số chân GPIO
wiringPiSetupGpio();
Wiringpi có 4 kiểu chọn đánh số chân.
– wiringPiSetup() : thiết lập đánh số theo cách riêng của Pi
– wiringPiSetupGpio() : đánh số theo Broadcom GPIO – tương ứng với chân của hình 1.
– wiringPiSetupPhys() : đánh số theo chân header trên board.
– wiringPiSetupSys() : đánh số theo system class GPIO.
Để tiện sử dụng. Tất cả các chương trình chúng ta sẽ sử dụng cách đánh số thứ 2.
3. Chọn và thiết lập Output chân LED
pinMode(pin, OUTPUT);
//pinMode(pin, INPUT);
4. Bật-tắt LED (2 kiểu)
digitalWrite(17, 1); //digitalWrite(17, HIGH);
digitalWrite(17, 0); //digitalWrite(17, LOW);
5. Thực hiện build chương trình trên terminal
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
Các bạn có thể sẽ ngạc nhiên khi kết thúc chương trình mà led vẫn sáng vì trạng thái thiết lập hiện tại của chương trình không bị thay đổi. Mình trình bày phần này kỹ hơn ở mục cuối của bài.
Bài 2 : Nhấp nháy LED
#include <wiringPi.h>
int main(void)
{
wiringPiSetupGpio();
pinMode(17, OUTPUT);
while(1)
{
digitalWrite(17, HIGH);
delay(1000);
digitalWrite(17, LOW);
delay(1000);
}
return 0;
}
Bài 3 : Điều khiển LED bằng button
Chương trình thực hiện yêu cầu đơn giản, khi bạn nhất button thì đèn sẽ sáng. Chuẩn bị sơ đồ phần cứng như sau.
#include <wiringPi.h>
int main(void)
{
wiringPiSetupGpio();
pinMode(17, OUTPUT);
pinMode(2, INPUT);
pullUpDnControl (2, PUD_UP);
digitalWrite(17, 0);
while(1)
{
if(!digitalRead(2)){
digitalWrite(17, 1);
// digitalWrite(17, !digitalRead(17));
delay(300);
}
}
return 0;
}
Thiết lập input cho chân button
pinMode(pin, INPUT);
– Đọc tín hiệu từ button
pullUpDnControl (pin, PUD_UP);
digitalRead(pin);
Kéo điện trở pin lên cao và đọc tín hiệu từ button.
– Để thực hiện ấn button để bật và tắt LED, các bạn hãy sửa dòng code này
//digitalWrite(17, 1);
digitalWrite(17, !digitalRead(17));
Nó sẽ đọc giá trị trên chân GPIO rồi thiết lập giá trị đảo ngược cho chân GPIO đó. (dù chúng ta không set chân đó là input).
Để biên dịch gcc -o led led.c
chạy file ./led