You are on page 1of 7

Phn 19: Hm thi gian Arduino

Hm thi gian

millis()

micros()

delay()

delayMicroseconds()

1/millis() :
Gii thiu
millis() c nhim v tr v mt s l thi gian (tnh theo mili giy) k t lc
mch Arduino bt u chng trnh ca bn. N s trn s v quay s 0 (sau
tip tc tng) sau 50 ngy.

Tham s
khng

Tr v
mt s nguyn kiu unsigned long l thi gian k t lc thng trnh
Arduino c khi ng

V d
unsigned long time;

void setup(){
Serial.begin(9600);
}
void loop(){

Serial.print("Time: ");
time = millis();
// in ra thi gian k t lc chng trnh c bt u
Serial.println(time);
// i 1 giy trc khi tip tc in
delay(1000);
}

Lu quan trng:
Cc hm v thi gian trong Arduino gm millis() v micros() s b trn s sau
1 thi gian s dng. Vi hm millis() l khong 50 ngy. Tuy nhin, do l kiu
s nguyn khng m (unsigned long) nn ta d dng khc phc iu ny
bng cch s dng hnh thc p kiu.
unsigned long time;
byte ledPin = 10;
void setup()
{
// khi to gi tr bin time l gi tr hin ti
// ca hm millis();
time = millis();
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);

void loop()
{
// Lu cc du ngoc khi p kiu
// on chng trnh ny c ngha l sau mi 1000 mili giy
// n Led chn s 10 s thay i trng thi
if ( (unsigned long) (millis() - time) > 1000)
{

// Thay i trng thi n led


if (digitalRead(ledPin) == LOW)
{
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}

// cp nht li bin time

time = millis();
}
}
Thng thng, nu ta c 2 s A, B v B ln hn A ( B > A) th php tr thu
c A-B l mt s m. Nhng khi p kiu unsigned long l kiu s nguyn
dng, khng c s m nn gi tr tr v l 1 s nguyn dng ln.
V d: kt qu ca php tr:
unsigned long ex = (unsigned long) (0 - 1);
l 4294967295, con s ny chnh l gi tr ln nht ca kiu s unsigned
long. Ging nh bn p xe 1 vng v quay v vch xut pht vy.

2/micros() :
Gii thiu
micros() c nhim v tr v mt s l thi gian (tnh theo micro giy) k t
lc mch Arduino bt u chng trnh ca bn. N s trn s v quay s 0
(sau tip tc tng) sau 70 pht. Tuy nhin, trn mch Arduino 16MHz (v
d Duemilanove v Nano) th gi tr ca hm ny tng ng 4 n v micro
giy. V d micros() tr v gi tr l 10 th c ngha chng trnh ca bn
chy c 40 microgiy. Tng t, trn mch 8Mhz (v d LilyPad), hm ny
c gi tr tng ng 8 micro giy.
Lu : 106 micro giy = 1 giy

Tham s
khng

Tr v
mt s nguyn kiu unsigned long l thi gian k t lc thng trnh Arduino
c khi ng

V d
unsigned long time;

void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print("Time: ");
time = micros();
// in ra thi gian k t lc chng trnh c bt u
Serial.println(time);
// i 1 giy trc khi tip tc in
delay(1000);
}

3/ delay :
Gii thiu
delay c nhim v dng chng trnh trong thi gian mili giy. V c mi
1000 mili giy = 1 giy.

C php

delay(ms)

Thng s
ms: thi gian mc mili giy. ms c kiu d liu l unsigned long

Tr v
khng

4/ delayMicroseconds() :
Gii thiu
delayMicroseconds c nhim v dng chng trnh trong thi gian micro giy.
V c mi 1000000 micro giy = 1 giy.

C php
delayMicroseconds(micro);

Thng s
micro: thi gian mc micro giy. micro c kiu d liu l unsigned int. micro
phi <= 16383. Con s ny l mc ti a ca h thng Arduino, v c th s
c iu chnh tng trong tng lai. V nu bn mun dng chng trnh lu
hn th bn cn dng hm delay

Tr v
khng
V d
int outPin = 8;

void setup()
{

// digital pin 8

pinMode(outPin, OUTPUT);

// t l output

void loop()
{
digitalWrite(outPin, HIGH); // xut 5V
delayMicroseconds(50);

// i 50 micro giy

digitalWrite(outPin, LOW);

// xut 0V

delayMicroseconds(50);

// i 50 micro giy

You might also like