You are on page 1of 5

Phn 23: Nhp xut nng cao Arduino

Nhp xut nng cao (Advanced


I/O)

tone()

noTone()

shiftOut()

shiftIn()

pulseIn()

1/ tone():
Gii thiu
Hm ny s to ra mt sng vung tn s c nh trc (ch na chu k)
ti mt pin digital bt k (analog vn c). Thi hn ca qu trnh to ra
sng m c th c nh trc hoc n s pht ra m thanh lin tc cho n
khi Arduino IDE chy hm noTone(). Chn digital cn c kt ni ti
mtbuzzer hoc mt loa c th pht c m thanh.
Lu rng, ch c th s dng duy nht m hm tone() trong cng mt thi
im. Nu hm tone() ang chy trn mt pin no , by gi bn li tone()
thm mt ln na th hm tone() sau s khng c hiu lc. Nu bn tone() ln
pin ang c tone() th hm tone()sau s thay i tn s sng ca pin .
Trn mch Arduino Mega, s dng hm tone() th s can thip n u ra
PWM ti cc chn digital 3 v digital 11.
Hm tone() s khng th pht ra m thanh c tn s < 31 Hz. bit thm
v k thut ny.
Ch : Nu bn mun chi nhiu cao khc nhau trn nhiu pin. Th trc
khi chi trn mt pin khc th bn phi noTone() trn pin ang c s dng.

C php
tone(pin, frequency)
tone(pin, frequency, duration)

Tham s
pin: cng digial / analog m bn mun chi nhc (ni cch khc l pin c
kt ni ti loa)
frequency: tn s ca sng vung (sng m) unsigned int
duration: thi gian pht nhc, n v l mili giy (ty chn) unsigned long

Tr v
khng

2/ noTone() :
Gii thiu
Hm ny c nhim v kt thc mt s kin tone() trn mt pin no (ang
chy lnh tone()). Nu khng c bt k hm tone() no ang hot ng th
hm ny s khng gy bt k nh hng g n chng trnh.
Ch : Nu bn mun chi nhiu cao khc nhau trn nhiu pin. Th trc
khi chi trn mt pin khc th bn phi noTone() trn pin ang c s dng.

C php
noTone(pin)

Tham s
pin: cng digial / analog m bn mun chi nhc (ni cch khc l pin c
kt ni ti loa)

Tr v
khng

3/ shiftOut() :
Gii thiu
shiftOut() c nhim v chuyn 1 byte (gm 8 bit) ra ngoi tng bit mt. Bit
c chuyn i c th c bt u t bit nm bn tri nht (leftmost) hoc
t bit nm bn phi nht (rightmost). Cc bit ny c xut ra ti chn
dataPin sau khi chn clockPin c pulsed (c mc in th l HIGH, sau b
y xung LOW).
Lu : Nu bn ang giao tip vi mt thit b m chn clock ca n c gi
tr c thay i t mc in th LOW ln HIGH (rising edge) khi shiftOut, th
bn cn chc chn rng chn clockPin cn c chy lnh ny:
digitalWrite(clockPin,LOW);

C php
shiftOut(dataPin, clockPin, bitOrder, value)

Tham s
dataPin: pin s c xut ra tn hiu (int)
clockPin: pin dng xc nhn vic gi tng bit ca dataPin (int)
bitOrder: mt trong hai gi tr MSBFIRST hoc LSBFIRST.
(Bt u t bit bn phi nht hoc Bt u t bit bn tri nht)
value: d liu cn c shiftOut. (byte)

Ch
shiftOut() ch xut c d liu kiu byte. Nu bn mun xut mt kiu d
liu ln hn th bn phi shiftOut 2 ln (hoc nhiu hn), mi ln l 8 bit.

Tr v
khng

4/pulseIn() :
M t

c mt xung tn hiu digital (HIGH/LOW) v tr v chu k ca xung tn hiu,


tc l thi gian tn hiu chuyn t mc HIGH xung LOW hoc ngc li (LOW
-> HIGH). Mt s cm bin nh cm bin mu sc nh TCS3200D hay cm
bin siu m dng HC-SRxx phi giao tip qua xung tn hiu nn ta phi kt
hp gia 2 hm digitalWrite() xut tn hiu v pulseIn() c tn hiu.

C php
pulseIn(pin, value);
pulseIn(pin, value, timeout);

Trong :
pin l chn c chn c xung. pin c kiu d liu l int.
Nu t value l HIGH, hm pulseIn() s i n khi tn hiu t mc HIGH,
khi ng b m thi gian. Khi tn hiu nhy xung LOW, b m thi gian
dng li. pulseIn() s tr v thi gian tn hiu nhy t mc HIGH xung LOW
ny. Nu t value l LOW, hm pulseIn() s lm ngc li, l o thi
gian tn hiu nhy t mc LOW ln HIGH. value c kiu d liu l int.
Nu tn hiu lun mt mc HIGH/LOW c nh th sau khong thi
gian timeout, hm pulseIn() s dng b m thi gian v tr v gi tr
0.timeout c tnh bng n v micro giy. Gi tr mc nh ca timeout l
60.106 tng ng vi 1 pht. Gi tr ti a l 180.106 tng ng vi 3
pht. timeout c kiu d liu l unsigned long.

Tr v
Mt s nguyn kiu unsigned long, n v l micro giy. pulseIn() tr v 0
nu thi gian nhy trng thi HIGH/LOW vt qu timeout

V d
int pin = 7;
unsigned long duration;

void setup() {
Serial.begin(9600);
pinMode(pin, INPUT);
}

void loop() {
duration = pulseIn(pin, HIGH);
//Hy ni chn 7 ca Arduino vo ng tn hiu
//bn mun c xung

Serial.println(duration);
}

You might also like