Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

Arduino UNO R4 WiFi

 

 

 

 

 

 

 

 

 

Abb. 1

Der Arduino UNO R4 WiFi mit 8x12 LED Matrix

Einige Eigenschaften des Boards (Auszug)

 

48 MHz Arm® Cortex®-M4 Mikroprozessor mit Gleitkomma-Einheit (FPU)

5 V Betriebsspannung

RTC (Real Time Clock)

14-Bit ADC

12-Bit DAC (max.)

 

Speicher

256 kB Flash

32 kB SRAM

8 kB EEPROM

 

Datenaustausch

1x UART (D0, D1)

1x SPI (D10 – D13, ICSP header)

1x I2C (A4, A5, SDA, SCL)

 

Spannungsversorgung

Betriebsspannung für RA4M1 – 5 V

Empfohlene Eingangsspannung (VIN) - 6-24 V

Hohlstecker-Verbindung mit VIN-Pin - 6-24 V

Stromversorgung über USB-C® bei 5 V

 

8x12 LED Matrix

Fest installiert ist auf dem Board eine 8x12 LED Matrix. Sie lässt sich für einfache Versuche bestens einsetzen. Um mit ihr arbeiten zu können benötigt man zusätzlich zum Board

  • die aktuelle Arduino IDE
  • die Bibliothek Arduino_LED_Matrix.h

Methode 1: Angesprochen werden die 96 LEDs über ein 2-dim Byte Array. Von den so bereitgestellten 768 Bits werden tatsächlich nur 96 Bits für die LEDs benötigt -> sehr speicherintensiv. Jedes Bild (Frame) des Arrays benötigt 768 Bits.

Methode 2: Die 96 LEDs werden über drei vorzeichenlose long Variable (32-Bit) angesprochen. Jedes Bit entspricht einem Zustand einer bestimmten LED der Matrix. Jeder Frame benötigt 96 Bits.

 

Der Vorteil bei Verwendung von Methode 1 besteht darin, dass man das Bild im Array "sehen" kann, während es bei Verwendung der Methode 2 codiert und damit nicht sichtbar ist.

 

Die erste Übung verwendet Methode 1.

Übung 1 - Ein Frame in einem 2 dimensionalen Byte Array anlegen

Übung 1 - Frame erstellen mit 2-dim Byte  Array
Material
  • 1x Arduino UNO R4 WiFi mit USB-Kabel
Aufgaben
  • Übertrage das Programm led_matrix1.ino in die IDE und speicher es ab.
  • Starte das Programm und überzeuge dich, dass die Zahl 1 in der Matrix angezeigt wird.

Programm "led_matrix1.ino"

 

#include "Arduino_LED_Matrix.h"   // Füge die Matrix-Bibliothek ein

 

ArduinoLEDMatrix matrix;               // erzeuge Objekt in der Klasse

 

void setup() {
  matrix.begin();                                 // starte die LED Matrix
}

byte M1[8][12] = {
   {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
   {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0}     
};

void loop() {
  int i, j;
  for (i=0;i<9;i++)
    {
      for (j=0;j<13;j++)
        { matrix.renderBitmap(M1, i, j);
        }
    }
}

Gut zu erkennen ist, dass alle LEDs, die auf 1 oder HIGH gezogen werden, in der Matrix durch die Ziffer 1 repräsentiert sind. Auf diese Weise lassen sich schnell unterschiedliche Frames erstellen.

Übung 2- Ein Frame mit long-Variablen anlegen

Das 2-dim byte Array wird in dieser Übung in drei vorzeichenlose long-Variable (32-Bit) überführt. 1 Byte enthält 8 Bit; es kommen damit vier Byte auf eine unsigned long Variable. Das folgende Programm led_matrix1_long.ino zeigt eine Umsetzung.

Das Ergebnis ist identisch mit dem aus Übung 1; sowohl Speicherverbrauch als auch Programmlänge sind in diesem Fall aber geringer.

Übung 2 - Ein Frame mit long-Variablen anlegen
Material
  • 1x Arduino UNO R4 WiFi mit USB-Kabel
Aufgaben
  • Übertrage das Programm led_matrix1_long.ino in die IDE und speicher es ab.
  • Starte das Programm und überzeuge dich, dass die Zahl 1 in der Matrix angezeigt wird.

Die Codierung im Hexadezimal-Format gelingt am schnellsten bei Verwendung des LED-Matrix_Editors aus den Arduino Labs. Dort wird detailliert die Nutzung der Software erklärt.

Programm led_matrix1_long.ino

 

#include "Arduino_LED_Matrix.h"   // Füge die Matrix-Bibliothek ein
ArduinoLEDMatrix matrix;                // erzeuge Objekt in der Klasse

 

void setup() {
  matrix.begin();                                  // starte die LED Matrix
}

 

const uint32_t M1[] = {
  0x200600a,
  0x200200,
  0x20020020    
};

 

void loop() {
  matrix.loadFrame(M1);
}

Durch die hexadezimale Codierung "per Hand" kann auf die Schnelle die Darstellung des Frames nicht abgelesen werden..Und ... die Codierung ist dadurch fehleranfällig.

Eine Hilfe bei der Frame-Erstellung und der anschließenden Codierung leistet der Led-Matrix-Editor, der hier zu finden ist.

 

Darüber lassen sich einzelne Frames oder auch Sequenzen sehr schnell entwerfen und codieren und in das eigene Programm einbauen. Wie das geht, soll die folgende Übung zeigen.

Übung 3- Eine Animation mit dem Led Matrix Editor erstellen

Übung 3 - Ein Animation erstellen
Material
  • 1x Arduino UNO R4 WiFi mit USB-Kabel
Aufgaben
  • Übertrage das Programm led_matrix1_long_anim1.ino in die IDE und speicher es ab.
  • Füge über "Sketch - Datei hinzufügen" die Datei animation1.h hinzu.
  • Starte das Programm und lasse die Animation ablaufen.

Programm led_matrix_1_long_anim1.ino

 

#include "Arduino_LED_Matrix.h"   // Füge die Matrix-Bibliothek ein
#include "animation1.h"                     // Datei mit den Frames einbinden

ArduinoLEDMatrix matrix;               // erzeuge Objekt in der Klasse

 

void setup() {
  matrix.begin();                                 // starte die LED Matrix
}

 

void loop() {
  int t = 250;
  matrix.loadFrame(Bild1);
  delay(t);
  matrix.loadFrame(Bild2);
  delay(t);
  matrix.loadFrame(Bild3);
  delay(t);
  matrix.loadFrame(Bild4);
  delay(t);
}

Datei: animation1.h

 

const uint32_t Bild1[] = {
        0x6009,
        0x1081080,
        0x90060000
    };
const uint32_t Bild2[] = {
        0x1f819,
        0x81081081,
        0x981f8000
    };
const uint32_t Bild3[] = {
        0x1f810,
        0x81081081,
        0x81f8000
    };
const uint32_t Bild4[] = {
        0x10809,
        0x600600,
        0x90108000
    };

Druckversion | Sitemap
© Reinhard Rahner - Gettorf