Nguyễn Đình Lực- 121000190- Bt1.3

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

BÀI 1: ĐIỀU KHIỂN ON/OFF

Yêu cầu 1.3:


1.Viết chương trình điều khiển kiểu chạy led bằng 2 nút nhấn: nút START và nút
MODE như sau:
Khi mở nguồn thì hệ thống chưa hoạt động, Khi nhấn START thì Led chạy kiểu 1, Khi
nhấn nút MODE lần 1 thì led chạy kiểu 2, khi nhấn lần 2 thì Led chạy kiểu 3, khi nhấn
lần 3 thì Led chạy kiểu 4, khi nhấn lần 4 thì led chạy lại kiểu 1 và quy trình lập lại như
trên, kiểu chạy led như sau:
Kiểu 1: Led sáng đuổi từ trái sang phải , sau đó chạy từ phải sang trái .
Kiểu 2: Led sáng dần từ trái sang phải , sau đó chạy từ phải sang trái..
Kiểu 3: Led sáng dồn từ trái sang phải , sau đó chạy từ phải sang trái.
Kiểu 4: Led sáng đuổi từ 2 đầu ngoài vào trong, sau đó chạy từ trong giữa ra 2 đầu.
Nội dung triển khai:
Câu 1 (10đ): Lập bảng thống kê Input/Output, địa chỉ sử dụng cho từng ngõ vào ra.
Bảng thống kê địa chỉ ngõ vào (Input)
STT Tên Input Địa chỉ / Pin Mô tả chức năng
Nút khởi động, thiết kế tích cực mức
1 `Start Pin 2
0
2 Mode Pin 11 Thay đổi chế độ đèn

Bảng thống kê địa chỉ ngõ ra (Output)


STT Tên output Địa chỉ / Pin Mô tả chức năng
1 Led1 Pin 3 Trạng thái sáng/ tắt ở ngõ ra led 1
2 Led2 Pin 4 Trạng thái sáng/ tắt ở ngõ ra led 2
3 Led3 Pin 5 Trạng thái sáng/ tắt ở ngõ ra led 3
4 Led4 Pin 6 Trạng thái sáng/ tắt ở ngõ ra led 4
5 Led5 Pin 7 Trạng thái sáng/ tắt ở ngõ ra led 5
6 Led6 Pin 8 Trạng thái sáng/ tắt ở ngõ ra led 6
7 Led7 Pin 9 Trạng thái sáng/ tắt ở ngõ ra led 7
8 Led8 Pin 10 Trạng thái sáng/ tắt ở ngõ ra led 8
Câu 2 (10đ): Vẽ sơ đồ khối của hệ điều khiển này, giải thích hoạt động của các khối

Máy tính

Khối tín hiệu đầu Khối xử lí arduno Khối tín hiệu đầu
vào mega 2560 ra

Nguồn

Câu 3: (10đ): Vẽ sơ đồ kết nối (mạch nguyên lý) của hệ thống.


Câu 4 (20đ): Trình bày sơ đồ giải thuật xử lý của đề bài

Bắt
đầu

Đọc giá trị nút


nhấn

nút nhấn
Run= 0

Run = 1

Mode 1

Mode ==0

TG i>=10ms

Biến đếm tăng lên 1


Dem++

Kết
thúc
 Sơ đồ giải thuật chương trình sáng
đuổi từ led 1 đến led 8 và từ led 8
đến led:

Xuất tín
hiệu mức 0
 Sơ đồ giải thuật sáng dồn từ led 1 đến led
8 và từ led 8 đến led 1:

Bắt
đầu
Bắt
đầu
giá trị biến lăp
j=0
giá trị biến lăp
j=0
J<8

J<8
Giá trị biến lặp i=7

Giá trị biến lặp i=0


i>=1

i<8-J
Chọn led 8

Chọn led 1
Xuất tín
hiệu mức 1
Xuất tín
hiệu mức 1
Delay 200ms

Delay 200ms
Xuất tín
hiệu mức 0
Xuất tín
hiệu mức 0
Delay 200ms

Delay 200ms
Xuất tín hiệu led
i+1 mức 1
Xuất tín hiệu led
i-1 mức 1
Run = 1

Run = 1
Mode 1

Mode 1
 Sơ đồ giải thuật led sáng dần từ led 1 đến
8 và sáng dần từ led 8 đến led :1
Bắt
Bắt đầu
đầu

Xuất phát led 8


Xuất phát led 1

Xuất tín
hiệu
Xuấtmức
tín 1
hiệu mức 1

Delay 200ms
Delay 200ms

i>=0
i<8

Tăng lên 1 led


Tăng lên 1 led

Mode = 0
Mode = 0

Pinled i=0
Pinled i=0

Kết
Kết thúc
thúc

 Sơ đồ giải thuật led sáng từ trong ra ngoài


và từ ngoài vào trong:
Bắt
Bắt đầu
đầu

Xuất phát led 1


Xuất phát led 1 i=6
i=3

i>2
i<7

Xuất tín hiệu


mức
Xuất1 tín
I vàhiệu
13-i
mức 1 I và 13-i

Delay 200ms
Delay 200ms
I tăng lên 1
I tăng lên 1

Mode = 0
Mode = 0

Tất cả I ở mức 0
Tất cả ở mức 0

Kết
Kết thúc
thúc

Đúng sai
Câu 5 (50đ): Viết code chương trình xử lý và trả lời câu hỏi

int pinled[]={2,3,4,5,6,7,8,9,};

int tgnhan=0;

int RUN=0;

int dem=0;

int i,j;

void ledsangdonL1denL8(){

for(j=0;j<8;j++)

for(i=0;i<8-j;i++)

digitalWrite(pinled[i], HIGH);

delay(100);

digitalWrite(pinled[i], LOW);

delay(100);

digitalWrite(pinled[i-1], HIGH);

void ledsangdonL8denL1(){

for(j=0;j<8;j++)

for(i=7;i>=j;i--)

digitalWrite(pinled[i], HIGH);

delay(100);

digitalWrite(pinled[i], LOW);
delay(100);

digitalWrite(pinled[i+1], HIGH);

void ledsangduoiL1denL8(){

for(int i=0;i<8;i++){

digitalWrite(pinled[i],HIGH);

delay(100);

digitalWrite(pinled[i],LOW);

void ledsangduoiL8denL1(){

for(int i=7;i>=0;i--){

digitalWrite(pinled[i],HIGH);

delay(100);

digitalWrite(pinled[i],LOW);

void ledsangdanL1denL8(){

for(i=0;i<8;i++)

digitalWrite(pinled[i], HIGH);

delay(100);

void ledsangdanL8denL1(){
for(i=7;i>=0;i--)

digitalWrite(pinled[i], HIGH);

delay(100);

void sanghaidauvaotrong()

for(int i=2;j<7;i++)

digitalWrite(i,HIGH);

digitalWrite(11-i,HIGH);

delay(100);

void sangtutrongrangoai()

for(int i=6;i>1;i--)

digitalWrite(i,HIGH);

digitalWrite(11-i,HIGH);

delay(100);

void setup() {

pinMode(13,INPUT_PULLUP);

pinMode(12,INPUT_PULLUP);
for(int i=0;i>8;i++){

pinMode(pinled[i],OUTPUT);

void buttonMode(){

if (digitalRead(13)==0){

while (digitalRead(13)==0){

tgnhan++;

delay(1);

if(tgnhan>=5){

dem++;

tgnhan=0;

else{

tgnhan=0;

void buttonStart(){

if(digitalRead(12)==0){

RUN=1;

void loop(){
buttonStart();

if(RUN==1){

buttonMode();

switch (dem){

case 0:

ledsangduoiL1denL8();

ledsangduoiL8denL1();

break;

case 1:

ledsangdanL1denL8();

ledsangdanL8denL1();

break;

case 2:

ledsangdonL1denL8();

ledsangdonL8denL1();

break;

case 3:

sanghaidauvaotrong();

sangtutrongrangoai();

break;

case 4:

dem=0;

break;

You might also like