Ismerje meg, hogyan készíthet LED-oszlopdiagramot – LED-ek sorozata egy sorban.
Utolsó felülvizsgálat: 2022.02.04 16:50
Az oszlopdiagram – LED-ek sorozata egy vonalban, mint amilyen az audiokijelzőn látható – az analóg érzékelők szokásos hardveres kijelzője. Egy sor LED-ből áll, egy analóg bemenetből, például egy potenciométerből, és egy kis kódból. Meglehetősen olcsón vásárolhat több LED-es oszlopdiagram-kijelzőt, mint ez. Ez az oktatóanyag bemutatja, hogyan lehet egy sor LED-et vezérelni, de alkalmazható bármilyen digitális kimenetre.
Ez az oktatóanyag a For ciklus és Tömbök oktatóanyagból, valamint az Analóg bemenet oktatóanyagból származik.
Hardver szükséglet
Arduino kártya
LED oszlopdiagram kijelző vagy 10 LED
potenciométer
10 220 ohm-os ellenállás
összekötő vezetékek
dugdosós próbapanel (breadboard)
Az áramkör

Vázlat

A kód
A vázlat így működik: először olvassa le a bemenetet. A bemeneti értéket leképezi a kimeneti tartományra, ebben az esetben tíz LED-re. Ezután beállít egy for ciklust, amely a kimenetek között iterál. Ha a kimenet száma a sorozatban kisebb, mint a leképezett bemeneti tartomány, akkor kapcsolja be. Ha nem, akkor kapcsolja ki.
/*
LED bar graph
Egy sor LED-et kapcsol be egy analóg érzékelő értéke alapján.
Ez egy egyszerű módja az oszlopdiagram megjelenítésének. Bár ez
a grafikon 10 LED-et használ, bármilyen számot használhat a
LED-ek számának és a kivezetések tömbjének megváltoztatásával.
Ezzel a módszerrel bármilyen digitális kimenet vezérelhető,
amely az analóg bemenettől függ.
Az áramkör:
- LED-ek a 2-11 kivezetésektől a földig
created 4 Sep 2010
by Tom Igoe
Ez a kód nyilvános.
https://docs.arduino.cc/built-in-examples/display/BarGraph
*/
// ezek az állandók nem változnak:
const int analogPin = A0; // a kivezetés, amelyre a potenciométer csatlakozik
const int ledCount = 10; // a LED-ek száma az oszlopdiagramban
int ledPins[] = {
2, 3, 4, 5, 6, 7, 8, 9, 10, 11
}; // kivezetésszámok tömbje, amelyhez LED-ek vannak csatlakoztatva
void setup() {
// ciklus a kivezetések tömbjéhez, és állítsa be mindegyiket kimenetre:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
// olvasd le a potenciométert:
int sensorReading = analogRead(analogPin);
// képezze le az eredményt egy 0-tól a LED-ek számáig terjedő tartományba:
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
// ciklus a LED-tömbhöz:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// ha a tömbelem indexe kisebb, mint a ledLevel,
// kapcsolja be az elem kivezetését:
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}
// kapcsoljon ki minden, a ledLevelnél magasabb kivezetést:
else {
digitalWrite(ledPins[thisLed], LOW);
}
}
}
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.