Arduino - LED-Balkendiagramm

Dieses Beispiel zeigt, wie Sie einen Analogeingang an Analog-Pin 0 lesen, die Werte von analogRead () in Spannung umwandeln und auf dem seriellen Monitor der Arduino Software (IDE) ausdrucken.

Erforderliche Komponenten

Sie benötigen folgende Komponenten:

  • 1 × Steckbrett
  • 1 × Arduino Uno R3
  • 1 × 5 kOhm variabler Widerstand (Potentiometer)
  • 2 × Jumper
  • 8 × LED oder Sie können verwenden (LED-Balkendiagrammanzeige wie in der Abbildung unten gezeigt)

Verfahren

Befolgen Sie den Schaltplan und schließen Sie die Komponenten wie in der Abbildung unten gezeigt am Steckbrett an.

Skizzieren

Öffnen Sie die Arduino IDE-Software auf Ihrem Computer. Die Codierung in der Arduino-Sprache steuert Ihre Schaltung. Öffnen Sie eine neue Skizzendatei, indem Sie auf Neu klicken.

10-Segment-LED-Balkendiagramm

Diese 10-Segment-Balkendiagramm-LEDs haben viele Verwendungsmöglichkeiten. Mit einer kompakten Grundfläche und einem einfachen Anschluss eignen sie sich problemlos für Prototypen oder fertige Produkte. Im Wesentlichen handelt es sich um 10 einzelne blaue LEDs, die zusammen mit einer individuellen Anoden- und Kathodenverbindung untergebracht sind.

Sie sind auch in den Farben Gelb, Rot und Grün erhältlich.

Note- Die Pinbelegung in diesen Balkendiagrammen kann von den Angaben im Datenblatt abweichen. Durch Drehen des Geräts um 180 Grad wird die Änderung korrigiert, sodass Pin 11 der erste Pin in der Reihe ist.

Arduino Code

/*
   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);
      }
   }
}

Zu beachtender Code

Die Skizze funktioniert folgendermaßen: Zuerst lesen Sie die Eingabe. Sie ordnen den Eingabewert dem Ausgabebereich zu, in diesem Fall zehn LEDs. Dann haben Sie eine eingerichtetfor-loopüber die Ausgänge iterieren. Wenn die Nummer des Ausgangs in der Reihe niedriger als der zugeordnete Eingangsbereich ist, schalten Sie ihn ein. Wenn nicht, schalten Sie es aus.

Ergebnis

Sie sehen, wie die LED nacheinander aufleuchtet, wenn der Wert des analogen Messwerts zunimmt, und nacheinander ausgeschaltet wird, während der Messwert abnimmt.