0236 3827111 (203)

Hướng dẫn lập trình cho Raspberry Pi 2 (Phần 4)


1. Cấu tạo và cách tạo mã ra led 7 thanh

1.1. Cấu tạo

Cấu tạo leb 7 thanh

Led 7 thanh gồm 8 led đơn được nối với nhau tương ứng 7 đoạn và 1 dấu chấm.​

Nhìn vào sơ đồ nguyên lý ta thấy 8 led đơn được nối chung với nhau. Nếu các chân Anode (cực dương) được nối chung với nhau và nối với dương nguồn thì ta được led 7 thanh loại Anode chung. Tương tự led 7 thanh loại Cathode các chân được nối chung với nhau và nối với âm nguồn.

1.2. Tạo mã led 7 thanh

Ở đây ta tìm hiểu cách tạo mã led 7 thanh loại Anode . Loại Cathode cũng tương tự.​ Vì led 7 thanh loại Anode được nối chung cực dương nên led sẽ sáng tương ứng bit đầu vào mức logic 0 và led sẽ tắt tương ứng mức logic 1 (5V)​.

Như vậy ta sẽ có bảng mã như sau:

// Tạo mảng gồm 10 phần tử để chứa mã các chữ số từ 0->9 vừa tạo ra ở trên

uint8_t  chuso[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

2. Lập trình hiển thị ra LED 7 thanh

  • Các bước thực hiện việc tạo chương trình và biên dịch giống như các bước thực hiện ở Phần 2 và Phần 3 trong output và input GPIO.

 

  • Bước 1: Tạo một thư mục có tên là led7thanh
mkdir led7thanh
  • Bước 2: Vào thư mục led7thanh và tạo một chương trình có tên là “led7thanh.c”
$cd /led7thanh
$sudo nano led7thanh.c

Chương trình hiển thị ra LED 7 thanh

#include <bcm2835.h>
#define PINA RPI_V2_GPIO_P1_11
#define PINB RPI_V2_GPIO_P1_12
#define PINC RPI_V2_GPIO_P1_13
#define PIND RPI_V2_GPIO_P1_15
#define PINE RPI_V2_GPIO_P1_16
#define PINF RPI_V2_GPIO_P1_18
#define PING RPI_V2_GPIO_P1_22
#define PINH RPI_V2_GPIO_P1_29
//0xC0 = 0b1100 0000
uint8_t chuso[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
int main(int argc, char **argv)
{
return 1;
// Set the pin to be an output
bcm2835_gpio_fsel(PINA, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PINB, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PINC, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PIND, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PINE, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PINF, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PING, BCM2835_GPIO_FSEL_OUTP);
bcm2835_gpio_fsel(PINH, BCM2835_GPIO_FSEL_OUTP);
// Display to LED 7 segment
while (1)
{
//Display number 0
bcm2835_gpio_write(PINA, HIGH);
bcm2835_gpio_write(PINB, HIGH);
bcm2835_gpio_write(PINC, LOW);
bcm2835_gpio_write(PIND, LOW);
bcm2835_gpio_write(PINE, LOW);
bcm2835_gpio_write(PINF, LOW);
bcm2835_gpio_write(PING, LOW);
bcm2835_gpio_write(PINH, LOW);
//Delay 2s
bcm2835_delay(2000);
//Display number 1
bcm2835_gpio_write(PINA, HIGH);
bcm2835_gpio_write(PINB, HIGH);
bcm2835_gpio_write(PINC, HIGH);
bcm2835_gpio_write(PIND, HIGH);
bcm2835_gpio_write(PINE, HIGH);
bcm2835_gpio_write(PINF, LOW);
bcm2835_gpio_write(PING, LOW);
//Delay 2s
bcm2835_delay(2000);
}
return 0;
}