You are on page 1of 59

HC VIN HNG KHNG VIT NAM

KHOA IN T VIN THNG


------



HNG DN S DNG C BN ARDUINO




TP.HCM, Thng 5, Nm 2014.


MC LC:
Li ni u.
Chng 1: Tng quan v Arduino Uno. ........................................................................... 1
1. Tng quan. ................................................................................................................. 1
2. S chn ca Arduino. .......................................................................................... 2
Chng 2: Ci t chng trnh Arduino IDE v Driver cho Arduino ....................... 4
1. Ci t chng trnh Arduino IDE ......................................................................... 4
2. Ci t Driver ............................................................................................................ 5
3. Arduino IDE .............................................................................................................. 7
Chng 3: Hng dn ci t bn m phng Arduino trn Proteus. ......................... 11
Chng 4: Giao tip Arduino vi mt s linh kin in t. ......................................... 13
1) Project 1: Led nhp nhy. ...................................................................................... 13
2) Project 2 : n sng khi nhn phm. ..................................................................... 18
3) Project 3 : Led sng dn t led 1 n led 10 v ngc li. .................................. 21
4) Project 4 : Led sng dn t led 1 n led 10 v ngc li thi gian delay thay
i c. ......................................................................................................................... 24
5) Project 5: iu khin tc ng c bng PWM. ............................................... 27
6) Project 6 : iu khin ng c bng L293D. ........................................................ 31
7) Project 7: Giao tip Arduino vi LCD 16x2. ........................................................ 34
8) Project 8: Giao tip vi my tnh. .......................................................................... 47
9) Project 9. o nhit mi trng dng LM35D hin th LCD v Serial
Monitor. .......................................................................................................................... 49
10) Project 10: Giao tip Arduino vi Servo motor. ............................................... 54
Ti liu tham kho. ........................................................................................................... 56




Li Ni u.
Arduino v ang c s dng rt rng ri trn th gii, v ngy cng chng t
c sc mnh ca chng thng qua v s ng dng c o ca ngi dng trong cng
ng ngun m. Arduino thc s gy sng gi trn th trng ngi dng trn ton
th gii trong vi nm gn y, s lng ngi dng cc ln v a dng vi trnh tri
rng t bc ph thng ln n i hc lm cho ngay c nhng ngi to ra chng phi
ngc nhin v mc ph bin.Tuy nhin ti Vit Nam Arduino vn cn cha c bit
n nhiu, cc ti liu lin quan n n vn cn rt hn ch. c s gii thiu v ch dn
ca thy Nguyn Thanh Dng, sau mt thi gian tm hiu tc gi bin son ti liu
HNG DN S DNG C BN ARDUINO. Trong ti liu ny cung cp cho bn
c mt lng kin thc c bn nht v Arduino cng nh cc ng dng thc t ca n.
Ti liu gm c cc ni dung sau:
Chng 1: Tng quan v Arduino Uno.
Chng 2: Ci t chng trnh Arduino IDE v Driver cho Arduino.
Chng 3: Hng dn ci t bn m phng Arduino trn Proteus.
Chng 4: Giao tip Arduino vi mt s linh kin in t.
Khi bin son, tc gi tham kho mt s ti liu nc ngoi ti liu va m
bo v mc ni dung va c th tip cn c vi bn c.
Khi vit tc gi c gng ti liu c hon chnh nht song chc chn khng
trnh khi sai st, v vy rt mong nhn c s gp ca bn c.
Mi kin ng gp xin lin h: trungtin.vaa@gmail.com
Tc gi
SV: NGUYN TRUNG TN

HC VIN HNG KHNG SV: NGUYN TRUNG TN 1

Chng 1: Tng quan v Arduino Uno.
1. Tng quan.
Arduino tht ra l mt bo mch vi x l c dng lp trnh tng tc vi cc
thit b phn cng nh cm bin, ng c, n hoc cc thit b khc. c im ni bt
ca Arduino l mi trng pht trin ng dng cc k d s dng, vi mt ngn ng
lp trnh c th hc mt cch nhanh chng ngay c vi ngi t am hiu v in t v
lp trnh. V iu lm nn hin tng Arduino chnh l mc gi rt thp v tnh cht
ngun m t phn cng ti phn mm.
Arduino Uno l s dng chip Atmega328. N c 14 chn digital I/O, 6 chn u vo
(input) analog, thch anh dao ng 16Mhz. Mt s thng s k thut nh sau :
Chip ATmega328
in p cp ngun 5V
in p u vo (input) (kin
ngh )
7-12V
in p u vo(gii hn) 6-20V
S chn Digital I/O 14 (c 6 chn iu ch rng xung PWM)
S chn Analog (Input ) 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32KB (ATmega328) vi 0.5KB s dng
bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Xung nhp 16 MHz

HC VIN HNG KHNG SV: NGUYN TRUNG TN 2

2. S chn ca Arduino.
Hnh 1: Arduino Uno.

a) USB (1).
Arduino s dng cp USB giao tip vi my tnh. Thng qua cp USB chng ta
c th Upload chng trnh cho Arduino hot ng, ngoi ra USB cn l ngun cho
Arduino.
b) Ngun ( 2 v 3 ).
Khi khng s dng USB lm ngun th chng ta c th s dng ngun ngoi thng
qua jack cm 2.1mm ( cc dng gia ) hoc c th s dng 2 chn V
in
v GND cp
ngun cho Arduino.
Bo mch hot ng vi ngun ngoi in p t 5 20 volt. Chng ta c th cp
mt p ln hn tuy nhin chn 5V s c mc in p ln hn 5 volt. V nu s dng ngun
ln hn 12 volt th s c hin tng nng v lm hng bo mch. Khuyt co cc bn nn
dng ngun n nh l 5 n di 12 volt.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 3

Chn 5V v chn 3.3V (Output voltage) : cc chn ny dng ly ngun ra t ngun
m chng ta cung cp cho Arduino. Lu : khng c cp ngun vo cc chn ny v
s lm hng Arduino.
GND: chn mass.
c) Chip Atmega328.
Chip Atmega328 C 32K b nh flash trong 0.5k s dng cho bootloader. Ngoi
ra cn c 2K SRAM, 1K EEPROM.
d) Input v Output ( 4, 5 v 6).
Arduino Uno c 14 chn digital vi chc nng input v output s dng cc hm
pinMode(), digitalWrite() v digitalRead() iu khin cc chn ny ti s cp chng
cc phn sau.
Cng trn 14 chn digital ny chng ta cn mt s chn chc nng l:
Serial : chn 0 (Rx ), chn 1 ( Tx). Hai chn ny dng truyn (Tx) v nhn (Rx)
d liu ni tip TTL. Chng ta c th s dng n giao tip vi cng COM ca mt s
thit b hoc cc linh kin c chun giao tip ni tip.
PWM (pulse width modulation): cc chn 3, 5, 6, 9, 10, 11 trn bo mch c du ~
l cc chn PWM chng ta c th s dng n iu khin tc ng c, sng ca
n
SPI : 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK), cc chn ny h tr giao tip theo
chun SPI.
I2C: Arduino h tr giao tip theo chun I2C. Cc chn A4 (SDA) v A5 (SCL) cho
php chng tao giao tip gia Arduino vi cc linh kin c chun giao tip l I2C.
e) Reset (7): dng reset Arduino.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 4

Chng 2: Ci t chng trnh Arduino IDE v Driver cho
Arduino
1. Ci t chng trnh Arduino IDE
Cc bn truy cp vo trang web http://arduino.cc/en/Main/Software v ti v chng
trnh Arduino IDE ph hp vi h iu hnh ca my mnh bao gm Windown, Mac OS
hay Linux. i vi Windown c bn ci t (.exe) v bn Zip, i vi Zip th ch cn gii
nn v chy chng trnh khng cn ci t.
Sau khi ci t xong th giao din chng trnh nh sau:

Hnh 2: Arduino IDE


HC VIN HNG KHNG SV: NGUYN TRUNG TN 5

2. Ci t Driver
S dng cp USB kt ni Arduino vi my tnh, lc ny bn s thy n led power
ca bo sng. My tnh s nhn dng thit b v bn s nhn c thng bo:
Device driver software was not successfully installed
Hnh 3: Driver Software Installation.
By gi bn click vo Start Menu chn Control Panel k n chng ta chn System
and Security, click System v sau chn Device Manager.
Hnh 4: Device Manager.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 6

Chng ta s thy cnh bo mu vng thiu driver trn Arduino. Click chut phi trn
Arduino Uno icon sau chn Update Driver Software
Hnh 5: Right click v chn Update Driver Software
Chn Browse my computer for driver software.
Hnh 6: Click chn Browse my computer for driver software
Chn ng dn ti folder driver ni m phn mm Arduino c lu tr.
Hnh 6: Driver
Click Next Windown t ng ci t driver, qua trnh ci t driver hon tt.


HC VIN HNG KHNG SV: NGUYN TRUNG TN 7

3. Arduino IDE
Arduino IDE l ni son tho code, kim tra li v upload code cho arduino
Hnh 7: Arduino IDE.
a) Arduino Toolbar: c mt s button v chc nng ca chng nh sau :
Hnh 8: Arduino Toolbar.
Verify : kim tra code c li hay khng
Upload: np code ang son tho vo Arduino
New, Open, Save : To mi, m v Save sketch
Serial Monitor : y l mn hnh hin th d liu t Arduino gi ln
my tnh
b) Arduino IDE Menu:
Hnh 9: IDE Menu

HC VIN HNG KHNG SV: NGUYN TRUNG TN 8

File menu:
Hnh 10: File menu.
Trong file menu chng ta quan tm ti mc Examples y l ni cha code mu v
d nh: cch s dng cc chn digital, analog, sensor
Hnh 11: Click Examples.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 9

Edit menu:
Hnh 11: Edit menu
Sketch menu
Hnh 12: Sketch menu
Trong Sketch menu :
Verify/ Compile : chc nng kim tra li code.
Show Sketch Folder : hin th ni code c lu.
Add File : thm vo mt Tap code mi.
Import Library : thm th vin cho IDE



HC VIN HNG KHNG SV: NGUYN TRUNG TN 10

Tool memu:
Hnh 13: Tool menu.
Trong Tool menu ta quan tm cc mc Board v Serial Port
Mc Board : cc bn cn phi la chn bo mch cho ph hp vi loi bo m bn s
dng nu l Arduino Uno th phi chn nh hnh:
Hnh 14: Chn Board
Nu cc bn s dng loi bo khc th phi chn ng loi bo m mnh ang c nu
sai th code Upload vo chip s b li.
Serial Port: y l ni la chn cng Com ca Arduino. Khi chng ta ci t driver
th my tnh s hin thng bo tn cng Com ca Arduino l bao nhiu, ta ch vic vo
Serial Port chn ng cng Com np code, nu chn sai th khng th np code cho
Arduino c.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 11

Chng 3: Hng dn ci t bn m phng Arduino trn
Proteus.
m phng c Arduino trn proteus th chng ta cn phi download th vin
arduino cho proteus. c c th vin ny cc bn cn truy cp vo trang web:
http://blogembarcado.blogspot.com/search/label/Proteus
Hnh 15: Th vin m phng Arduino.
Sau khi download v cc bn chp 2 file ARDUINO.IDX v ARDUINO.LIB vo
th mc:
Proteus 7:
C:\Program Files (hoc x86) \Labcenter Electronics\Proteus 7 Professional\LIBRARY
Proteus 8:
C:\Program Files (hoc x86) \Labcenter Electronics\Proteus 8
professional\Data\LIBRARY
Trong th vin ny h tr 5 loi board Arduino khc nhau trong gm c Arduino
Uno, MEGA, NANO, LILYPAD v UNO SMD v mt cm bin siu m Untrasonic.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 12

Sau khi chp xong chng ta khi ng Proteus ln vo th vin linh kin bng cch
bm phm P v g t kho l ARDUINO chng s hin ra danh sch cc board hin c
y ti chn Arduino Uno.

Hnh 16: M phng Arduino bng Proteus.
Lu chng ta cn phi cp ngun vo 2 chn 5V v Gnd trn mch nh hnh trn.


HC VIN HNG KHNG SV: NGUYN TRUNG TN 13

Chng 4: Giao tip Arduino vi mt s linh kin in t.
1) Project 1: Led nhp nhy.
Sau y ti s to mt project nhp nhy led thi gian delay l 1 giy s dng proteus
m phng.
S mch:





Hnh 17: Led nhp nhy.
Code chng trnh.
int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
Sau khi g code vo chng trnh son tho bn cn click v kim tra li.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 14

To File Hex.
Chng ta cn phi c file Hex cung cp cho proteus v khi bm play chng trnh
mi hot ng c. Cch to file Hex trn Arduino IDE nh sau:
Click vo File chn Preferences.






Hnh 18: Click Preferences.
Cc bn check vo compilation v OK.
Hnh 19: Check compilation.
Sau tip tc bm

HC VIN HNG KHNG SV: NGUYN TRUNG TN 15

Chng trnh s t ng built mt file hex c lu ng dn nh hnh di
Hnh 20: ng dn cha file hex.
Cc bn chp file hex ra mt th mc no sau m proteus ln v double click vo
Aruino Uno.
Hnh 21: Add file Hex cho Proteus.
Bm vo v tr s 1 v chn ni lu file hex trn chn tip Open, OK v Play.
Cc bn s thy led nhp nhy tt v sng thi gian delay l 1s.


HC VIN HNG KHNG SV: NGUYN TRUNG TN 16

Gii thch chng trnh.
int ledPin = 9;
Khai bo mt gi tr bin integer l ledPin = 9.
void setup() {
pinMode(ledPin, OUTPUT); }
Trong Arduino sketch cn phi c hm setup() v loop() nu khng c th chng
trnh bo li. Hm Setup() ch chy mt ln k t khi bt u chng trnh. Hm ny c
chc nng thit lp ch vo, ra cho cc chn digital hay tc baud cho giao tip Serial...
Cu trc ca hm pinMode() l nh sau:
pinMode(pin,Mode);
pin : l v tr chn digital.
Mode: l ch vo ( INPUT), ra (OUTPUT).
Lnh tip theo.
pinMode(ledPin, OUTPUT);
Lnh ny thit lp chn s 9 trn board l chn ng ra (OUTPUT). Nu khng khai
bo int ledPin = 9; th bn c th vit cch sau nhng ngha khng thay i:
pinMode(9, OUTPUT);
Bt buc khai bo mt hm loop() trong Arduino IDE. Hm ny l vng lp v hn
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);

HC VIN HNG KHNG SV: NGUYN TRUNG TN 17

delay(1000);
}
Tip theo ta s phn tch hm digitalWrite( ledPin, HIGH); lnh ny c ngha l
xut ra chn digital c tn l ledPin ( chn 9) mc cao ( HIGH), mc cao tng ng l 5
volt.
delay(1000);
Lnh ny to mt khong tr vi thi gian l 1 giy. Trong hm delay() ca IDE th
1000 tng ng vi 1 giy.
digitalWrite(ledPin, LOW);
Cng ging nh digitalWrite( ledPin, HIGH); lnh ny xut ra chn ledPin mc thp
(LOW) tc l 0 volt.
V tip tc l mt hm delay().
Nh vy chng ta c th thy chng trnh s thc hin tt sng led lin tc khng
ngng tr khi ta ngt ngun.


HC VIN HNG KHNG SV: NGUYN TRUNG TN 18

2) Project 2 : n sng khi nhn phm.
S mch:
Hnh 22: n sng khi nhn phm
Code chng trnh :
const int buttonPin = 2;
const int ledPin = 13;
int buttonState = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT); }
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {

HC VIN HNG KHNG SV: NGUYN TRUNG TN 19

digitalWrite(ledPin, HIGH); }
else {
digitalWrite(ledPin, LOW);
}}
Gii thch chng trnh :
Trc tin ta khai bo hai bin lu tr v tr chn ca phm nhn v led :
const int buttonPin = 2;
const int ledPin = 13;
Phm nhn s v tr chn s 2 v led chn s 13.
Ta khai bo mt bin trang thi ca phm nhn l int buttonState = LOW;
Trong hm setup() l khai ch (Mode) cho chn button v chn led. Chn button
l chn ng vo v chn led l chn ng ra.
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
Trong hm loop() ta c cu lnh u tin l :
buttonState = digitalRead(buttonPin);
Cu lnh ny c ngha l gn gi tr c c t chn button (chn 2) cho bin
buttonState.. buttonState s c gi tr 0 nu nh button khng c nhn v c gi tr 1 nu
c nhn. Bng cch s dng hm digitalRead() ta c th kim tra c cc chn digital
ang mc cao hay thp.
Sau khi c c gi tr c chn buttonPin ( chn 2) ta kim tra xem l button c
nhn hay khng.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 20

Nu c tc l buttonState =HIGH th lc ny ta bt led bng lnh digitalWrite()
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); }
Ngc li th ta mt ln na s dng hm digitalWrite() tt led
else {
digitalWrite(ledPin, LOW);
}


HC VIN HNG KHNG SV: NGUYN TRUNG TN 21

3) Project 3 : Led sng dn t led 1 n led 10 v ngc li.
S mch.
Hnh 23: Led sng dn t led 1 n led 10 v ngc li.
Code chng trnh.
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int direction = 1;
int currentLED = 0;
void setup() {
for (int x=0; x<10; x++) {
pinMode(ledPin[x], OUTPUT);} }

HC VIN HNG KHNG SV: NGUYN TRUNG TN 22

void loop() {
for (int x=0; x<10; x++) {
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[currentLED], HIGH);
currentLED += direction;

if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
delay(500);
}
Gii thch chng trnh.
Trong Project ny chng ta s dng 10 chn digital iu khin 10 led, cho
chng trnh ngn gn th y ti s dng mng 1 chiu gm 10 phn t trong cha
10 v tr chn led m ta s dng trong project
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
Tip tc khai bo 2 bin integer l :
int direction = 1;
int currentLED = 0;
Trong hm setup() ti s dng mt vng lp nh ngha mode cho cc chn led.
Ti ngh l khng kh hiu c cc cu lnh ny.
Tip theo l hm loop(), u tin ti tt tt c cc led bng cc cu lnh:
for (int x=0; x<10; x++) {
digitalWrite(ledPin[x], LOW);}

HC VIN HNG KHNG SV: NGUYN TRUNG TN 23

Sau cho sng led u tin bng cu lnh :
digitalWrite(ledPin[currentLED], HIGH);
V ta khai bo currentLED = 0 nn mng s truy xut phn t u tin trong
mng c gi tr l 4 v th led v tr chn digital s 4 s sng.
currentLED += direction;
Tng currentLED ln 1 n v ( direction =1 ). Vng lp tip theo s l led chn
digital 5 sng v c nh th cho n led chn s 13 sng, th lc ny currentLED == 9,
cu lnh if (currentLED == 9) {direction = -1;} s thc hin v led s sng ngc li
t led 10 xung led th 1.
Hai cu lnh :
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
dng quy nh chiu sng ca led l tng dn hay gim dn. Nu l Led th 10 sang th
tip theo s gim xung led th 9 v ngc li nu led th 0 sang th chu k tip theo led
1 s sng.



HC VIN HNG KHNG SV: NGUYN TRUNG TN 24

4) Project 4 : Led sng dn t led 1 n led 10 v ngc li thi gian
delay thay i c.
S mch :
Trong project ny hon ton ging project 3 ch thm mt bin tr dng iu chnh
thi gian delay cho chng trnh
Hnh 24: Led sng dn t led 1 n led 10 thi gian delay thay i c.
Code chng trnh.
int ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int direction = 1;

HC VIN HNG KHNG SV: NGUYN TRUNG TN 25

int currentLED = 0;
int potPin = 0;
unsigned long changeTime;
void setup() {
for (int x=0; x<10; x++) {
pinMode(ledPin[x], OUTPUT);
}
}
void loop() {
int delayvalu= analogRead(potPin);
for (int x=0; x<10; x++) {
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[currentLED], HIGH);
currentLED += direction;

if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
delay(delayvalu);
}
Gii thch chng trnh.
Chng trnh ta ch thm v thay i mt vi cu lnh m thi ngoi ra khng khc
g nhiu so vi project 3, cc cu lnh nh sau :
int potPin = 0 ;
int delayvalu= analogRead(potPin);

HC VIN HNG KHNG SV: NGUYN TRUNG TN 26

delay(delayvalu);
u tin chng ta khai bo mt bin cha v tr chn bin tr kt ni l v tr A0
int potPin = 0 ;
c gi tr t chn analog A0 bng cu lnh analogRead(potPin) v gn n cho bin
delayvalu. Arduino c 6 chn u vo analog nh du t A0 n A5 vi 10 bit chuyn i
t analog sang digital (ADC). Ngha l chn analog c th c c cc gi tr in p t 0
n 5 volt tng ng vi cc s integer t 0 ( 0 volt ) n 1023 ( 5 volt ).
Trong project ny chng ta cn thit lp thi gian delay bng cch iu chnh bin
tr. Ta s dng cu lnh delay(delayvalu) to thi gian tr. Nu ta iu chnh bin tr
sao cho in p u vo chn analog l 5 volt th delayvalu s c gi tr l 1023 ( hn 1
giy), nu l 2,5 volt th delayvalu s l 511. Cc bn th iu chnh bin tr ta s thy thi
gian delay thay i hoc l nhanh dn hoc l chm dn.
Lu : i vi cc chn analog chng ta khng cn thit lp ch vo ra bng hm
pinMode nh cc chn digital. Mc nh cc chn analog l input.


HC VIN HNG KHNG SV: NGUYN TRUNG TN 27

5) Project 5: iu khin tc ng c bng PWM.
S mch
Hnh 25: iu khin tc ng c.
Code chng trnh.
int potPin = 0;
int transistorPin = 9;
int potValue = 0;
void setup() {
pinMode(transistorPin, OUTPUT);}
void loop() {
potValue = analogRead(potPin) / 4;
analogWrite(transistorPin, potValue);
}


HC VIN HNG KHNG SV: NGUYN TRUNG TN 28

Gii thch chng trnh.
Nh trong s mch ta thy bin tr c ni vi chn A0, transistor c ni vi
chn s 9 thng qua in tr 1k. Nh vy ta khai bo 2 bin cha v tr chn cho bin tr
v transistor.
int potPin = 0;
int transistorPin = 9;
Bin integer potValue cha gi tr c c t chn A0.
int potValue = 0
Mt cu hi t ra y l nu chng ta khng kt ni transistor iu khin ng c
vo chn s 9 m thay vo l chn s 1 hoc 2 iu khin tc ng c th c c
khng ?.
Cu tr li l Khng. Vy ti sao Khng ?
Ti s tr li cu hi ny sau. Nhng trc ht ti ni v PWM. PWM (pulse width
modulation) l phng php iu ch da trn s thay i rng ca chui xung dn n
s thay i in p ra.
to ra c PWM trn Arduino th chng ta s dng lnh analogWrite(Pin,
Value);
Trong :
Pin: l v tr chn, i vi Arduino Uno th ch c cc chn 3, 5, 6, 9, 10 & 11 mi
c chc nng to PWM. Vy chng ta c th tr li c cu hi bn trn, cc chn digital
cn li ca c th c hoc xut 2 gi tr l 0 v 1 m thi.
Value: Gi tr nm trong khong 0 n 255.
hiu r hn v PWM ti s minh ho qua v d sau.
Nu ti s dng lnh analogWrite(transistorPin, 127); th dng xung chn 9 (
transistorPin = 9) s nh hnh di v gi tr trung bnh ng ra s l 2,5V (50% ).

HC VIN HNG KHNG SV: NGUYN TRUNG TN 29

Hnh 26: PWM 50%.
Nu Value = 64 (hay 25%) th dng xung nh sau:
Hnh 27: PWM 25%.
Value = 229 (hay 90%) th dng xung s l :
Hnh 28: PWM 90%.
T v d trn ta thy s thay i rng ca chui xung dn n s thay i in p
ra. Ta cng thy rng in p trn motor cng thay i tuyn tnh theo s thay i in p
ng ra trn chn 9. Tc l nu in p trung bnh trn chn 9 l 2,5 volt (50% ) th in p
trn hai u motor l 6 volt ( ngun motor l 12 volt ).
Quay li chng trnh ta cn quan tm ti mt cu lnh l:
potValue = analogRead(potPin) / 4;

HC VIN HNG KHNG SV: NGUYN TRUNG TN 30

Chng ta cn phi chia gi tr c c cho 4 v gi tr analog s nm trong khong
0 (0 volt ) n 1023 (5 volt ), nhng gi tr cn xut ra ngoi chn 9 li nm trong khong
0 n 255 chnh l l do ti sao c chia 4 y.
V cu lnh cui cng l to PWM trn chn 9 iu khin tc ng c.
analogWrite(transistorPin, potValue);
Nu nh iu kin c tc ng c bng PWM ri th vic iu khin sng
ca Led hay n i vi cc bn bay gi l chuyn qu n gin. Cc bn ch cn ni chn
s 9 vi mt Led c in tr hn dng l 220 ohm v code chng trnh hon ton ging
nh iu khin ng c. Lu l khi m phng cc bn s khng thy c led thay i
sng m ch thy nhp nhy nguyn nhn l do phn mm proteus khng p ng kp s
thay i ca cc xung PWM. Nhng khi lm thc t cc bn s thy c s thay i
sng ca Led r rt.











HC VIN HNG KHNG SV: NGUYN TRUNG TN 31

6) Project 6 : iu khin ng c bng L293D.
S mch:
Hnh 29: iu khin ng c bng L293D.
Code chng trnh
#define switchPin 2 // chn cng tc
#define motorPin1 8 // L293D Input 1
#define motorPin2 7 // L293D Input 2
#define speedPin 9 // L293D enable chn 1
#define potPin 0 // chn bin tr ni vi A0
int Mspeed = 0;
void setup() {
pinMode(switchPin, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(speedPin, OUTPUT);

HC VIN HNG KHNG SV: NGUYN TRUNG TN 32

}

void loop() {
Mspeed = analogRead(potPin)/4;
analogWrite (speedPin, Mspeed);
if (digitalRead(switchPin)) {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH); }
else {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
}
}
Gii thch chng trnh:
Code ca project ny hon ton n gin. Trc tin ta nh ngha cc chn s s
dng trn arduino.
#define switchPin 2 // chn cng tc
#define motorPin1 8 // L293D Input 1
#define motorPin2 7 // L293D Input 2
#define speedPin 9 // L293D enable chn 1
#define potPin 0 // chn bin tr ni vi A0
Khai bo mt bin cha tc c t bin tr.
int Mspeed = 0;
Tip theo trong setup() ta thit lp ch vo, ra cho cc chn va nh ngha.
pinMode(switchPin, INPUT);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);

HC VIN HNG KHNG SV: NGUYN TRUNG TN 33

pinMode(speedPin, OUTPUT)
Trong vng loop() chng ta c gi tr t bin tr kt ni vi chn A0 v gn n cho
Mspeed :
Mspeed = analogRead(potPin)/4;
Thit lp tc cho ng c bng cu lnh:
analogWrite (speedPin, Mspeed);
Kim tra xem cng tc c c bt hay khng, nu c th thit lp motorPin1 =
LOW v motorPin2 = HIGH ta s thy ng c quay ngc chiu kim ng h.
if (digitalRead(switchPin)) {
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH); }
v nu cng tc khng c bt th motor s quay cng chiu kim ng h:
else {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
}


HC VIN HNG KHNG SV: NGUYN TRUNG TN 34

7) Project 7: Giao tip Arduino vi LCD 16x2.
Giao tip gia Arduino v LCD 16x2 rt n gin bi v Arduino IDE c sn th
vin cho LCD l LiquidCrystal.h, cng vic ca chng ta l hiu v bit cch s dng th
vin ny m thi.
S mch:
Hnh 30: giao tip vi LCD 16x2.
Code chng trnh :
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // thiet lap chan cho LCD
void setup() {
lcd.begin(16, 2); // thiet lap loai LCD su dung la 16 cot va 2 dong
}
void loop() {
introduce();
basicPrintDemo();
displayOnOffDemo();
setCursorDemo();

HC VIN HNG KHNG SV: NGUYN TRUNG TN 35

scrollLeftDemo();
scrollRightDemo();
cursorDemo();
createGlyphDemo();
}
void introduce(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HV HANG KHONG VN");
lcd.setCursor(1,1);
lcd.print("HD SD ARDUINO");
delay (1000);
for(int x=0; x < 3; x++) {
lcd.noDisplay(); //tat hien thi
delay(300);
lcd.display(); // bat hien thi
delay(300);
}
}
void basicPrintDemo() {
lcd.clear(); // xoa man hinh
lcd.print("HV HANG KHONG");
delay(1000);
}
void displayOnOffDemo() {
lcd.clear();
lcd.print("BAT/TAT MAN HINH");

HC VIN HNG KHNG SV: NGUYN TRUNG TN 36

for(int x=0; x < 3; x++) {
lcd.noDisplay();
delay(500);
lcd.display();
delay(500);
}
}
void setCursorDemo() {
lcd.clear();
lcd.print("Setup Cursor");
delay(500);
lcd.clear();
lcd.setCursor(5,0); // thiet lap con tro o vi tri cot 5 hang 0
lcd.print("5,0");
delay(500);
lcd.setCursor(10,1); // thiet lap con tro cot 10 hang thu 1
lcd.print("10,1");
delay(500);
lcd.setCursor(3,1); // thiet lap con tro o vi tri cot 3 hang 1
lcd.print("3,1");
delay(500);
}
void scrollLeftDemo() {
lcd.clear();
lcd.print("Scroll Left Demo");
delay(500);
lcd.clear();

HC VIN HNG KHNG SV: NGUYN TRUNG TN 37

lcd.setCursor(7,0);
lcd.print("Beginning");
lcd.setCursor(9,1);
lcd.print("Arduino");
delay(500);
for(int x=0; x<16; x++) {
lcd.scrollDisplayLeft(); // cuon man hinh sang trai
delay(250);
}
}
void scrollRightDemo() {
lcd.clear();
lcd.print("Scroll Right");
lcd.setCursor(0,1);
lcd.print("Demo");
delay(500);
lcd.clear();
lcd.print("Beginning");
lcd.setCursor(0,1);
lcd.print("Arduino");
delay(500);
for(int x=0; x<16; x++) {
lcd.scrollDisplayRight(); // cuon mang hinh sang phai
delay(250);
}
}


HC VIN HNG KHNG SV: NGUYN TRUNG TN 38


void cursorDemo() {
lcd.clear();
lcd.cursor(); // bat con tro
lcd.print("Cursor On");
delay(1000);
lcd.clear();
lcd.noCursor(); // tat con tro
lcd.print("Cursor Off");
delay(1000);
lcd.clear();
lcd.cursor();
lcd.blink(); // nhap nhay con tro
lcd.print("Cursor Blink On");
delay(1000);
lcd.noCursor();
lcd.noBlink(); // tat nhap nhay con tro
}
void createGlyphDemo() {
lcd.clear();
byte char1[8] = { //to ch
B01110,
B10001,
B00000,
B01110,
B10001,
B10001,

HC VIN HNG KHNG SV: NGUYN TRUNG TN 39

B01110,
B00000
};
byte char2[8] = { //to ch
B01110,
B00001,
B00010,
B01110,
B10001,
B10001,
B01110,
B00000
};
lcd.createChar(0, char1); // tao ky t tu chnh 0
lcd.createChar(1, char2); // to k t tu chnh 1
for(int x=0; x<5; x++) {
lcd.setCursor(8,0);
lcd.write(byte(0)); // in ch ra mn hnh
delay(1000);
lcd.setCursor(8,0);
lcd.write(byte(1)); // in ch ra mn hnh
delay(1000);
}
}



HC VIN HNG KHNG SV: NGUYN TRUNG TN 40

Gii thch chng trnh:
u tin chng ta khai bo th vin m chng ta s s dng iu khin LCD. Nh
ni trn chng ta s s dng th vin c tn l LiquidCrystal.h. C rt nhiu th vin
v code mu cho nhng loi LCD khc, bn c th truy cp vo trang web
http://www.arduino.cc/playground/Code/LCD ti v s dng.
khai bo th vin cho LCD hay bt c th vin no khc ta dng cu lnh
#include <tenthuvien.h>
Trong trng hp ny ta khai bo l :
#include <LiquidCrystal.h>
Tip theo to mt i tng v gn chn cho n bng cu lnh :
LiquidCrystal Object(RS, E, D4, D5, D6, D7);
Nh vy trong on code trn ti khai bo mt i tng c tn l lcd ( cc bn
c th thay th lcd bng nhng t khc m cc bn mun ) v chn 12 ca Arduino ni vi
chn RS, chn 11 ni vi E v cc chn 5 n chn 2 ln lt ni vi D4 n D7 trn LCD
16x2.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Trong hm setup() chng ta cn khai bo loi LCD m chng ta s dng. V trong
th vin LiquidCrystal.h h tr rt nhiu loi LCD chng hn nh 16x2, 16x4, 20x2, 20x4,
GLCD. y chng ta s dng 16x2 th ta khai bo.
lcd.begin(16,2);
Trong loop() chng ta c 8 chng trnh con, v ti s gii thch tng chng trnh
con.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 41

Chng trnh con th 1: introduce().
y l chng trnh gii thiu.
Chng trnh con th 2: basicPrintDemo()
Trong chng trnh con ny chng ta s iu khin sao cho LCD hin th dng ch
m ta mong mun.
u tin chng ta xo tt c mn hnh bng cu lnh:
lcd.clear();
Chng ta cn lu i tng lcd : nu nh ban u chng ta khai bo i tng l
LCD16x2 th chng ta phi vit cu lnh l LCD16x2.clear().
hin th mt dng k t bt k ln mn hnh th ta dng cu lnh print() c th
trong trng hp ny l:
lcd.print("HV HANG KHONG");
Cc k t bn trong ngoc kp s c hin th ln mn hnh, nu tng cc k t ln
hn 16, th cc k t t th 17 tr i s khng c hin th ln mn hnh.
Chng trnh con th 3: displayOnOffDemo()
Trong chng trnh con ny hng dn cho chng ta cc cu lnh chc nng bt v
tt mn hnh. Ta cn quan tm ti 2 cu lnh sau.
lcd.nodisplay();
Cu lnh ny c chc nng tt mn hnh hin th.
lcd.display();
Cu lnh ny cho php hin th mn hnh.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 42

Chng trnh con th 4: setCursorDemo()
Hnh 31: LCD 16x2.
Chng trnh con ny hng dn chng ta cc cu lnh dch chuyn v tr con tr
theo mun, cc cu lnh cn quan tm l:
lcd.setCursor(5,0);
lcd.print("5,0");
Dch con tr n ct th 5 hng th 0. Sau xut ra mn hnh LCD 5,0 t ct th
5 hng 0 tr i.
lcd.setCursor(10,1); // thiet lap con tro cot 10 hang thu 1
lcd.print("10,1");
Dch con tr n v tr ct 10 hng th 1. Xut ra mn hnh "10,1"
Tng t nh vy i vi 2 cu lnh cui l :
lcd.setCursor(3,1); // thiet lap con tro o vi tri cot 3 hang 1
lcd.print("3,1");

HC VIN HNG KHNG SV: NGUYN TRUNG TN 43

Chng trnh con th 5: scrollLeftDemo()
Chng trnh con ny s dch cc k t ang hin th trn mn hnh sang bn tri.
Cc cu lnh trong chng trnh con ny khng kh, chng ta ch quan tm ti cc cu lnh
sau:
for(int x=0; x<16; x++) {
lcd.scrollDisplayLeft(); // cuon man hinh sang trai
delay(250);
}
Trong vng lp chng ta c cu lnh:
lcd.scrollDisplayLeft();
Mi ln chng trnh thc hin cu lnh ny s dch tt c cc k t ang hin th
trn mn hnh sang bn tri 1 ct. Chng ta c vng lp 16 ln nh vy cc k t s c
dch ht v bn tri.

Hnh 32: Trc khi dch tri.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 44

Hnh 33: Dch tri ln th 8.
Khi vng lp thc hin c 16 ln th mn hnh s trng hon ton.
Chng trnh con th 6: scrollRightDemo()
Hon ton tng t nh scrollLeftDemo() chng trnh con ny s thc hin dch
phi cc k t trn mn hnh.
Cu lnh cn quan tm l: lcd.scrollDisplayRight();
Chng trnh con th 7: cursorDemo()
phn ny chng ta s tm hiu cc cu lnh iu khin con tr bt, tt v nhp nhy.
lcd.cursor() : cu lnh ny cho php chng ta bt con tr.
Hnh 34: Con tr LCD

HC VIN HNG KHNG SV: NGUYN TRUNG TN 45

lcd.noCursor(): tt con tr
lcd.blink(): nhp nhy con tr
Chng trnh con th 8: createGlyphDemo()
By gi chng ta s tm hiu cch t to ra mt k t khng thuc h thng m
ASCII, chng hn nh cc ch ci c du trong h thng ch ci ting vit nh , , , .
i vi LCD 16x2 c mi k t trong mt s c to thnh t 5x8 nh ( 5 ct,
8 dng)
to mt k t th chng ta dng mt mng gm 8 phn t, mi phn t l 1 byte,
nhng ch s dng 5 bit thp ca 1 byte biu din k t .
byte happy[8] = { //to ch
B01110,
B10001,
B00000,
B01110,
B10001,
B10001,
B01110,
B00000
};
byte sad[8] = { to ch
B01110,
B00001,
B00010,
B01110,
B10001,

HC VIN HNG KHNG SV: NGUYN TRUNG TN 46

B10001,
B01110,
B00000
};
Sau khi to c k t mong mun ta s dng cu lnh:
lcd.createchar(num,data);
Trong :
num: l cc ch s t 0 n 7.
data: l cc mng cha k t ca chng ta.
Cu lnh ny s gn k t ta to vo mt ch s.
lcd.createChar(0, happy);
lcd.createChar(1, sad);
hin th mt k t ra mn hnh ta dng cu lnh lcd.write(data).
Hin th ch ra mn hnh LCD.
lcd.write(byte(0));
Hin th ch ra mn hnh LCD
lcd.write(byte(1));


HC VIN HNG KHNG SV: NGUYN TRUNG TN 47

8) Project 8: Giao tip vi my tnh.
Trong phn ny ti s trnh by cch giao tip gia Arduino vi my tnh thng
qua chun giao tip ni tip khng ng b UART.
iu khin bt tt bng cch gi lnh t my tnh.
S mch:
Dng cp USB kt ni Arduino vi my tnh. Led ni vi chn 13 thng qua in tr
220 ohm.
Code chng trnh:
int ledpin =13;
void setup() {
Serial.begin(9600);
pinMode(ledpin,OUTPUT);
}

void loop() {
if( Serial.available()>0)
char setupled = Serial.read();}
switch(setupled)
{
case '1' : {
digitalWrite(ledpin,HIGH); break;
}
case '0':
{
digitalWrite(ledpin,LOW); break; }}}

HC VIN HNG KHNG SV: NGUYN TRUNG TN 48

Gii thch chng trnh:
c th iu khin c led bt tt chng ta cn m Serial monitor bng cch nhp
vo biu tng :
Hnh 35: Serial Monitor.
Trong chng trnh ta cn ch ti cc cu lnh sau:
Serial.begin(9600);
Cu lnh ny thit lp tc truyn d liu ca chng ta l 9600 bps.
Chng ta c th thit lp cc tc khc nh 300, 1200, 2400, 4600, 9600, 19200,
57600, 115200. Cn lu rng tc truyn gia my tnh v thit b phi ging nhau,
nu khng th d liu nhn c s b li.
Trong vng lp loop() chng ta c cu lnh:
Serial.available()>0
Cu lnh ny dng kim tra xem c d liu truyn ti hay khng. Ngoi ra
Serial.available() cn tr v cho chng ta s k t c truyn ti Arduino

HC VIN HNG KHNG SV: NGUYN TRUNG TN 49

char setupled = Serial.read();
Khi d liu c truyn ti Arduino th d liu s c lu vo b nh m. Chng
ta khai bo bin setupled vi kiu d liu char v dng hm Serial.read() truy sut d
liu trong b nh m v lu vo trong n. Nh vy k t u tin trong chui k t c
truyn ti s c gn vo setupled. Dng hm Switch-case kim tra, nu l 1 th sng
led, nu l 0 th tt led, cc trng hp cn li th khng lm g.


9) Project 9. o nhit mi trng dng LM35D hin th LCD v
Serial Monitor.
S mch.

Hnh 36: giao tip vi LM35, LCD v Serial monitor.
Code chng trnh:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // dinh nghia chan cho LCD
int maxC=0, minC=100, maxF=0, minF=212;

HC VIN HNG KHNG SV: NGUYN TRUNG TN 50

int scale = 1;
int buttonPin=8; //chan ket noi voi phim nhan
void setup() {
lcd.begin(16, 2); // khai bao su dung lcd 16x2
analogReference(INTERNAL);// khai bao dien ap tham chieu cho lm35
Serial.begin(9600);
pinMode(buttonPin, INPUT);
lcd.clear();
}
void loop() {
lcd.setCursor(0,0);
int sensor = analogRead(0); // doc du lieu tu lm35
int buttonState = digitalRead(buttonPin);
if (buttonState==1) {
scale=-scale;
lcd.clear();
}
switch (scale) {
case 1:
celsius(sensor);
break;
case -1:
fahrenheit(sensor);}
delay(250);
}
void celsius(int sensor) {
lcd.setCursor(0,0);

HC VIN HNG KHNG SV: NGUYN TRUNG TN 51

int temp = sensor* 0.1074188;
Serial.print("Nhiet do moi truong :");
Serial.print(temp);
Serial.println(" do C");
lcd.print(temp);
lcd.write(B11011111); //
0

lcd.print("C ");
if (temp>maxC) {maxC=temp;}
if (temp<minC) {minC=temp;}
lcd.setCursor(0,1);
lcd.print("H=");
lcd.print(maxC);
lcd.write(B11011111);
lcd.print("C L=");
lcd.print(minC);
lcd.write(B11011111);
lcd.print("C ");
}
void fahrenheit(int sensor) {
lcd.setCursor(0,0);
float temp = ((sensor * 0.1074188) * 1.8)+32; // chuyen doi sang do F
Serial.print("Nhiet do moi truong :");
Serial.print(int(temp));
Serial.println("do F");
lcd.print(int(temp));
lcd.write(B11011111);
lcd.print("F ");

HC VIN HNG KHNG SV: NGUYN TRUNG TN 52

if (temp>maxF) {maxF=temp;}
if (temp<minF) {minF=temp;}
lcd.setCursor(0,1);
lcd.print("H=");
lcd.print(maxF);
lcd.write(B11011111);
lcd.print("F L=");
lcd.print(minF);
lcd.write(B11011111);
lcd.print("F ");
}
Gii thch chng trnh:
Tng quan: chng trnh s kim ta mc in p ng ra ca LM35 tng ng vi
nhit ca mi trng hin th trn Lcd v Serial Monitor. Nhit ca mi trng c
tnh bng C v F, nu nhn phm th s thay i hin th l C hay F.
Bt u chng trnh ta khai bo th vin Lcd v nh ngha chn cng nh cc bin
cn dng cho ton b chng trnh.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // dinh nghia chan cho LCD
int maxC=0, minC=100, maxF=0, minF=212;
int scale = 1;
int buttonPin=8;// chan ket noi voi phim nhan
Trong hm setup() chng ta cn quan tm ti cu lnh:
analogReference(INTERNAL);
Khai bo in p tham chiu cho b chuyn i ADC bn trong Arduino Uno l 1,1V
( y l gi tr in p tham chiu ni mc nh ca Arduino Uno).
tnh ton ng nhit mi trng chng ta cn lu nhng im sau:
B chuyn i ADC gm 10 bit tc l 1024 mc.

HC VIN HNG KHNG SV: NGUYN TRUNG TN 53

in p tham chiu cho b chuyn i ADC l 1,1V.
i vi LM35 th in p ng ra tuyn tnh vi nhit ca mi trng.
H s chuyn i in p sang nhit l 10mV/1
0
C = 0,01V/1
0
C.
Xy dng cng thc tnh nhit .
Ta bit:
1,1 volt (1100 mV) c 1024 mc biu din, vy 1 mc s l 1,1/1024 (volt),
chuyn i t in p sang nhit th ta chia tip cho 0,01V. T y ta thy c 1 mc
chuyn i ca ADC tng ng vi
1,1
1024.0,01

0
C = 0.10742188
0
C.
Nh vy chng ta ch cn c gi tr u vo chn A0 (gi tr nm trong khong 0
- 1023) v gn chng cho bin integer sensor.
int sensor = analogRead(0);
tnh ra nhit chnh xc chng ta nhn gi tr ca sensor vi 0.10742188.
Trong chng trnh con celsius(int sensor) ta c cu lnh:
int temp = sensor* 0.1074188;
Trong chng trnh con fahrenheit(int sensor) ta c cu lnh chuyn i t C sang
F l:
float temp = ((sensor * 0.1074188) * 1.8)+32;


HC VIN HNG KHNG SV: NGUYN TRUNG TN 54

10) Project 10: Giao tip Arduino vi Servo motor.
S mch
Hnh 37: Giao tip vi Servo motor
Code chng trnh.
#include <Servo.h>
Servo servo1;
void setup()
{
servo1.attach(5);
}
void loop()
{
int angle = analogRead(0); // Read the pot value
angle=map(angle, 0, 1023, 0, 180);

HC VIN HNG KHNG SV: NGUYN TRUNG TN 55

servo1.write(angle);
delay(15);
}
Gii thch chng trnh:
Khai bo th vin cho Servo motor bng cu lnh.
#include <Servo.h>
Khai bo i tng c tn l servo1
Trong hm setup() ta nh ngha chn cho Servo:
servo1.attach(5) ;
Chn s 5 ca Arduino s ni vi chn input ca Servo motor.
c gi tr in p ca bin tr v gn n cho bin integer angle :
int angle = analogRead(0);
Gi tr c c t bin tr s nm trong khong 0 n 1023 v gc quay ca Servo
t 0
0
n 180
0
ta s dng cu lnh :
angle=map(angle, 0, 1023, 0, 180);
Cu Lnh ny s chuyn i t gi tr ca bin tr sang gc quay tng ng ca
Servo.
iu khin gc quay ca Servo ta dng cu lnh:
servo1.write(angle);


HC VIN HNG KHNG SV: NGUYN TRUNG TN 56

Ti liu tham kho.
Beginning Arduino - Mike McRoberts
Arduino cookbook Michael Margolis
http://arduino.cc
http://blogembarcado.blogspot.com

You might also like