Überblick
Der Arduino UNO R3 ist ein Mikrocontroller-Board. Es besteht aus dem eigentlichen Mikrocontroller, digitalen Ein- und Ausgängen und analogen Eingängen.
An diese Ein- und Ausgänge können zum Beispiel LEDs, Lautsprecher, Displays, Motoren oder Sensoren angeschlossen werden. Der Mikrocontroller kann alle diese Bauteile steuern, Signale auslesen und aufgrund der gelesenen Daten verschiedene Aktionen auslösen.
Pinbelegung

Quelle: 🔗https://docs.arduino.cc/hardware/uno-rev3 (abgerufen am 20.12.23)

digitale Pins
- Der Reset-Knopf startet das gerade hochgeladene Programm neu.
- Die digitalen Ein-/Ausgänge liefern im Normalfall ein HIGH (1) oder LOW (0). Eine Ausnahme bilden die mit einem ~ gekennzeichneten Pins. Sie können mit der ⇒Pulsweitenmodulation angesprochen werden.
- Die analogen Eingänge messen die anliegende Spannung. Diese Spannung wird vom Analog-Digital-Wandler (ADC = Analog Digital Converter) in digitale Werte zwischen 0 und 1023 umgewandelt.
- Die Eingänge SCL und SDA werden über den ⇒I2C-Bus angesteuert.
- Der ⇒SPI-Bus verwendet die Eingänge D10 CS (Chip Select), D11 COPI/SDO (Controller Out Peripherie In/Serial Data Out), D12 CIPO/SDI (Controller In Peripherie Out/Serial Data In) und D13 SCK (Serial Clock)
- die Pins 0 (RX – Receiver = Empfänger) und 1 (TX -Transmitter = Sender) werden für die Kommunikation mit dem Computer über die USB-Schnittstelle verwendet. Sie können nur dann als digitale Ein- oder Ausgänge verwendet werden, wenn der Arduino über eine externe Stromzufuhr betrieben wird.
Board installieren

- Icon für den Boardverwalter anklicken oder Werkzeuge-> Board -> Boardverwalter
- nach dem AVR Board suchen
- Board installieren
Board auswählen
Wenn der Arduino UNO R3 nicht automatisch erkannt wurde, klicke auf „Wähle ein anderes Board und einen anderen Port“ und suche nach uno. Je nach Betriebssystem wird der USB-Port eine andere Bezeichnung haben.

I²C

⇒Info

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#include "RTClib.h" // Name des RTC-Moduls RTC_DS3231 rtc; void setup() { // Serial starten Serial.begin(9600); delay(1000); // RTC-Modul starten if (!rtc.begin()) { Serial.println("RTC nicht verbunden"); Serial.println("Programm wird beendet!"); while (1); } else Serial.println("RTC verbunden!"); // Zeitpunkt des Kompilierens als aktuelle Zeit setzen rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } void loop() { // aktuelle Zeit holen DateTime aktuell = rtc.now(); char Datum[] = "DD.MM.YYYY "; Serial.print(aktuell.toString(Datum)); // Jahr anzeigen Serial.print(String(aktuell.year())); char Zeit[] = " Uhrzeit: hh:mm:ss "; Serial.print(aktuell.toString(Zeit)); // gemessene Temperatur in String umwandeln // int -> nur ganzzahlige Werte String Temperatur = String(rtc.getTemperature()); Temperatur.replace(".", ","); // Temperatur anzeigen Serial.println("Temperatur: " + Temperatur + "°C "); delay(1000); } |
SPI

⇒Info

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
#include "Adafruit_GC9A01A.h" // Arduino UNO #define TFT_CS 10 #define TFT_RST 8 #define TFT_DC 9 Adafruit_GC9A01A tft(TFT_CS, TFT_DC); // Farben #define SCHWARZ 0x0000 #define WEISS 0xFFFF #define BLAU 0x001F #define ROT 0xF800 #define GRUEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define GELB 0xFFE0 #define BRAUN 0x9A60 #define GRAU 0x7BEF #define GRUENGELB 0xB7E0 #define DUNKELCYAN 0x03EF #define ORANGE 0xFDA0 #define PINK 0xFE19 #define BORDEAUX 0xA000 #define HELLBLAU 0x867D #define VIOLETT 0x915C #define SILBER 0xC618 #define GOLD 0xFEA0 void setup() { // Zufallsgenerator starten randomSeed(analogRead(A0)); Serial.begin(9600); delay(500); Serial.println("Bildschirm: " + String(tft.height()) + " x " + String(tft.width())); // TFT starten tft.begin(); // Rotation anpassen tft.setRotation(2); // schwarzer Hintergrund tft.fillScreen(SCHWARZ); // interne Textdarstellung tft.setTextSize(3); tft.setCursor(30, 50); tft.setTextColor(BLAU); tft.print("Text"); delay(500); tft.setTextSize(4); tft.setCursor(30, 80); tft.setTextColor(GRUEN); tft.print("Text"); delay(2000); // zufällige Pixel tft.fillScreen(SCHWARZ); for (int i = 0; i < 700; i++) { int PixelX = random(1, tft.width()); int PixelY = random(1, tft.height()); tft.drawPixel(PixelX, PixelY, tft.color565(random(255),random(255),random(255))); delay(5); } delay(2000); // Kreise vom Mittelpunkt zeichnen tft.fillScreen(SCHWARZ); for (int i = 1; i < tft.width() / 2; i+=5) { tft.drawCircle(tft.width() / 2, tft.height() / 2, tft.width() / 2 - i, tft.color565(random(255),random(255),random(255))); delay(50); } delay(2000); for (int i = 1; i < tft.width() / 2; i+=5) { tft.drawCircle(tft.width() / 2, tft.height() / 2, tft.width() / 2 - i, SCHWARZ); delay(50); } delay(2000); // Kreise vom Mittelpunkt zeichnen tft.fillScreen(SCHWARZ); for (int i = 1; i < tft.width() / 2; i+=10) { tft.fillCircle(tft.width() / 2, tft.height() / 2, tft.width() / 2 - i, tft.color565(random(255),random(255),random(255))); delay(50); } delay(2000); /* alle 30° Linie vom Mittelpunkt zeichnen 120 = Radius des TFTs (240/2) 90 = PI/4 (Viertelkreis) DEG_TO_RAD (0.0174532925) -> Winkel in Bogenmaß umrechnen es ensteht ein Dreieck mit einem Rechten Winkel -> Winkelfunktionen sin/cos anwenden */ tft.fillScreen(SCHWARZ); for (int i = 0; i < 360; i += 30) { float PosX = cos((i - 90) * DEG_TO_RAD) * 120; float PosY = sin((i - 90) * DEG_TO_RAD) * 120; int PunktX = PosX + 120; int PunktY = PosY + 120; tft.drawLine(120, 120, PosX + 120, PosY + 120, WEISS); } delay(2000); } void loop() { // nichts zu tun, das Programm // läuft nur einmal } |
Letzte Aktualisierung: