Egy analóg bemeneti kivezetés olvasása, kalibrálja az eredményt, majd használja ezt az adatot a LED elsötétítésére vagy világosabbá tételére.
Utolsó felülvizsgálat: 2022.02.04 16:50
Ez a példa bemutatja, hogyan kell beolvasni egy analóg bemeneti kivezetést, leképezni az eredményt egy 0 és 255 közötti tartományra, ezzel az eredménnyel beállítani a kimeneti érintkező impulzusszélesség-modulációját (PWM) a LED elhalványítására vagy világosabbá tételére, és kinyomtatni az értékeket az Arduino Software (IDE) soros monitorára.
Hardver szükséglet
Arduino kártya
Potenciométer
Piros LED
200 ohm-os ellenállás
Az áramkör

Csatlakoztassa a potméter egyik érintkezőjét az 5 V-hoz, a középső érintkezőt az analóg 0-s kivezetéshez, a fennmaradó érintkezőt pedig a földhöz. Ezután csatlakoztasson egy 220 ohmos áramkorlátozó ellenállást a 9-es digitális kivezetéshez, sorba kapcsolva a LED-del. A LED hosszú, pozitív lábát (anódját) az ellenállás kimenetére, a rövidebb, negatív lábát (a katódot) a testre kell kötni.
Vázlat

A kód
Az alábbi vázlaton két kivezetés-hozzárendelés (analóg 0 a potenciométerünkhöz és digitális 9 a LED-hez) és két változó, a sensorValue
és outputValue
deklarálása után a setup()
függvényben csak a soros kommunikáció elindítása szükséges.
Ezután a fő ciklusban a sensorValue
hozzá van rendelve a potenciométerről leolvasott nyers analóg érték tárolásához. Az Arduino analogRead
tartománya 0 és 1023 között van, az analogWrite
tartománya pedig csak 0 és 255 között van, ezért a potenciométer adatait át kell alakítani, hogy a kisebb tartományba illeszkedjenek, mielőtt a LED tompítására használnák.
Ennek az értéknek a konvertálásához használja a map() nevű függvényt:
outputValue = map(sensorValue, 0, 1023, 0, 255);
Az outputValue
értéke megegyezik a potenciométer skálázott értékével. A map()
öt argumentumot fogad el: A leképezendő érték, a bemeneti adatok alacsony és magas értékei, valamint az újraleképezendő adatok alacsony és magas értékei. Ebben az esetben az érzékelő adatai az eredeti 0 és 1023 közötti tartományról 0 és 255 közöttire vannak leképezve.
Az újonnan leképezett szenzoradatok ezután az analogOutPin kimenetre kerülnek, és a LED elsötétül vagy világosabbá válik a potenciométer elforgatásakor. Végül mind a nyers, mind a skálázott szenzorértékek elküldésre kerülnek az Arduino Software (IDE) soros monitor ablakába, folyamatos adatfolyamban.
/*
Analog input, analog output, serial output
Beolvas egy analóg bemeneti kivezetést, leképezi az eredményt egy 0 és 255
közötti tartományra, és az eredményt használja a kimeneti kivezetés
impulzusszélesség-modulációjának (PWM) beállításához.
Az eredményeket a Serial Monitorra is kinyomtatja.
Az áramkör:
- potenciométer a 0 analóg kivezetéshez csatlakoztatva.
A potenciométer középső csatlakozója az analóg kivezetéshez megy.
A potenciométer oldalsó csatlakozói +5V-ra és a földelre mennek.
- A LED a 9-es digitális kivezetésről a földre csatlakozik.
created 29 Dec. 2008
modified 9 Apr 2012
by Tom Igoe
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/analog/AnalogInOutSerial
*/
// Ezek az állandók nem változnak. A használt kivezetések elnevezésére szolgálnak:
const int analogInPin = A0; // Analóg bemeneti kivezetés, amelyhez a potenciométer csatlakozik
const int analogOutPin = 9; // Analóg kimeneti kivezetés, amelyhez a LED csatlakozik
int sensorValue = 0; // a potméterből kiolvasott érték
int outputValue = 0; // érték a PWM kimenethez (analóg kimenet)
void setup() {
// a soros kommunikáció inicializálása 9600 bps-sel:
Serial.begin(9600);
}
void loop() {
// olvassa el az analóg be értéket:
sensorValue = analogRead(analogInPin);
// képezze le az analóg kimenet tartományára:
outputValue = map(sensorValue, 0, 1023, 0, 255);
// módosítsa az analóg kimenet értékét:
analogWrite(analogOutPin, outputValue);
// nyomtassa ki az eredményeket a Serial Monitorba:
Serial.print("sensor = ");
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.println(outputValue);
// várjon 2 ezredmásodpercet a következő ciklus előtt, hogy az analóg-digitális
// átalakító rendeződjön az utolsó leolvasás után:
delay(2);
}
Tudj meg többet
További alapvető oktatóanyagokat a beépített példák részben talál.
Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.