You are on page 1of 33

LP TRNH

ARDUINO

ARDUINO

Mt chng trnh trn Arduino cn


ti thiu nhng g?
Trong mt chng trnh Arduino,
bn cn c ti thiu 2 hm h thng
chnh, bt buc phi c, khng c
l khng c. l setup() v
loop()

ARDUINO

Mt chng trnh trn Arduino cn


ti thiu nhng g?
void setup()
{
// ton b on code nm trong hm ny ch c chy
duy nht mt ln khi chy chng trnh
}
void loop()
{
// lp li mi mi sau khi chy xong setup()
}

LED nhp nhy


Ni dung chnh cn nm
- Tm hiu cch iu khin mt con n led nhp nhy.
Phn cng
- Arduino UNO R3
- 01 Led
- 01 in tr 220 ohm
Lp mch
- Cc m Led => GND
- Cc dng Led => in tr => DIGITAL 13
Lu : V n Led s dng
dng thp (<40mA) nn ta
c th kt ni trc tip ln
mch Arduino

LED nhp nhy


M lp trnh v gii thch
Trc tin, c mi khi dng mt con LED, chng ta phi
pinMode OUTPUT chn Digital m ta s dng cho con n
LED. Trong v d ngy hm nay, chng ta s dng chn
LED l chn digital 13. Nn on code sau cn nm trong
void setup()
void setup()
{
pinMode (13, OUTPUT);
}

LED nhp nhy


M lp trnh v gii thch
bt mt con n LED, bn phi digitalWrite HIGH cho
chn s 13 (chn Digtal c kt ni vi con LED). on
code ny nm trong void loop()
void loop()
{
digitalWrite (13, HIGH);
}
Dng lnh trn s cp mt in th l 5V vo chn s
Digital 13. in th s i qua in tr 220ohm ri n n
LED. tt mt n LED, bn s dng hm LOW.
digitalWrite (13, LOW);

LED nhp nhy


M lp trnh v gii thch
Lc ny in th ti chn 13 s l 0 V => n LED tt. V
thy c trng thi bt v tt ca n LED bn phi
dng chng trnh trong mt khong thi gian lu
mt cm nhn c. V vy, hm delay c to ra lm
vic ny (Dng hn chng trnh bao nhiu mili giy)!
void loop()
{
digitalWrite (13, HIGH); //bt n LED
delay(1000); //Dng chng trnh trong 1s
digitalWrite (13, LOW); // tt n LED
delay(1000); //Dng chng trnh trong 1s
}

Bin (variables)
Ni dung chnh cn nm
- Tm hiu cch khai bo bin, c nhn ha dng lnh.
void setup()
{
pinMode (13, OUTPUT);
}
void loop()
{
digitalWrite (13, HIGH); //bt n LED
delay(1000); //Dng chng trnh trong 1s
digitalWrite (13, LOW); // tt n LED
delay(1000); //Dng chng trnh trong 1s
}

Bin (variables)
M lp trnh v gii thch
- Theo cch lp trnh ta thy mi ln s dng chn
DIGITAL 13 ta phi gi s 13. c nhn ha dng lnh
v d hiu ta khai bo mt bin thay th cho s 13.
- Cu trc khai bo bin:
[kiu d liu] [TenBien];
- Khai bo bin tn led kiu s nguyn v gn gi tr l 13
cho bin led
int led; //khai bo bin tn l led
led = 13; //gn gi tr 13 cho bin led
- Vit rt gn:
int led = 13; //khai bo bin led v gn gi tr 13
Lu : Tn bin phn bit ch hoa, thng. Khng du,
khng khong trng.

Bin (variables)
Cc kiu d liu
- boolean: ch nhn mt trong hai gi tr true hoc false
- char: kiu d liu biu din cho 1 K T
- byte: biu din s nguyn t 0 n 255
- int: biu din s nguyn t -32,768 n 32,767
- long: biu din s nguyn t -2,147,483,648 n
2,147,483,647
- float: biu din s thc t -3.4028235E+38 n
3.4028235E+38
- string: biu din kiu chui k t
boolean TrangThai = true;
char KyTu =A;
byte A = 255;
int led = 13;
long B = -2147483648;

float C = 3.14;
string D = Nha Thieu Nhi;

Bin (variables)
int DenLed = 13; //Khai bo bin DenLed v gn = 13
void setup()
{
pinMode (DenLed, OUTPUT); //thay v gi 13 ta gi
bin DenLed
}
void loop()
{
digitalWrite (DenLed, HIGH); //bt n LED
delay(1000); //Dng chng trnh trong 1s
digitalWrite (DenLed, LOW); // tt n LED
delay(1000); //Dng chng trnh trong 1s
}

Hm (function)
Ni dung chnh cn nm
- Tm hiu cch vit hm iu khin ring, c nhn ha
dng lnh, rt gn dng lnh.
int DenLed = 13; //Khai bo bin DenLed v gn = 13
void setup()
{
pinMode (DenLed, OUTPUT); //khai bo s dng chn 13 kiu
OUTPUT
}
void loop()
{
digitalWrite (DenLed, HIGH); //bt n LED
delay(1000); //Dng chng trnh trong 1s
digitalWrite (DenLed, LOW); // tt n LED
delay(1000); //Dng chng trnh trong 1s
}

Hm (function)
M lp trnh v gii thch
- Theo cch lp trnh ta thy mi ln mun iu khin n
Led tt m ta phi nhp vo 4 cu lnh. rt gn v d
thao tc ta c th tch ring 4 cu lnh iu khin Led ra
thnh mt hm ring.
- Cu trc hm khng tr v gi tr:
void TenHam()
{
cc cu lnh thc hin;
}
Lu : Tn hm phn bit ch hoa, thng. Khng du,
khng khong trng.

Hm (function)
M lp trnh v gii thch
- Ta s tch 4 dng lnh tt m n led ra thnh mt hm
ring c tn l TatMoLed
void TatMoLed() //hm khng tr v gi tr
{
digitalWrite (DenLed, HIGH); //bt n LED
delay(1000); //Dng chng trnh trong 1s
digitalWrite (DenLed, LOW); // tt n LED
delay(1000); //Dng chng trnh trong 1s
}
- Mi ln tt m Led ta ch cn gi hm TatMoLed()
void loop ()
{
TatMoLed();
}

Hm (function)
M lp trnh v gii thch
int DenLed = 13; //Khai bo bin DenLed v gn = 13
void setup()
{
pinMode (DenLed, OUTPUT); //khai bo s dng chn 13 kiu OUTPUT
}
void loop()
{
TatMoLed();
}
void TatMoLed() //khai bo hm tn TatMoLed khng tr v gi tr
{
digitalWrite (DenLed, HIGH); //bt n LED
delay(1000); //Dng chng trnh trong 1s
digitalWrite (DenLed, LOW); // tt n LED
delay(1000); //Dng chng trnh trong 1s
}

sng LED
Ni dung chnh cn nm
- Tm hiu cch s dng cc chn digital xut gi tr
analog v ng dng chng trong vic lm thay i
sng ca n.
Phn cng
- Arduino UNO R3
- 01 Led
- 01 in tr 220 ohm
Lp mch
- Cc m Led => GND
- Cc dng Led => in tr => DIGITAL ~6
Lu : nhng chn digital c du ~ pha trc mi h tr
xung PWM, bn nh!

sng LED
M lp trnh v gii thch
- Hm analogWrite(): l lnh xut ra t mt chn trn
mch Arduino mt mc tn hiu analog (pht xung
PWM). Ngi ta thng iu khin mc sng ti ca
n LED, tc ng c DC hay hng quay ca ng
c servo bng cch pht xung PWM nh th ny.
analogWrite ([chn pht xung PWM], [gi tr xung PWM]);
- Gi tr mc xung PWM nm trong khong t 0 n 255,
tng ng vi mc duty cycle t 0% n 100%.

sng LED
M lp trnh v gii thch
int led = 6; //khai bo bin led v gn gi tr l 6
void setup()
{
pinMode(led, OUTPUT); //khai bo LED chn 6
}
void loop()
{
analogWrite (led, 127); //bt n LED mc 50%
delay(1000); //Dng chng trnh trong 1s
analogWrite (led, 255); // bt n LED mc 100%
delay(1000); //Dng chng trnh trong 1s
}

sng LED
M lp trnh v gii thch
- Thay v iu khin sng LED th ta c th iu khin
tc ng c vi cch lp trnh tng t.
- iu khin tc ng c ch s dng nhng chn
digital c du ~ pha trc
- Khng c kt ni ng c trc tip vi mch Arduino
m phi kt ni thng qua mch cng sut ng c.

Cm bin
Ni dung chnh cn nm
- Tm hiu cch s dng cc loi cm bin ly gi tr
digital (hoc analog) v ng dng chng trong vic tt
m n LED...
Phn cng
- Arduino UNO R3
- 01 Led
- 01 in tr 220 ohm
- Cm bin: vt cn, m thanh, nh sng, m, ma...

Cm bin
Lp mch
- Cc m Led => GND
- Cc dng Led => in tr => DIGITAL ~6
- Cm bin
- VCC => cc dng 5v
- GND => cc m 5v
- A0 => cng Analog trn mch Arduino => A0
- D0 => cng Digital trn mch Arduino => DIGITAL 2

Tn hiu Digital: mang gi tr LOW hoc HIGH


Tn hiu Analog: mang gi tr t 0 n 1023

Cm bin
M lp trnh v gii thch
int led = 6; //khai bo bin led thay cho s PIN 6
int cambienA = A0; //chn Analog kt ni cm bin
int cambienD = 2; //chn Digital kt ni cm bin
void setup()
{
pinMode(led, OUTPUT);
pinMode(cambienA, INPUT);
pinMode(cambienD, INPUT);
}

V ta c d liu t cm bin vo mch Arduino


nn phi khai bo dng INPUT

Cm bin
M lp trnh v gii thch
void loop()
{
if (digitalRead(cambienD) == HIGH) { //nu c tn hiu
digitalWrite (led, HIGH); //bt n LED
}
else { //khng c tn hiu => LOW
digitalWrite (led, LOW); //tt n LED
}
if (analogRead(cambienA) <= 512) { //nu gi tr <= 512
digitalWrite (led, HIGH); //bt n LED
}
else { //gi tr >512
digitalWrite (led, LOW); //tt n LED
}
}

Cm bin
M lp trnh v gii thch
- Cu trc hm if (iu kin)
if ([biu thc 1] [ton t so snh] [biu thc 2])
{
cc cu lnh thc hin khi iu kin ng;
}
else
{
cc cu lnh thc hin khi iu kin sai;
}

- Ton t so snh:
- Bng: ==
- Khng bng: !=
- Nh hn: <
- Ln hn: >

Nh hn hoc bng: <=


Ln hn hoc bng >=
V: &&
Hoc: ||

Cm bin
M lp trnh v gii thch
if (digitalRead(cambienD) == HIGH)
{ //nu iu kin ng => HIGH
digitalWrite (led, HIGH); //bt n LED
}
else
{ //iu kin sai => LOW
digitalWrite (led, LOW); //tt n LED
}
if (analogRead(cambienA) <= 512)
{ //nu iu kin ng => gi tr <= 512
digitalWrite (led, HIGH); //bt n LED
}
else { //iu kin sai => gi tr >512
digitalWrite (led, LOW); //tt n LED
}

ng c DC
Ni dung chnh cn nm
- Tm hiu cch s dng v iu khin tc ng c.
Phn cng
- Arduino UNO R3
- 01 mch cng sut ng c L298
- 02 ng c DC

ng c DC
Lp mch
- Ni ng c DC vo cc chn OUT A, B, C, D trn mch
cng sut L298.
- Cp ngun dng 12v vo chn VCC, cc m vo chn
GND vo mch cng sut L298.
- Ni chn INA, INB, INC, IND tng ng vo cc chn
DIGITAL 2, 3, 4, 5 trn mch Arduino iu khin chiu
quay ng c.
- Ni chn ENA, ENB tng ng vo cc chn DIGITAL
~9, ~10 trn mch Arduino iu khin tc .

ng c DC
M lp trnh v gii thch
int INA = 2; //khai bo chn qun l chn INA - motor 1
int INB = 3; //khai bo chn qun l chn INB - motor 1
int INC = 4; //khai bo chn qun l chn INC - motor 2
int IND = 5; //khai bo chn qun l chn IND - motor 2
int ENA = 9; //chn PWM iu khin tc motor 1
int ENB = 10; //chn PWM iu khin tc motor 2
void setup() {
pinMode(INA, OUTPUT);
pinMode(INB, OUTPUT);
pinMode(INC, OUTPUT);
pinMode(IND, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
}

ng c DC
M lp trnh v gii thch
void Tien()
{
analogWrite(ENA, 127); //iu khin tc motor 1
analogWrite(ENB, 127); //iu khin tc motor 2
digitalWrite(INA, HIGH); //iu khin chiu quay motor 1
digitalWrite(INB, LOW); //iu khin chiu quay motor 1
digitalWrite(INC, HIGH); //iu khin chiu quay motor 2
digitalWrite(IND, LOW); //iu khin chiu quay motor 2
}
Lu : Gi tr tc ng c t 0 n 255.

ng c DC
M lp trnh v gii thch
void Lui()
{
analogWrite(ENA, 127); //iu khin tc motor 1
analogWrite(ENB, 127); //iu khin tc motor 2
digitalWrite(INA, LOW); //iu khin chiu quay motor 1
digitalWrite(INB, HIGH); //iu khin chiu quay motor 1
digitalWrite(INC, LOW); //iu khin chiu quay motor 2
digitalWrite(IND, HIGH); //iu khin chiu quay motor 2
}
Lu : Gi tr tc ng c t 0 n 255.

ng c DC
M lp trnh v gii thch
void Trai()
{
analogWrite(ENA, 0); //iu khin tc motor 1
analogWrite(ENB, 255); //iu khin tc motor 2
digitalWrite(INA, HIGH); //iu khin chiu quay motor 1
digitalWrite(INB, LOW); //iu khin chiu quay motor 1
digitalWrite(INC, HIGH); //iu khin chiu quay motor 2
digitalWrite(IND, LOW); //iu khin chiu quay motor 2
}
Lu : Gi tr tc ng c t 0 n 255.

ng c DC
M lp trnh v gii thch
void Phai()
{
analogWrite(ENA, 255); //iu khin tc motor 1
analogWrite(ENB, 0); //iu khin tc motor 2
digitalWrite(INA, HIGH); //iu khin chiu quay motor 1
digitalWrite(INB, LOW); //iu khin chiu quay motor 1
digitalWrite(INC, HIGH); //iu khin chiu quay motor 2
digitalWrite(IND, LOW); //iu khin chiu quay motor 2
}
Lu : Gi tr tc ng c t 0 n 255.

sng LED
M lp trnh v gii thch
int dosang = 0; //khai bo bin qun l sng n LED
int giatri = 5;
void loop() {
analogWrite(led, dosang); //xut gi tr sng n LED
dosang = dosang + giatri; // thay i gi tr sng ln 5
if (dosang == 0 || dosang == 255) {
giatri = -giatri ; //o ngc bin gi tr t 5 thnh -5
}
delay(30); //i 30 mili giy
}

You might also like