Professional Documents
Culture Documents
Báo Cáo Đ Án 1
Báo Cáo Đ Án 1
THNH PH H CH MINH
KHOA IN- IN T
BO CO H THNG NHNG
ti:
O KHONG CCH BNG SNG SIU M
HIN TH GLCD 128X64
12141058
Vn Ph
12141169
Nguyn Gia Bo
12141013
MC LC
Chng I GII THIU YU CU- MC CH TI..3
1.1 GII THIU...3
1.2 MC CH NGHIN CU..3
1.3 GII HN..3
Chng II KHO ST S KHI......4
2.1 TM TT..4
2.2 KHO ST S KHI....4
2.2.1 THIT K S NGUYN L.....5
2.2.2 LU V CHNG TRNH...25
Chng III THI CNG MCH..44
3.1 V S NGUYN L44
3.2 V PCB...45
3.3 GIA CNG, LP RP V KIM TRA MCH...48
Chng IV KT QU THC HIN V KT LUN..53
TI LIU THAM KHO...54
Chng 1:
GII THIU
Vic o lng, c bit l o lng khong cch l rt quan trng trong
cuc sng. o lng khong cch gip con ngi bit c khong cch t s
vt ny n s vt khc, thun tin cho vic tnh ton v xc nh cc thng
s nh chiu di, chiu rng, chiu cao, din tch, th tch v.v V ti ny
c th tm lc ngn gn trong cc sau:
-
1.2
MC CH NGHIN CU
ti c thc hin vi mc ch o khong cch bng cch ng
1.3
GII HN
V ang l sinh vin ang theo hc i hc nn vi ti ny ti ch c
Chng 2:
KHO ST S KHI
2.1. TM TT:
Vic phi hp o t, tnh ton, hin th cc thng s cn thit ca thit
b s do cc khi chc nng m nhim. V cho vic o t v hin th c
din ra ng yu cu ca ti th ti s dng 4 khi chc nng:
-
Khi ngun.
Khi vi x l.
Khi cm bin.
Khi nt nhn.
Khi ngun: c chc nng cp ngun cho ton b mch hot ng.
Khi hin th: Hin th s liu tnh ton, thng tin theo yu cu.
2.2.1
a.
THIT K S NGUYN L
KHI VI X L:
Khi vi x l chnh s dng trong ti ny l kit Arduino UNO
Vi iu khin
ATmega328 (h 8bit)
in p hot ng
5V DC (ch c cp qua
cng USB)
Tn s hot ng
16 MHz
Dng tiu th
30mA
in p vo khuyn
7-12V DC
dng
in p vo gii hn
6-20V DC
14 (6 chn PWM)
S chn Analog
Dng ti a trn mi
30 mA
chn I/O
Dng ra ti a (5V)
500 mA
Dng ra ti a (3.3V)
50 mA
B nh flash
32 KB (ATmega328) vi 0.5KB
dng bi bootloader
SRAM
2 KB (ATmega328)
EEPROM
1 KB (ATmega328)
Lu :
Arduino UNO khng c bo v cm ngc ngun vo. Do phi ht sc cn
thn, kim tra cc cc m dng ca ngun trc khi cp cho Arduino UNO.
Vic lm chp mch ngun vo ca Arduino UNO s bin n thnh mt ming
nha chn giy. Khuyn khch nn dng ngun t cng USB nu c th.
Cc chn 3.3V v 5V trn Arduino l cc chn dng cp ngun ra cho cc
thit b khc, khng phi l cc chn cp ngun vo. Vic cp ngun sai v tr
c th lm hng board. iu ny khng c nh sn xut khuyn khch.
Cp ngun ngoi khng qua cng USB cho Arduino UNO vi in p di 6V
c th lm hng board.
Cp in p trn 13V vo chn RESET trn board c th lm hng vi iu
khin ATmega328.
B nh: Vi iu khin Atmega 328 tiu chun cung cp cho ngi dng:
-
1KB
EEPROM (Electrically Eraseble Programmable Read OnlyMemory): y
ging nh mt chic cng mini ni c th c v ghi d liu ca mnh
vo y m khng b mt khi cp in ging nh d liu trn SRAM.
Chn PWM (~): 3, 5, 6, 9, 10, v 11: cho php ta xut ra xung PWM vi
phn gii 8bit (gi tr t 0 2 8-1 tng ng vi 0V 5V) bng hm
analogWrite(). Ni mt cch n gin, ta c th iu chnh c in p ra
chn ny t mc 0V n 5V thay v ch c nh mc 0V v 5V nh
nhng chn khc.
LED 13: trn Arduino UNO c 1 n led mu cam (k hiu ch L). Khi
bm nt Reset, ta s thy n ny nhp nhy bo hiu. N c ni vi
chn s 13. Khi chn ny c ngi dng s dng, LED s sng.
Arduino UNO c 6 chn analog(A0-A5) cung cp phn gii tn hiu 10bit(0 - 2 10-1)
c gi tr in p trong khong(0V-5V). Vi chn AREF trn board, ta c th a
vo in p tham chiu khi s dng cc chn analog. Tc l nu ta cp in p 2.5V
vo chn ny th ta c th dng cc chn analog o in p trong khong t 0V
2.5V vi phn gii vn l 10bit. c bit, Arduino UNO c 2 chn A4 (SDA) v A5
(SCL) h tr giao tip I2C/TWI vi cc thit b khc.
b.
KHI CM BIN
Cm bin siu m c s dng trong ti ny l cm bin HCSR04
GND: t.
c.
php
ghi
gi
tr
sau
0000H,0002H,0004H,0006H.
o Hin th fonts ca CGROM: ghi 2 bytes vo
DDRAM hin th mt k t. A140H D75FH
l m BIG5, A1A0HF7FFH l m GB.
Ch : Lun ghi byte cao trc v byte thp sau.
Tp lnh:
Nhm lnh 1 (Khi RE=0: nhm lnh c bn)
KHI NT NHN
Cc nt nhn giao tip gi thit b vi con ngi s c s dng
e.
KHI NGUN
Theo nh phn thng tin v Kit iu khin Arduino nu trn. V
Ic n p 7809:
Cu diode:
T in:
Cc t in c s dng bao gm: T ha 2200uF/50V, t
ha 100uF/25V, t gm 104. Chc nng chnh l lc ngun.
f.
E(GLCD)PinA4(Arduino).
RS(GLCD)PinA3(Arduino).
R\W(GLCD)PinA2(Arduino).
TriggerPinPin12(Arduino).
EchoPinPin13(Arduino).
2.2.2
LU V CHNG TRNH
Arduino
IDE
chn:
ExampleU8glibHello Wold.
Lc
u8g(18,
ng
l:
Pin
SPI(SCK,MOSI,MISO,SS)PinArduino(13,11,12,10).
Tuy
U8glib
nh
ngha
nh
sau:
SPIArduino(SCK=PinA4,MOSI=PinA2,SS=PinA3)PinGLC
D(E,RS,R\W).
d. LU
Lu chng trnh chnh:
e. CHNG TRNH
Chng trnh o khong cch bng sng siu m hin th GLCD
theo ng yu cu iu khin:
#include "U8glib.h"
U8GLIB_ST7920_128X64_4X u8g(18, 16, 17);
// SPI Com: SCK = en = 18 = PIN A4,
//MOSI = rw = 16 = PIN A2, CS = di = 17 = PIN A3
//TH VIN U8GLIB L TH VIN H TR HIN TH
GLCD 128X64 C 2 //CCH GIAO TIP: SONG SONG, V
SPI...
// Y CHN GIAO TIP SPI TIT KIM CHN
ARDUINO( CH GIAO //TIP N CNG NN CH S
DNG MOSI-"CH GI,T NHN V HIN //TH")
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
const
int
A=2,B=3,UP=4,DW=5,L=6,R=7,ST=8,SL=9,LED=10,BZ=11;
const int trig=12;
const int echo=13;
unsigned long t_echo;
float kc=0;
float d1,d2,dt;
int br;
float gia_tri_an_toan=5;
unsigned int i;
unsigned mode = 1;
int cot=5;
String a="";
String
kc_an_toan,
bd,
s_d1,
nutB,
nutVang,
string_mode="(cm)";
String c;
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void setup()
{
//Serial.begin(9600);
pinMode(A, INPUT_PULLUP);
pinMode(B, INPUT_PULLUP);
pinMode(UP, INPUT_PULLUP);
pinMode(DW, INPUT_PULLUP);
pinMode(L, INPUT_PULLUP);
pinMode(R, INPUT_PULLUP);
pinMode(ST, INPUT_PULLUP);
pinMode(SL, INPUT_PULLUP);
pinMode(trig,OUTPUT);
pinMode(echo,INPUT);
pinMode(LED, OUTPUT);
pinMode(BZ, OUTPUT);
digitalWrite(LED,HIGH);
delay(100);
digitalWrite(LED,LOW);
gioi_thieu();
delay(5000);
u8g.setFont(u8g_font_6x12);
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void loop()
{
menu();
if(cot==5)
dokhoangcach();
else dodientich();
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void nut_mode()//nutA
{
if(digitalRead(A)==LOW)
{
tone(BZ,2300,50);
mode++;
if(mode>3) mode=1;
while(digitalRead(A)==LOW);
if(mode==1)string_mode="(cm)";
else if(mode==2)string_mode="(dm)";
else string_mode="(m)";
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void menu()
{
//bd="";
kc_an_toan="";
s_d1="";
digitalWrite(LED,LOW);
nutB="";
nutVang="";
while(true)
{
nut_up_menu();
nut_down_menu();
u8g.firstPage();
do{
u8g.drawFrame(9,cot,110,13);
u8g.drawStr(22,14,"Do khoang cach");
u8g.drawStr(18,34,"Do dien tich hcn");
u8g.drawStr(0,60,"UP,DW
Start");
}while(u8g.nextPage());
if(digitalRead(ST)==LOW)
{tone(BZ,2300,50);while(digitalRead(ST)==LOW);break;}
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX
void nut_up_menu()
{
if((digitalRead(UP)==LOW)|(digitalRead(L)==LOW))
{
tone(11,2300,50);
cot -=20;
if(cot<10) cot=5;
while((digitalRead(UP)==LOW)|(digitalRead(L)==LOW));
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void nut_down_menu()
{
if((digitalRead(DW)==LOW)|(digitalRead(R)==LOW))
{
tone(11,2300,50);
cot +=20;
if(cot>30) cot=25;
while((digitalRead(DW)==LOW)|(digitalRead(R)==LOW));
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void nut_up_kc()
{
if((digitalRead(UP)==LOW)|(digitalRead(L)==LOW))
{
if(digitalRead(L)==LOW)
{
tone(11,2300,50);
gia_tri_an_toan -=0.01;
}
else
{
tone(11,2300,50);
gia_tri_an_toan ++;
}
while((digitalRead(UP)==LOW)|(digitalRead(L)==LOW));
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX
void nut_down_kc()
{
if((digitalRead(DW)==LOW)|(digitalRead(R)==LOW))
{
if(digitalRead(R)==LOW)
{
tone(11,2300,50);
gia_tri_an_toan +=0.01;
}
else
{
tone(11,2300,50);
gia_tri_an_toan --;
}
if(gia_tri_an_toan<0) gia_tri_an_toan=0;
while((digitalRead(DW)==LOW)|(digitalRead(R)==LOW));
delay(50);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void tinhkhoangcach()
{
digitalWrite(trig,0);
delayMicroseconds(2);
digitalWrite(trig,1);
delayMicroseconds(10);
digitalWrite(trig,0);
t_echo = pulseIn(echo,HIGH);
if(mode==3) kc=(float(((t_echo)*0.034)/2))/100;
//m
//dm
else kc=float(((t_echo)*0.034)/2);
//cm
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXX
void ktantoan()
{
if(kc<=gia_tri_an_toan)
{
kc_an_toan=" WARNING!!";
tone(BZ,2500);
digitalWrite(LED,HIGH);
}
else
{
kc_an_toan="kc dat " + String(gia_tri_an_toan) +
string_mode;
noTone(BZ);
digitalWrite(LED,LOW);
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void hienthi()
{
u8g.firstPage();
do{
u8g.setPrintPos(64,60); u8g.print(nutB);
u8g.setPrintPos(64,60); u8g.print(nutVang);
u8g.drawStr(0,60,"'A'=mode");
u8g.setPrintPos(15,12); u8g.print(kc_an_toan);//khi do
khoang cach moi hien thi muc nay
u8g.setPrintPos(24,12); u8g.print(s_d1);//khi do dien tich
moi hien thi muc nay
//u8g.setPrintPos(25,60); u8g.print(bd);//khi co bao dong
moi hien thi muc nay
u8g.drawFrame(14,16,100,32);
u8g.setPrintPos(20,29); u8g.print("Khoang cach" + a);
if (kc >=100)
u8g.setPrintPos(35,43);
else if ((kc <100) & (kc >=10))
u8g.setPrintPos(38,43);
else
u8g.setPrintPos(41,43);
u8g.print(String(kc) + string_mode);
}while(u8g.nextPage());
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void dokhoangcach()
{
a= " la:";
nutB="'B'=menu";
while(true)
{
nut_mode();
nut_up_kc();
nut_down_kc();
kc_an_toan="kc dat " + String(gia_tri_an_toan) +
string_mode;
tinhkhoangcach();
ktantoan();
hienthi();
if(digitalRead(B)==LOW) {tone(BZ,2300,50);break;}
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void dodientich()
{
br=0;
while(true)
{
s_d1="";
nutVang="YellowBt=SL";
dolani();
tinhdientich();
hienthi_dientich();
if(br==1) break;
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void dolani()
{
for(i=1;i<3;i++)
{
a= " d"+String(i)+":";
if(i==2)
{
s_d1="d1 = "+ String(d1)+string_mode;
}
while(true)
{
nut_mode();
tinhkhoangcach();
hienthi();
if(digitalRead(SL)==LOW)
{tone(BZ,2300,50);while(digitalRead(SL)==LOW);break;}
}
if(i==1) d1=kc;
else d2=kc;
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void tinhdientich()
{
dt=d1*d2;
if(mode==1)
c="(cm)";
else if(mode==2)
c="(dm)";
else
c="(m)";
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void hienthi_dientich()
{
u8g.firstPage();
do{
u8g.setPrintPos(12,10);
u8g.print("d1 = "+String(d1) + string_mode);
u8g.setPrintPos(12,22);
u8g.print("d2 = "+String(d2) + string_mode);
u8g.setPrintPos(12,34);
u8g.print("dt = "+String(dt) + string_mode+"2");
u8g.drawStr(12,46,"'A',tiep tuc");
u8g.drawStr(12,58,"'B',menu");
}while(u8g.nextPage());
while(true)
{
if(digitalRead(A)==LOW)
{tone(BZ,2300,50);while(digitalRead(A)==LOW);break;}
if(digitalRead(B)==LOW)
{tone(BZ,2300,50);while(digitalRead(B)==LOW);br=1;break;}
}
}
//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXX
void gioi_thieu()
{
u8g.firstPage();
do {
u8g.drawFrame(0,0,128,64);
u8g.setFont(u8g_font_5x7);
u8g.setPrintPos(11,9);
u8g.print("TRUONG DH SPKT TP HCM");
u8g.drawLine(1,18,126,18);
u8g.setPrintPos(20,17);
u8g.print("KHOA DIEN-DIEN TU");
u8g.setPrintPos(25,26);
u8g.print("DO AN DIEN TU 1");
u8g.setPrintPos(5,34);
u8g.print("(DO KHOANG CACH SU DUNG");
u8g.setPrintPos(22,42);
u8g.print("CAM BIEN SIEU AM");
u8g.setPrintPos(14,50);
u8g.print( "HIEN THI GLCD 128x64)");
u8g.setPrintPos(25,60);
u8g.print("Loading......");
} while( u8g.nextPage() );
}
f. GII THCH CC LNH S DNG TRONG CHNG TRNH.
-
digitalRead(x,MODE); : c gi tr s vo chn x,
MODE c th l: LOW, HIGH.
Chng 3:
3.1
V S NGUYN L
3.2
V PCB
3.3
Chng 4:
TI LU THAM KHO
[1]
http://arduino.vn/reference
[2]
https://code.google.com/p/u8glib/wiki/userreference
[3]
http://www.arduino.cc/en/Reference/SPI
[4]
Ph
[5]
http://alldatasheet.com
[6]
http://arduino.vn