Arduino UNO R4 Minima Tutorial: Umstieg vom UNO R3 – DAC, interne RTC & 14-Bit-ADC nutzen
Der Arduino UNO ist seit über einem Jahrzehnt das Einsteiger-Board schlechthin – und mit dem UNO R4 Minima hat er ein großes Hardware-Upgrade bekommen: 48 MHz statt 16 MHz, 32 KB RAM statt 2 KB, ein echter Digital-Analog-Wandler, eine eingebaute Echtzeituhr und USB-C. Das Beste: Formfaktor, Pinout und 5V-Logik bleiben gleich, deine Shields und die meisten Sketches laufen weiter. In diesem Tutorial vergleichen wir R3 und R4 im Detail und du nutzt die neuen Features direkt in drei lauffähigen Code-Beispielen: Sinuston aus dem DAC, Uhrzeit aus der internen RTC und hochauflösende Messungen mit dem 14-Bit-ADC.
Was ist neu am UNO R4 Minima?
Unter der Haube steckt statt des alten 8-Bit-ATmega328P jetzt ein Renesas RA4M1 – ein 32-Bit ARM Cortex-M4 mit 48 MHz. Das bedeutet nicht nur dreimal höheren Takt, sondern vor allem: 16-mal mehr RAM und Hardware-Features, für die man beim R3 Zusatzmodule brauchte. Eine Echtzeituhr und ein DAC sind direkt im Chip integriert, dazu kommen 14-Bit-ADC-Auflösung und native USB-Unterstützung (das Board kann sich als Tastatur oder Maus ausgeben).
| Merkmal | UNO R3 | UNO R4 Minima |
|---|---|---|
| Prozessor | ATmega328P, 8 Bit | Renesas RA4M1, 32 Bit (Cortex-M4) |
| Takt | 16 MHz | 48 MHz |
| SRAM | 2 KB | 32 KB |
| Flash | 32 KB | 256 KB |
| ADC-Auflösung | 10 Bit (0–1023) | bis 14 Bit (0–16383) |
| DAC (echter Analogausgang) | – | 12 Bit an A0 |
| Echtzeituhr (RTC) | – (externes Modul nötig) | integriert |
| USB | USB-B, ATmega16U2 | USB-C, nativ (HID-fähig) |
| Logikpegel | 5V | 5V (!) |
| Formfaktor & Pinout | UNO-Standard | identisch, Shield-kompatibel |
ℹ️ 5V bleibt 5V: Anders als fast alle modernen 32-Bit-Boards (ESP32, RP2040: 3,3V) arbeitet der R4 weiterhin mit 5V-Logik. Deine vorhandenen 5V-Sensoren, LCDs und Shields funktionieren also ohne Pegelwandler weiter – das macht den Umstieg so unkompliziert.
Was du brauchst
Arduino IDE einrichten
- 1Öffne den Boardverwalter in der Arduino IDE und suche nach „UNO R4“.
-
2Installiere das Paket
Arduino UNO R4 Boards. -
3Wähle unter Werkzeuge → Board den Eintrag
Arduino UNO R4 Minimaund den passenden Port.
Danach läuft alles wie gewohnt – pinMode, digitalWrite, analogRead und die Standard-Bibliotheken verhalten sich wie beim R3.
Code 1: Sinuston aus dem echten DAC
Der R3 kann mit analogWrite() nur PWM – ein schnell geschaltetes Digitalsignal. Der R4 hat an A0 einen echten 12-Bit-DAC, der stufenlos Spannungen zwischen 0 und 5V ausgibt. Damit erzeugst du saubere Analogsignale, z. B. einen Sinuston für einen kleinen Verstärker oder Piezo-Lautsprecher (über einen Koppelkondensator angeschlossen).
#include "analogWave.h" // im UNO-R4-Boardpaket enthalten
analogWave welle(DAC);
void setup() {
Serial.begin(115200);
welle.sine(440); // Kammerton A: 440 Hz Sinus an A0
}
void loop() {
// Frequenz langsam von 220 auf 880 Hz gleiten lassen
for (int f = 220; f <= 880; f += 10) {
welle.freq(f);
Serial.print("Frequenz: ");
Serial.print(f);
Serial.println(" Hz");
delay(100);
}
}
Die mitgelieferte analogWave-Bibliothek erzeugt Sinus-, Rechteck- und Sägezahnsignale, ohne dass du dich um Timer kümmern musst. Für eigene Kurvenformen kannst du den DAC auch direkt mit analogWrite(A0, wert) beschreiben, nachdem du analogWriteResolution(12) gesetzt hast.
Code 2: Die interne Echtzeituhr nutzen
Beim R3 brauchte jede Uhr ein externes RTC-Modul wie das DS3231. Der R4 bringt eine RTC im Chip mit – inklusive Alarm-Funktionen. Ohne Pufferbatterie verliert sie beim Trennen der Stromversorgung allerdings die Zeit; für netzbetriebene Projekte (Zeitschaltuhr, Datenlogger mit Zeitstempel) ist sie trotzdem extrem praktisch.
#include "RTC.h" // im UNO-R4-Boardpaket enthalten
void setup() {
Serial.begin(115200);
RTC.begin();
// Startzeit einmalig setzen: 14. Juli 2026, 12:00:00, Dienstag
RTCTime startzeit(14, Month::JULY, 2026, 12, 0, 0,
DayOfWeek::TUESDAY, SaveLight::SAVING_TIME_ACTIVE);
RTC.setTime(startzeit);
}
void loop() {
RTCTime jetzt;
RTC.getTime(jetzt);
Serial.print(jetzt.getDayOfMonth());
Serial.print(".");
Serial.print(Month2int(jetzt.getMonth()));
Serial.print(".");
Serial.print(jetzt.getYear());
Serial.print(" - ");
Serial.print(jetzt.getHour());
Serial.print(":");
Serial.print(jetzt.getMinutes());
Serial.print(":");
Serial.println(jetzt.getSeconds());
delay(1000);
}
ℹ️ Wann lohnt sich trotzdem ein DS3231? Wenn dein Projekt die Uhrzeit auch nach Stromausfall behalten soll, bleibt ein batteriegepuffertes Modul wie das DS3231 die richtige Wahl – die interne RTC glänzt dafür bei allem, was dauerhaft am Netz hängt.
Code 3: 14-Bit-ADC – 16-mal feinere Messungen
Der R3 löst Analogwerte mit 10 Bit auf (1024 Stufen). Der R4 schafft 14 Bit – 16.384 Stufen. Bei 5V Referenz bedeutet das: Statt ~4,9 mV pro Stufe erkennst du Änderungen von ~0,3 mV. Das macht sich bei Fotowiderständen, Potis, Spannungsteilern und analogen Sensoren sofort in ruhigeren, feineren Messwerten bemerkbar.
#define SENSOR_PIN A1
void setup() {
Serial.begin(115200);
analogReadResolution(14); // R4-Feature: 14 Bit statt 10
}
void loop() {
// Mittelwert aus 16 Messungen fuer noch ruhigere Werte
long summe = 0;
for (int i = 0; i < 16; i++) {
summe += analogRead(SENSOR_PIN);
delayMicroseconds(200);
}
int roh = summe / 16; // 0..16383
float spannung = roh * 5.0 / 16383.0; // in Volt
Serial.print("Rohwert: ");
Serial.print(roh);
Serial.print(" = ");
Serial.print(spannung, 4); // 4 Nachkommastellen
Serial.println(" V");
delay(500);
}
Code 4: Mehr RAM in der Praxis – OLED ohne Speichersorgen
Ein 128x64-OLED braucht allein 1 KB Framebuffer – beim R3 mit seinen 2 KB RAM wird es damit schnell eng. Mit 32 KB auf dem R4 kannst du OLED, große Puffer und Berechnungen kombinieren, ohne an Grenzen zu stoßen. Verkabelung des SSD1306: VCC an 5V, GND an GND, SDA an A4, SCL an A5. Benötigte Bibliotheken: Adafruit SSD1306 und Adafruit GFX.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 oled(128, 64, &Wire, -1);
// Grosser Messwert-Puffer: beim R3 undenkbar, beim R4 kein Problem
float messHistorie[1000];
int index = 0;
void setup() {
Serial.begin(115200);
analogReadResolution(14);
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.clearDisplay();
}
void loop() {
float spannung = analogRead(A1) * 5.0 / 16383.0;
messHistorie[index] = spannung;
index = (index + 1) % 1000;
oled.clearDisplay();
oled.setTextColor(SSD1306_WHITE);
oled.setTextSize(1);
oled.setCursor(0, 0);
oled.print("UNO R4 Minima");
oled.setTextSize(2);
oled.setCursor(0, 20);
oled.print(spannung, 3);
oled.print(" V");
oled.setTextSize(1);
oled.setCursor(0, 50);
oled.print("Messung #");
oled.print(index);
oled.display();
delay(200);
}
Praxistipps für den Umstieg
⌨️ USB-HID als Bonus: Dank nativem USB kann sich der R4 mit den Bibliotheken Keyboard.h und Mouse.h als Tastatur oder Maus ausgeben – perfekt für Makro-Pads, Shortcut-Boxen oder Barcode-Eingaben. Beim R3 ging das nur mit Umwegen.
🔌 Shields vorher prüfen: Die Pin-Belegung ist identisch, aber Shields, die direkt auf ATmega-Register oder AVR-Timer zugreifen, brauchen angepasste Bibliotheken. Die gängigen Adafruit-Bibliotheken sind längst R4-kompatibel.
⚡ Timing-Unterschiede beachten: Durch die 48 MHz laufen rechenintensive Sketches deutlich schneller. Wo du Timing mit zählbasierten Warteschleifen statt millis() gelöst hast, solltest du auf millis()/micros() umstellen.
Troubleshooting
⚠️ Bibliothek kompiliert nicht (avr/io.h fehlt): Die Bibliothek ist AVR-spezifisch und kennt die Renesas-Architektur nicht. Suche im Bibliotheksverwalter nach einer aktuellen Version oder einer Alternative – die meisten populären Bibliotheken wurden bereits portiert.
⚠️ Serieller Monitor zeigt nichts: Der R4 hat natives USB – nach dem Öffnen des Monitors resettet das Board nicht automatisch neu wie der R3. Drücke einmal die Reset-Taste oder warte in setup() mit while (!Serial); auf die Verbindung.
⚠️ analogRead liefert nur Werte bis 1023: Ohne analogReadResolution(14) bleibt der R4 aus Kompatibilitätsgründen bei 10 Bit. Die Zeile gehört in jedes Sketch, das die volle Auflösung nutzen soll.
⚠️ Upload schlägt fehl: Board im Bootloader-Modus starten: Reset-Taste doppelt drücken, dann erneut hochladen. Auch ein Wechsel des USB-C-Kabels (Datenkabel statt Ladekabel) löst viele Fälle.
🚀 Bereit für das UNO-Upgrade?
Alle Bauteile für dieses Tutorial findest du bei MAKEROO.
Fazit
Der UNO R4 Minima ist das seltene Upgrade, das alles besser macht, ohne etwas kaputtzumachen: gleiche Pins, gleiche 5V-Logik, gleiche IDE – aber mit DAC, RTC, 14-Bit-ADC und 16-fachem RAM eröffnet er Projektideen, für die der R3 Zusatzmodule oder Klimmzüge brauchte. Für Einsteiger ist er damit die rundere Wahl, und für R3-Veteranen ein Umstieg, der sich an einem Nachmittag erledigt – inklusive Sinuston, Uhrzeit und Millivolt-Messungen aus einem einzigen Board.