Professional Documents
Culture Documents
Huong Dan Su Dung Arduino-Nguyen Trung Tin-Hvhk PDF
Huong Dan Su Dung Arduino-Nguyen Trung Tin-Hvhk PDF
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.
Tc gi
Chip ATmega328
in p cp ngun 5V
in p u vo (input) (kin 7-12V
ngh )
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
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 Vin v GND cp
ngun cho Arduino.
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.
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.
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.
Hnh 6: Driver
my tnh
b) Arduino IDE Menu:
Sketch menu
http://blogembarcado.blogspot.com/search/label/Proteus
Proteus 7:
Proteus 8:
Sau y ti s to mt project nhp nhy led thi gian delay l 1 giy s dng proteus
m phng.
S mch:
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.
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:
Sau tip tc bm
int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT); }
pinMode(pin,Mode);
pinMode(ledPin, OUTPUT);
pinMode(9, OUTPUT);
void loop() {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
HC VIN HNG KHNG SV: NGUYN TRUNG TN 16
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);
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.
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);
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH); }
else {
digitalWrite(ledPin, LOW);
int direction = 1;
int currentLED = 0;
digitalWrite(ledPin[currentLED], HIGH);
currentLED += direction;
Hai cu lnh :
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.
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.
int potPin = 0 ;
int potPin = 0 ;
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.
int potPin = 0;
int transistorPin = 9;
int potValue = 0;
void setup() {
pinMode(transistorPin, OUTPUT);}
void loop() {
potValue = analogRead(potPin) / 4;
analogWrite(transistorPin, potValue);
}
int potPin = 0;
int transistorPin = 9;
int potValue = 0
potValue = analogRead(potPin) / 4;
HC VIN HNG KHNG SV: NGUYN TRUNG TN 29
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.
analogWrite(transistorPin, potValue);
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
#include <tenthuvien.h>
#include <LiquidCrystal.h>
lcd.begin(16,2);
Trong loop() chng ta c 8 chng trnh con, v ti s gii thch tng chng trnh
con.
Trong chng trnh con ny chng ta s iu khin sao cho LCD hin th dng ch
m ta mong mun.
lcd.clear();
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();
lcd.display();
lcd.setCursor(5,0);
lcd.print("5,0");
lcd.print("10,1");
lcd.print("3,1");
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:
delay(250);
lcd.scrollDisplayLeft();
Hon ton tng t nh scrollLeftDemo() chng trnh con ny s thc hin dch
phi cc k t trn mn hnh.
lcd.write(byte(0));
lcd.write(byte(1));
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.
S mch:
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 47
Gii thch chng trnh:
c th iu khin c led bt tt chng ta cn m Serial monitor bng cch nhp
vo biu tng :
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).
Ta bit:
#include <Servo.h>
Servo servo1;
void setup()
{
servo1.attach(5);
void loop()
#include <Servo.h>
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 :
servo1.write(angle);