Druckbehaelter Raziol


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Arduino steuert die Balkenanzeige OA_R102510BCUHRUG_11

Die Balkenanzeige (Bargraph)-Anzeige OA-R102510BCUHRUG-11 stellt uns 10 Anzeige-Elemente (Balken) zur Verfügung. Hinter jedem Element verbergen sich zwei farbige Leuchtdioden, die man separat ansteuern kann. Neben der zwei Grundfarben, Rot und Grün, ist es möglich, eine Farben-Kombination aus diesen zwei Grundfarben zu bilden.
Die Leuchtdioden sind im Inneren des Bausteins so verschaltet, dass lediglich neun Pins angesteuert werden müssen (statt 40). Die Anzeige verfügt über 10 Pins, wobei Pin Nummer 10 keine Funktion hat. Die Verschaltung der Dioden ist auf dem folgenden Bild dargestellt:

Schema

In dem Beispiel soll die Balkenanzeige direkt von Arduino angesteuert werden. Mit vier Hilfsschaltern sollen einige Anzeige-Möglichkeiten dargestellt werden.
Schalter 1 – Die Anzeige-Balken werden auf Grün geschaltet.
Schalter 2 - Die Anzeige-Balken werden auf Rot geschaltet.
Schalter 3 - Die Anzeige-Balken werden auf Orange geschaltet (Mischung aus Grün und Rot).
Schalter 4 - Die Anzeige-Balken (auf Grün geschaltet) werden gedämpft.
Schalter 1 + 2 - Die Anzeige-Balken werden mit wechselnden Farben geschaltet (1-3 Orange, 4-7 Grün, 8-10 Rot).
Wenn man die zusätzlichen Schalter außer Acht lässt, werden für die Schaltung neben Arduino und der Balkenanzeige lediglich fünf Widerstände für die Strombegrenzung benötigt.
Die aufgebaute Schaltung sieht dann wie folgt aus:

Testschaltung

Testschaltung


Die Leuchtdioden sind im Baustein in fünf Gruppen unterteilt. Jeder Gruppe (Bank) sind vier Leuchtdioden zugeordnet. Die Gruppen können über die Pins 1-5 angesprochen werden. Jede Gruppe verfügt über vier Ausgänge (Pins 6 bis 9). Um eine Leuchtdiode gezielt anzusprechen müssen zwei Pins angesteuert werden, ein Pin für die jeweilige Gruppe und ein zugeordneter Ausgang.
Die Aufgabe wird mit fünf digitalen Ausgängen und vier PWM-Ausgängen von Arduino realisiert. Eine mögliche Zuordnung der Ausgänge mit Erweiterung- Schaltern (vier digitale Eingänge) zeigt der folgende Schaltplan:

Schaltplan

Schaltplan


Das Steuerprinzip für alle Leuchtdioden ist gleich. Möchte man z.B. die rote Leuchtdiode des dritten Anzeige-Elementes zum Leuchten bringen müsste der Arduino-Ausgang 10 (verbunden mit Pin2 der Balkenanzeige) auf HIGH geschaltet werden. Gleichzeitig müsste der PWM-Ausgang 4 (Verbunden mit dem Pin8 der Balkenanzeige) mit dem Wert 0 belegt werden. Mit diversen Werten an PWM-Ausgängen lässt sich die Helligkeit der Leuchtdioden passend einstellen.
Das zugehörige Programm:


  // ----------------------------------------------------------
  // Arduino steuert OA_R102510BCUHRUG_11
  // ----------------------------------------------------------


  int Bank5_Pin = 9;
  int Bank4_Pin = 10;
  int Bank3_Pin = 11;
  int Bank2_Pin = 12;
  int Bank1_Pin = 13;
  int Line6_Pin = 2;
  int Line7_Pin = 3;
  int Line8_Pin = 4;
  int Line9_Pin = 5;
  int Schalter_GN = 42;
  int Schalter_RT = 44;
  int Schalter_OR = 46;
  int Schalter_Dunkel = 48;
  int Wert_Rot [11];
  int Wert_Gruen [11];
  int Element_Nr = 0;
  int Schritt = 1;
  int i;

  void setup() {
    pinMode (Bank5_Pin, OUTPUT);
    pinMode (Bank4_Pin, OUTPUT);
    pinMode (Bank3_Pin, OUTPUT);
    pinMode (Bank2_Pin, OUTPUT);
    pinMode (Bank1_Pin, OUTPUT);
    pinMode (Line9_Pin, OUTPUT);
    pinMode (Line8_Pin, OUTPUT);
    pinMode (Line7_Pin, OUTPUT);
    pinMode (Line6_Pin, OUTPUT);
    pinMode (Schalter_GN, INPUT_PULLUP);
    pinMode (Schalter_RT, INPUT_PULLUP);
    pinMode (Schalter_OR, INPUT_PULLUP);
    pinMode (Schalter_Dunkel, INPUT_PULLUP);
  }

  // Hauptprogramm
  // ++++++++++++++++++++++++++
  void loop() {
    if (digitalRead(Schalter_GN) == LOW) {
      for (i = 1; i <= 10; i++ ) { Wert_Rot [i] = 255; Wert_Gruen [i] = 0; }}
    if (digitalRead(Schalter_RT) == LOW) {
      for (i = 1; i <= 10; i++ ) { Wert_Rot [i] = 0; Wert_Gruen [i] = 255; }}
    if (digitalRead(Schalter_OR) == LOW) {
      for (i = 1; i <= 10; i++ ) { Wert_Rot [i] = 150; Wert_Gruen [i] = 0; }}
      if (digitalRead(Schalter_GN) == LOW && digitalRead(Schalter_RT) == LOW) {
      for (i = 1; i <= 3; i++ ) { Wert_Rot [i] = 150; Wert_Gruen [i] = 0;}
      for (i = 4; i <= 7; i++ ) { Wert_Rot [i] = 255; Wert_Gruen [i] = 0;}
      for (i = 8; i <= 10; i++ ) { Wert_Rot [i] = 0; Wert_Gruen [i] = 255; }}
    if (digitalRead(Schalter_Dunkel) == LOW) {
      for (i = 1; i <= 10; i++ ) { Wert_Rot [i] = 255; Wert_Gruen [i] = 220; }}

    if (digitalRead(Schalter_GN) == HIGH && digitalRead(Schalter_RT) == HIGH && digitalRead(Schalter_OR) == HIGH) {
      for (i = 1; i <= 10; i++ ) { Wert_Rot [i] = 255; Wert_Gruen [i] = 255; }}

    Element_Nr = Element_Nr + Schritt;
    Element (Element_Nr);
    delay (150);
    if (Element_Nr == 10) { Schritt = -1; }
    if (Element_Nr == 1) { Schritt = 1; }
  }

  // Unterprogramm Element
  // ++++++++++++++++++++++++++
  void Element (int Element_Nr) {
    switch (Element_Nr) {
      case 1 : { Alles_Aus ();
        digitalWrite (Bank5_Pin, HIGH);
        analogWrite (Line8_Pin, Wert_Rot [1]);
        analogWrite (Line9_Pin, Wert_Gruen [1]); break; }
      case 2 : { Alles_Aus ();
        digitalWrite (Bank5_Pin, HIGH);
        analogWrite (Line6_Pin, Wert_Rot [2]);
        analogWrite (Line7_Pin, Wert_Gruen [1]); break; }
      case 3 : { Alles_Aus ();
        digitalWrite (Bank4_Pin, HIGH);
        analogWrite (Line8_Pin, Wert_Rot [3]);
        analogWrite (Line9_Pin, Wert_Gruen [1]); break; }
      case 4 : { Alles_Aus ();
        digitalWrite (Bank4_Pin, HIGH);
        analogWrite (Line6_Pin, Wert_Rot [4]);
        analogWrite (Line7_Pin, Wert_Gruen [1]); break; }
      case 5 : { Alles_Aus ();
        digitalWrite (Bank3_Pin, HIGH);
        analogWrite (Line8_Pin, Wert_Rot [5]);
        analogWrite (Line9_Pin, Wert_Gruen [1]); break; }
      case 6 : { Alles_Aus ();
        digitalWrite (Bank3_Pin, HIGH);
        analogWrite (Line6_Pin, Wert_Rot [6]);
        analogWrite (Line7_Pin, Wert_Gruen [1]); break; }
      case 7 : { Alles_Aus ();
        digitalWrite (Bank2_Pin, HIGH);
        analogWrite (Line8_Pin, Wert_Rot [7]);
        analogWrite (Line9_Pin, Wert_Gruen [1]); break; }
      case 8 : { Alles_Aus ();
        digitalWrite (Bank2_Pin, HIGH);
        analogWrite (Line6_Pin, Wert_Rot [8]);
        analogWrite (Line7_Pin, Wert_Gruen [1]); break; }
      case 9 : { Alles_Aus ();
        digitalWrite (Bank1_Pin, HIGH);
        analogWrite (Line8_Pin, Wert_Rot [9]);
        analogWrite (Line9_Pin, Wert_Gruen [1]); break; }
      case 10: { Alles_Aus ();
        digitalWrite (Bank1_Pin, HIGH);
        analogWrite (Line6_Pin, Wert_Rot [10]);
        analogWrite (Line7_Pin, Wert_Gruen [1]); break; }
    }
  }

  // Unterprogramm Alles_Aus
  // ++++++++++++++++++++++++++
  void Alles_Aus () {
    digitalWrite (Bank1_Pin, LOW);
    digitalWrite (Bank2_Pin, LOW);
    digitalWrite (Bank3_Pin, LOW);
    digitalWrite (Bank4_Pin, LOW);
    digitalWrite (Bank5_Pin, LOW);
    analogWrite (Line6_Pin, 255);
    analogWrite (Line7_Pin, 255);
    analogWrite (Line8_Pin, 255);
    analogWrite (Line9_Pin, 255);
  }

  // ----------------------------------------------------------

Kurzvideo


Anzeigen


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz