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

pi

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

 

 

 

Bình luận

Bình luận