Most
egy kicsit átnézzük az
analóg
bemenetek kezelését, ehhez nem kell más csak egy potenciaméter, néhány
led és néhány ellenállás. Mint tudott az Arduino Uno
hat analóg bemeneten képes fogadni a feldolgozandó analóg
értékeket. A belső ADC (analóg-digitális konverter) 10 bites (0-1023,
1024 lehetséges
érték) digitális jelé alakítja át az analóg jelet.
Azt, hogy ez a mintavételezés
hányszor történik meg másodpercenként az mi állíthatjuk be.
Térjünk rá a kapcsolásra: első lépésként a 10kohmos potit kössük be: egyik szélső lába → Uno 5V másik szélső láb → GND középső láb → A0, (analóg 0 pin) |
Lássunk egy egyszerű példát:
void setup(){
Serial.begin(9600);
}
void loop(){
int a = analogRead(A0);
Serial.println(a);
delay(50);
}
a
soros monitorra íratjuk
ki az analóg
bemenet digitális értékeit, ezt az analogRead()
utasítás
segítségével érhetjük el ami
beolvassa A0-s bemenet pillanatnyi értékét, ezt az értéket a
bemenet
feszültség szintjének megfelelő
digitális értéké alakítja át. Például: 0V – 0, 5V – 1023,
2.5V – 512.
Nézzünk egy másik példát, itt a
beolvasott analóg jelet feldolgozzuk és egy led sor segítségével
"kiíratjuk” az értékét.
A projekthez szükséges:
egy
10kohmos poti,
5db led hozzá 270-330ohmos
áramkorlátozó ellenállások,
Uno, plusz usb kábel,
próbapanel összekötő vezetékekkel.
A
kapcsolásról: az 5db
ledet rákötjük
az ellenállásokon keresztül a 2-6 digitális kimenetekre.
A poti középső lába az A0-ra, a
jobb oldali a +5V-re a bal a GND-re.
A progi:
void
setup(){
for( int i=2;i<7;i++){
pinMode(i,OUTPUT);//beállítjuk
kimenetnek 2-től 6-ig a pineket
}
}
void loop(){
int analog;
int digit;
analog = analogRead(A0);//analóg
érték beolvasása analog változóba
digit = map(analog,0,1023,1,6);// át
alakítjuk az 1024 értéket 6 értéké
if(digit>0){ //ha digit értéke
nagyobb mint 0 akkor végrehajtja a következő utasításokat.
for(int i=2;i<7;i++)//kikapcsolja
a ledeket
digitalWrite(i,LOW);
for(int i=2;i<=digit;i++)//
bekapcsolja a ledeket a digit értékének megfelelően
digitalWrite(i,HIGH);
}
}
A
program beolvassa az
analóg bemenet
értékét 0-tól 1023-ig, ezt részarányosan átalakítja 1-től
6-ig terjedő értékké és
bekapcsolja az értéknek megfelelő ledeket.
Az átalakítást a
map(vált,kezd_be,vég_be,kezd_kim,vég_kim);
utasítás végzi a
következő módon:
a zárójelen belüli vált értékét
dolgozza fel, a kezd_be és vég_be azt a tartományt jelöli amit
majd
a vált értékéből át fog
konvertálni arányosan a kezd_kim és vég_kim érték közé.
Ez a mi esetünkben az 1024 bemeneti
érték átalakítása 6db kimeneti értékké, pl.:analóg 171 érték
felett kapcsol be az első led.
Folyt köv.