Hier finden sich die Zusammenhänge zwischen den Arduino-Boards und den Mikrocontrollern.
Die alten Arduino Dokus waren übersichtlicher, aber da sind sie ja doch noch :)
ATMega328
Für die folgenden Boards wird ein ATMega328 Mikrocontroller verwendet, hier das Handbuch zum ATMega328(PDF) (neu Microchip AVR, vormals Atmel AVR (->Wikipedia)).
Darin wird auf (alt:450 neu:)300 Seiten alles dokumentiert, was man zum Mikrocontroller wissen muss und damit, was man beim Nutzen bzw. Hacken der Boards benötigt!
Einige Boards mit ATMega328
Arduino Duemilanove (eine art Ur-Arduino): Documentation Schaltplan(PDF)2009
Arduino UNO R3 (Weiterentwicklung): Documentation(PDF) Schaltplan(PDF) Datasheet + Pin-Layout(image)
Arduino Pro Mini (Minimalboard ohne USB-Seriell-Wandler): Documentation Schaltplan(PDF) Pin-Layout(image) (aus dem Forum)
Arduino Nano (Minimalboard mit USB-Seriell-Wandler): Documentation+Schaltplan(PDF) Pin-Layout(image)
ATmega32u4
Mikrocontroller ATmega32u4 mit USB-Schnittstelle und der Möglichkeit, diese z.B. als HID Device (Human Interface Device wie z.B. Tastatur) zu programmieren, so daß man dann das Board z.B. als Tastatur an einen PC stecken kann! Mit einem Arduino-Programm kann man dann beliebige Tastendrücke auslösen. Analog mit Maus-/Joystick-Funktion.
Einige Boards mit ATmega32u4
Leonardo: https://docs.arduino.cc/hardware/leonardo
Micro (kleine Version des Leonardo) ("Pro Micro" ist die Billigversion(?) davon): https://docs.arduino.cc/hardware/micro
Taster, Schalter
Poti (Drehwiederstand, Analog)
Drehgeber / Rotary Encoder
Sensortaste
Chip:mma7361 - Analogwert je Achse
Chip:MPU-6050 (icl. Temp.)
Modul:GY-521 - 8Pins, I2C, incl. Spannungsregler 5v→3.3V
#include <Wire.h> const int MPU_addr=0x68; // I2C address of the MPU-6050 void setup() { Wire.begin(); // I2C: Leonardo: Pin 2 (SDA), Pin 3 (SCL) Wire.beginTransmission(MPU_addr); Wire.write(0x6B); // PWR_MGMT_1 register Wire.write(0); // set to zero (wakes up the MPU-6050) Wire.endTransmission(true); } void loop() { Wire.beginTransmission(MPU_addr); Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ; AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L) AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L) AcZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L) Tmp=Wire.read()<<8|Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L) GyX=Wire.read()<<8|Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L) GyY=Wire.read()<<8|Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L) GyZ=Wire.read()<<8|Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L) ... }
Chips:MPU9250
Modul:GY-9250 - 10Pins, I2C, incl. Spannungsregler 5v→3.3V
Chips:MPU9250 +BMP280(Altimeter)
Modul:GY-91 - 8Pins, I2C, incl. Spannungsregler 5v→3.3V
Meist mit Optokoppler, Schutzdioden, Möglichkeit Stromversorgung der Relaisspulen von der Logik zu trennen
Für normale Gleichstrommotoren
Für Schrittmotoren
Für Servomotoren (wie aus dem Modellbau)
WS2812B - RGB 24Bit je LED mit 1-Draht 800kHz Spezialprotokoll
SK6812 RGBW / RGBWW 32Bit je LED, ansonsten wie WS2812B
Bibliothek: z.B. http://fastled.io/
WLAN z.B. via ESP8266 oder ESP32
LAN via verschiedene Module
Mit optional zuschaltbarem Pull-Up-Widestand 50KOhm
idR Abs. max. 40mA (ATmega328 etc. wie beim UNO,…)
10-Bit Wandler (UNO:6Stck., Pro Mini:8Stck.)
DAC (Digital nach Analogausgang): 2 DACs beim Arduino Due Board
Ansonsten PWM Ausgänge (z.B. 6 Stck. beim UNO)
#include <Wire.h> https://www.arduino.cc/en/Reference/Wire
Arduino-Boards / Pins
Uno, Ethernet: A4 (SDA), A5 (SCL) Mega2560: 20 (SDA), 21 (SCL) Leonardo: 2 (SDA), 3 (SCL) Due: 20 (SDA), 21 (SCL), SDA1, SCL1