Lập trình Raspberry Pi với C++ - Ví dụ về LED và nút nhấn

I. Giới thiệu

Hôm nay, chúng ta sẽ tìm cách nói chuyện với Raspberry Pi bằng ngôn ngữ C++. Thay vì sử dụng các ngôn ngữ Python, NodeJS thì C++ là một ngôn ngữ rất gần gũi với những ai đã có một nền tảng Arduino vững chắc. C++ cơ bản đủ để lập trình Raspberry pi cũng rất dễ học ( C++ cơ bản thôi nha...còn chuyên nghiệp thì là ngôn ngữ khó nhất rồi ). Vì vậy, mình sẽ cùng các bạn khám phá nó!!! Nào cùng bắt đầu thôi!!!

II. Chuẩn bị

III. Kết nối

Trước khi kết nối, bạn tham khảo sơ đồ chân Raspberry pi 2 dưới đây

Bạn nối theo sơ đồ sau ( ở đây mình dùng chân 18 ):

IV. Lập trình

a. Cài đặt thư viện

  • 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"

tar –zxvf 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

Ok!!! Thế là xong phần thư viện nhé

b. Lập trình với led 

  • Đầu tiên, bạn tạo một thư mục blink, sau đó..tạo một chương trình có tên là “blink.c”:

cd /blink
sudo nano blink.c

Code cho blink.c nhé:

#include <bcm2835.h>// Load thư viện
#define PIN RPI_V2_GPIO_P1_18 // chân PIN là chân 18
int main(int argc, char **argv)
{

    if (!bcm2835_init())
        return 1;
    
    //setup
    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);// set chân PIN là OUTPUT
    
    //loop
    // Bắt đầu code chính
    while (1)
    {
        bcm2835_gpio_write(PIN, HIGH);//digitalWrite(PIN, HIGH);
        bcm2835_delay(500);//delay(500)
        bcm2835_gpio_write(PIN, LOW);//digitalWrite(PIN, LOW);
        bcm2835_delay(500);//delay(500);
    }
    bcm2835_close();// Close bcm2835
    return 0;// trả về 0 khi chương trình kết thúc
}

Sau đó, các bạn biên dịch chương trình “c” sẽ tạo ra file “blink

gcc –o blink blink.c -l bcm2835

Chạy file vừa được biên dịch xong :

sudo ./blink

Hưởng thụ thành quả thôi!!!!

c. Đọc giá trị INPUT

  • Đầu tiên cũng tạo một file input.c như trên nhé

Code cho input.c:

#include <bcm2835.h>
#include <stdio.h>
#define PIN RPI_GPIO_P1_15// PIN là chân 15
int main(int argc, char **argv)
{
    if (!bcm2835_init())
        return 1;// nếu thư viện chưa sẵn sàng... báo lỗi (1) rồi kết thúc chương trình
    
    //code setup
    bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_INPT);//pinMode(PIN, INPUT);
    bcm2835_gpio_set_pud(PIN, BCM2835_GPIO_PUD_UP);
    
    // Code loop
    while (1)
    {
        uint8_t value = bcm2835_gpio_lev(PIN);//int value = digitalRead(PIN);
        printf("Giá trị chân PIN 15 là: %d\n", value);//Serial.print("Giá trị PIN 15 là:");
        // Serial.println(value);
        
        bcm2835_delay(500);//delay(500);
    }
    bcm2835_close();
    return 0;
}

Biên dịch code rồi chạy giống như trên là ok

V. Lời kết

Trên đây, là cách lập trình C++ cơ bản để điều khiển chân GPIO với raspberry Pi. Chúc các bạn thành công!!! 

lên
17 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Bộ điều khiển PID - ứng dụng phần 2 - xe dò line dùng thuật toán PID

Tiép nối bài viết về xe dò line cảm ơn Đỗ Hữu Toàn đã viết hộ mình phần 4. hôm nay mình sẽ làm cho chiếc xe dò line đi mượt và có hồn hơn 

lên
34 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Bổ trợ cho dự án Arduino - Phần 1: Giới thiệu công nghệ in 3D

Bài hôm nay, mình sẽ giới thiệu về công nghệ in 3D (3D Printing) - Một công nghệ tuyệt vời có thể làm thay đổi cả thế giới, và những ứng dụng tuyệt vời của nó trong các dự án Arduino

lên
24 thành viên đã đánh giá bài viết này hữu ích.

C# ( C Sharp ) - Nhận dữ liệu từ Arduino

Lấy nguồn cảm hứng từ bài viết C# (C Sharp) – Một cách điều khiển Arduino bằng máy tính của bạn Đinh Hồng Thái . Mình sẽ xây dựng phần tiếp theo của loạt bài giao tiếp với Arduino bằng máy tính thông qua C#, dựa trên công nghệ Window Form Application….Nói nghe nguy hiểm vậy, nhưng thực ra bài viết khá đơn giản…keke. Nội dung chính của bài này đó là: “Nhận dữ liệu từ Arduino đến máy tính, thông qua phần mềm tự tạo bằng C#” !!!!!

lên
48 thành viên đã đánh giá bài viết này hữu ích.