Arduino - wykres słupkowy LED
Ten przykład pokazuje, jak odczytać wejście analogowe na pinie analogowym 0, przekonwertować wartości z analogRead () na napięcie i wydrukować je na monitorze szeregowym oprogramowania Arduino (IDE).
Wymagane składniki
Będziesz potrzebował następujących komponentów -
- 1 × Breadboard
- 1 × Arduino Uno R3
- Rezystor zmienny 1 × 5 kΩ (potencjometr)
- 2 × sweter
- 8 × LED lub możesz użyć (wyświetlacz słupkowy LED, jak pokazano na poniższym obrazku)
Procedura
Postępuj zgodnie ze schematem obwodu i podłącz komponenty na płytce stykowej, jak pokazano na poniższym obrazku.
Naszkicować
Otwórz oprogramowanie Arduino IDE na swoim komputerze. Kodowanie w języku Arduino będzie sterować twoim obwodem. Otwórz nowy plik szkicu, klikając Nowy.
10-segmentowy wykres słupkowy LED
Te 10-segmentowe diody LED z wykresami słupkowymi mają wiele zastosowań. Dzięki kompaktowym rozmiarom, prostemu podłączeniu, są łatwe do prototypowania lub gotowych produktów. Zasadniczo jest to 10 oddzielnych niebieskich diod LED umieszczonych razem, każda z indywidualnym połączeniem anody i katody.
Są również dostępne w kolorach żółtym, czerwonym i zielonym.
Note- Pinezka na tych wykresach słupkowych może się różnić od podanych w arkuszu danych. Obrócenie urządzenia o 180 stopni skoryguje zmianę, ustawiając pin 11 jako pierwszy w linii.
Kod Arduino
/*
LED bar graph
Turns on a series of LEDs based on the value of an analog sensor.
This is a simple way to make a bar graph display.
Though this graph uses 8LEDs, you can use any number by
changing the LED count and the pins in the array.
This method can be used to control any series of digital
outputs that depends on an analog input.
*/
// these constants won't change:
const int analogPin = A0; // the pin that the potentiometer is attached to
const int ledCount = 8; // the number of LEDs in the bar graph
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // an array of pin numbers to which LEDs are attached
void setup() {
// loop over the pin array and set them all to output:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT);
}
}
void loop() {
// read the potentiometer:
int sensorReading = analogRead(analogPin);
// map the result to a range from 0 to the number of LEDs:
int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
// loop over the LED array:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
// if the array element's index is less than ledLevel,
// turn the pin for this element on:
if (thisLed < ledLevel) {
digitalWrite(ledPins[thisLed], HIGH);
}else { // turn off all pins higher than the ledLevel:
digitalWrite(ledPins[thisLed], LOW);
}
}
}
Kod do uwagi
Szkic działa w ten sposób: najpierw czytasz dane wejściowe. Mapujesz wartość wejściową do zakresu wyjściowego, w tym przypadku dziesięciu diod LED. Następnie skonfigurowałeśfor-loopdo iteracji wyjść. Jeśli numer wyjścia w serii jest niższy niż zamapowany zakres wejściowy, włącz go. Jeśli nie, wyłącz ją.
Wynik
Zobaczysz, że dioda LED zapala się pojedynczo, gdy wartość odczytu analogowego rośnie i wyłącza się pojedynczo, gdy odczyt maleje.