Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
de:arduino:start [2018/10/02 10:34]
127.0.0.1 Externe Bearbeitung
de:arduino:start [2020/01/04 23:05] (aktuell)
Sandor Vamos [Einige Arduino-Board-Vergleiche]
Zeile 1: Zeile 1:
 ====== Arduino ====== ====== Arduino ======
-Arduino ist ein programmierbarer Mikrokontroller ​im KartenformatSein günstiger Preisuniverselles Design ​und Open-Source-Charakter begründen seine PopularitätHier, auf der OB121fasse ich auch meine eigenen Erfahrungen ​mit dem Board zusammenaber ich versuche ​eine Art „Katalog“ zusammenzustellen.+{{ :​wiki:​arduino:​arduino_logo.png?​200|Arduino logo}} 
 +Arduino ist eine aus Soft- und Hardware bestehende Physical-Computing-Plattform. Beide Komponenten sind quelloffen. Die Hardware besteht aus einem einfachen E/A-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung basiert auf Processing und soll auch technisch weniger Versierten den Zugang zur Programmierung und zu Mikrocontrollern erleichtern.  
 + 
 +Die Programmierung selbst erfolgt in einer C- bzw. C++-ähnlichen Programmiersprache,​ wobei technische Details wie Header-Dateien vor den Anwendern weitgehend verborgen werden und umfangreiche Bibliotheken und Beispiele die Programmierung vereinfachen. Arduino kann verwendet werden, um eigenständige interaktive Objekte zu steuern oder um mit Softwareanwendungen auf Computern zu interagieren (z. B. Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider,​ diversen Skriptsprachen,​ Terminal, vvvv etc.). Arduino wird beispielsweise auch an Kunsthochschulen genutzt, um interaktive Installationen aufzubauen. 
 + 
 +===== Arduino-Boards ===== 
 +Zuerst war der Arduino das Uno-Board, aber seine Geschichte ist ungebrochen. Einerseits bringt das italienische Arduino-Entwicklungsteam ständig neue Typen auf den Markt, und andererseits bewegen sich auch die Arduino-kompatiblen Klone in einer unglaublichen Bandbreite, weil der Typ ein offenes Projekt ist und die Hardware frei kopiert und modifiziert werden kann. Es ist fast unmöglich, die gesamte Arduino-Welt zu anzeigen, und ich werde nur eine oberflächliche Zusammenfassung des Teils geben, den ich kenne. 
 + 
 +==== Einige Arduino-Board-Vergleiche ==== 
 + 
 +^ Typ ^ Chip ^ CPU \\ Geschw. ^ Eingang Voltage ^ innere Voltage ^ Digital \\ Pins \\ (PWM-Pins) ^ Analog \\ Pins ^ Flash \\ Speicher ^ SRAM \\ Speicher ^ EEPROM \\ Größe ^ Extras | 
 +^[[de:​arduino:​boards#​arduino_uno|Arduino Uno]]|[[de:​modul:​atmel_avr#​atmega328p|ATmega328P]]|16 MHz|6..20V|5V|14 (6)|6|32 KB|2 KB|1 KB| - | 
 +^[[de:​arduino:​boards#​arduino_mega|Arduino Mega2560]]|ATmega2560|16 MHz|6..20V|5V|54 (15)|16|256 KB|8 KB|4 KB| - | 
 +^[[de:​arduino:​boards#​arduino_micro|Arduino Micro]]|ATmega32u4|16 MHz|7..12V|5V|20 (7)|12|32 KB|2.5 KB|1 KB| - | 
 +^[[de:​arduino:​boards#​arduino_micro|Keyes Pro Micro]]|ATmega32u4|8 MHz|7..9V|3.3V|12 (5)|4|32 KB|2.5 KB|1 KB|5 HW-Interrupts,​ volle USB-Geschwindigkeit| 
 +^[[de:​arduino:​boards#​arduino_micro|Pro Micro 5V]]|ATmega32u4|16 MHz|7..12V|5V|12 (5)|4|32 KB|2.5 KB|1 KB|5 HW-Interrupts,​ volle USB-Geschwindigkeit| 
 +^[[de:​arduino:​boards#​arduino_nano|Arduino Nano]]|3.x: ATmega328, \\ 2.x: ATmega168|16 MHz|7..12V|5V|14 (6)|8|32 KB \\ 16 KB|2 KB \\ 1 KB|1 KB \\ 512 Byte|Mini-B USB Stecker| 
 +^[[de:​arduino:​boards#​mini|Arduino Mini]]|[[de:​modul:​atmel_avr#​atmega328p|ATmega328P]]|3,​3V:​ 8MHz \\ 5V: 16 MHz|6..20V|3,​3V \\ 5V|14 (6)|8|32 KB|2 KB|1 KB|2 HW-Interrupts,​ kein USB-Port | 
 +^STM32F103|STM32 32-bit Arm Cortex|72 MHz|5V|2.7V..3.6V|16|16|64 KB|20 KB| - |USART / I2C / SPI / USB / CAN / DMA| 
 +^STM32F401|STM32 32-bit Arm Cortex|25 MHz|5V|2.7V..3.6V|16|16|256 KB|64 KB| - |USART / I2C / SPI / USB / CAN / DMA| 
 +^[[de:​arduino:​wemos_boards#​wemos_d1|Wemos D1]]|ESP8266EX-||9..12V|3.3V|11 (11)|1|4 KB|2 KB|1 KB|- integrierte [[de:​esp:​start#​esp8266|ESP8266]]| 
 +^Duemilanove|ATmega168 \\ ATmega328-||6..20V|5V|14 (6)|6|16KB \\ 32KB|1KB|512 byte \\ 1KB|-| 
 +^Digispark|-|-|-|5V|14|10|16KB|2KB|1KB|-| 
 +^RoboRED|-|-|-|5V/​3.3V|14|6|32KB|2KB|1KB|-| 
 +^ATmega1280|ATmega1280|-|5V|54|16|128KB|8KB|4KB|-| 
 +^Arduino Leonardo|-|-|5V|20|12|32KB|2.5KB|1K|-| 
 +^Arduino Due|-|-|3.3V|54|12|512KB|96K|-|-| 
 +^ChipKIT Max32|Diligent|-|3.3V|83|16|512KB|128KB|-|-| 
 + 
 +===== Speichertypen für Arduino Board ===== 
 +{{ :​wiki:​arduino:​arduino_uno_r3.jpg?​200|Arduino Uno r3}} 
 +==== Flash-Speicher ==== 
 +Dies ist der **"​Hauptspeicher"​** des Arduino. Er speichert das heruntergeladene Programm und behält seinen Inhalt auch nach dem Herunterfahren bei. Es reicht also aus, das Programm nur einmal herunterzuladen. Bei jedem erneuten Einschalten wird es "​automatisch"​ neu gestartet.  
 +Während der Programmierung können wir nicht mit den Gesamtspeicher rechnen, weil der Bootloader und verschiedene Kommunikationen auch  benötigen Speicherkapacität von hier. Außerdem können heruntergeladene Bibliotheken auch viel Speicherplatz benötigen. 
 + 
 +Außerdem kann Flash nicht unbegrenzt neu geschrieben werden. Der maximale Schreibzyklus ist auf 100.000 beschränkt. Das reicht aus, um ein Rewrite ungefähr 27 Jahre lang 10 Mal am Tag ohne Probleme zu nutzen. 
 + 
 +==== SRAM ==== 
 +de: statischer Arbeitsspeicher \\ 
 +en: static random-access memory ​ \\ 
 + 
 +Vereinfacht gesagt speichert SRAM interne Variablen, die im Programm definiert sindIm Gegensatz zum Flash-Speicher behält der SRAM seinen Inhalt nicht beiwenn er ausgeschaltet ist. Daher werden die Variablen bei jedem Einschalten neu definiert ​und mit ihren Standardwerten in den SRAM eingegeben. 
 + 
 +==== EPROM ==== 
 +en: Electrically Erasable Programmable Read-Only Memory \\ 
 +de: Elektrisch löschbarer programmierbarer Nur-Lese-Speicher \\ 
 + 
 +EEPROM ist ein Remanenzvariabler Speicher für die BoardsWie Flash behält es seinen Inhalt während des Herunterfahrens beiist jedoch - wie Flash - "​nur"​ für 100.000 Schreibzyklen authentifiziert und eignet sich daher nicht für das zyklische Schreiben von Daten. Außerdem ist es etwas langsamer als "​normaler"​ SRAM. Aufgrund dieser technischen Eigenschaften kann das EEPROM für folgende Funktionen verwendet werden: 
 + 
 +  * Speicherung der Konfiguration(en) 
 +  * Speichern Sie die Standardeinstellungen für den Systemstart 
 +  * Zähler, Werte, akkumulierte Werte (zb. Stundenzähler) unabhängig von Neustarts speichern 
 + 
 +Es gibt verschiedene Möglichkeiten,​ das EEPROM zu erweitern:​ 
 + 
 +  * Verfügbar mit I²C-EEPROM-IC:​ AT24C256 I²C-EEPROM-IC und -Modul 
 +  * Mit SD-Karte: Micro SD-Kartenmodul 
 + 
 +Verschiedene Arduino-Boards haben EEPROMs unterschiedlicher Größe: 
 + 
 +  * ATmega168: 512 Bytes 
 +  * ATmega8: 512 Byte 
 +  * ATmega328P: 1024 Byte 
 +  * ATmega32U4: 1024 Byte 
 +  * ATmega1280: 4096 Bytes 
 +  * ATmega2560: 4096 Bytes 
 + 
 +{{ :​wiki:​arduino:​arduino_ide_1.png?​200|Arduino IDE}} 
 +===== Arduino IDE ===== 
 + 
 +Arduino IDE ist ein JAVA-basiertes Entwicklersystem,​ das nach dem Schreiben von Software ​auf Arduino kompiliert, debuggt und auf Arduino-Karten herunterlädt. Der häufigste Download erfolgt über den USB-Anschluss an fast jedem Arduino-Board. Es ist jedoch auch möglich, einen ISP oder OTA herunterzuladen,​ wenn die Board diese Funktionen bietet. 
 + 
 +Arduino wird mit einem vorgebrannten Bootloader geliefert, mit dem Sie Codes ohne externe Hardware einfach über das STK500-Protokoll herunterladen können. 
 + 
 +Bei Bedarf kann der oben genannte Bootloader über den Anschluss ICSP (In-Circuit Serial Programming) (→ ISP) umgangen werden. 
 + 
 +Natürlich haben wir viele MöglichkeitenArduino zu programmieren,​ abgesehen von der recht kostengünstigen (aber effizienten und kostenlosen) Arduino-IDE. Beispielsweise kann VisualStudio nach der Installation eines Arduino-Plugins für diesen Zweck verwendet werden. 
 + 
 +==== Arduino API ==== 
 +en: Application Programming Interface \\ 
 +de: Anwendungsprogrammierschnittstelle \\ 
 + 
 +Die Funktionalität des Arduino kann durch das Bibliothekssystem erweitert werden. Die Verwendung von Bibliotheken ist speicherintensiv. Durch sorgfältige Auswahl können Sie jedoch die Speichernutzung optimieren und mit Ihrer Anwendung einen erheblichen Programmieraufwand einsparen. Es gibt Standardverzeichnisse wie [[hu:​arduino:​wire_reference|Wire]],​ [[hu:​arduino:​avr_reference|AVR_C]],​ [[hu:​arduino:​string_reference|String]],​ .., aber sehr viele gut entwickelte Bibliothek kann auch von Github heruntergeladen werden. Bei der Beschreibung der Sensoren linke ich fast immer auf Github-Bibliotheken. 
 + 
 +==== Arduino Bootloader ==== 
 +Ein spezielles Programm, das auf das Arduino Board vorinstalliert und mit der Arduino IDE kompatibel ist und das Hochladen von Programmen auf das Board ohne spezielle Tools ermöglicht;​ normalerweise über USB. 
 + 
 +==== Sketch ==== 
 +Die Programme, die Sie auf Ihrem Arduino ausführen, heißen sketch (Skizze). Skizzen können in **.ino**-Dateien gespeichert oder geladen werden. Die Arduino IDE enthält viele (Standard-) Beispielprogramme unter //Datei / Beispiele//,​ aber fast alle installierten Bibliotheken enthalten Beispielprogramme (diese können ​auch in //Datei / Beispiele// geöffnet werden, nachdem sie installiert wurden, am Ende der Liste gefunden werden kann). 
 + 
 +==== Serial Monitor ==== 
 +Viele Skizzen kommunizieren über eine serielle Verbindung ​mit dem Computer. Die Arduino IDE verfügt über einen eingebauten seriellen Monitor oder ein Terminal, mit dessen Hilfe Sie diese Daten visualisieren können. Sie können auch Daten vom Monitor an die Board senden. Um den Serial Monitor zu öffnengehen Sie zu //'​Tools'​ -> '​Serial Monitor'//​. Normalerweise startet dies das Arduino-Board neu. Stellen Sie sicher, dass die Geschwindigkeit (auch bekannt als Baudrate) auf den richtigen Wert eingestellt ist. Wenn Sie dies nicht tun, werden Sie Müll oder gar nichts sehen. Übliche Baudratenwerte sind 9.600 und 115.200. 
 +===== Arduino und USB ===== 
 + 
 +Arduino-Karten werden grundsätzlich von Ihrem PC über den USB-Anschluss programmiert (es gibt einige andere Lösungen ..), und während der Ausführung des Programms werden auch "​serielle"​ Informationen an Ihren PC gesendet. Die meisten Karten enthalten einen "​klassischen"​ FTDI oder AtMega16U2 USB-Kommunikations-IC für die Verbindung. Es ist möglich, ob sogenannten "​chinesische"​ CH340..CH341 ICs sind installiert. Für jeden dieser ICs sind unterschiedliche Treiber erforderlich. Seien Sie also vorsichtig, wenn Sie die erste neue Board verwenden, da Ihr PC das Arduino möglicherweise nicht erkennt. 
 + 
 +Die meisten Arduino USB-Ports mit einem Überstromschutz (resettable polyfuse) ausgestattet,​ die bei einem Stromverbrauch von über 500 mA oder einem Kurzschluss automatisch abgeschaltet wird. 
 + 
 +Arduino USB UART Converter-Typen:​ 
 + 
 +  * **FTDI**: Der Konvertertyp der frühen Arduino'​s erwies sich als zu teuer. Wird weiterhin als externer Konverter verwendet (mit dem [[de:​arduino:​start#​arduino_isp|ISP]] verbunden) 
 +  * **Atmega8U2**:​ Der erste serie Uno-Konverter bis R2 
 +  * **AtMega16U2**:​ Derzeit der UART-Konverter der meisten (offiziellen) Arduino-Boards 
 +  * **CH340 / CH340G / CH341**: Ein typischer Konverter für in China hergestellte Arduino-Klone. Das Herunterladen von Treibern ist etwas umständlich. 
 + 
 + 
 +{{ :​wiki:​arduino:​ftdi_arduino_mini.png?​200|FTDI-Konverter}} 
 +==== FTDI (oder CH340G) -Konverter ==== 
 +In vielen Fällen ist ein Download über USB nicht möglich (oder nicht die beste Lösung). Beispielsweise verfügen die Arduino Mini- und Arduino Pro Mini-Serien aus Platzgründen keinen USB-Anschluss,​ deswegen die Verwendung eines externen Downloaders nötig ist. 
 + 
 +Die einfachste Lösung besteht darin, einen FTDI-Konverter zu erwerben, sodass die USB-Verbindung vom PC nur ordnungsgemäß an die Platine angepasst werden muss. 
 +===== Arduino TTL logische Ebenen ===== 
 +Die meisten digitalen (elektronischen) Geräte, die logisch hohe (HIGH) und niedrige (LOW) Pegel verwenden, werden als (standard) TTL-Logik bezeichnet. TTL-Logik (Transistor-Transistor-Logik) definiert die Spannungspegel für High / Low-Signale. Die logischen Ebenen von Arduino unterscheiden sich geringfügig von den folgenden Ebenen: 
 + 
 +{{:​wiki:​arduino:​ttl_logik_de.png|Arduino TTL logische Ebenen Vergleich}} 
 + 
 +  * VOH: Mindestausgangsleistung. Darüber hinaus liefert das TTL-Gerät ein HIGH-Signal 
 +  * VIH: Minimaler Eingangsspannungspegel für das HIGH-Signal 
 +  * VIL: Maximaler Eingangsspannungspegel für niedriges (LOW) Signal 
 +  * VOL: Maximale Ausgangsspannung für ein niedriges (LOW) Signal 
 + 
 +In abgedeckten Bereichen wird die Eingangsbewertung (HIGH oder LOW) unsicher. 
 +Während die Programmlogikpegel TRUE (wahr, 1) und FALSE (falsch, 0) sind, ist der Zustand der Pins durch die Konstanten HIGH (hoch, 1) und LOW (niedrig, 0) gekennzeichnet. 
 + 
 +Zwischenspannungspegel (1,5 V - 3,0 V für 5 V-Karten, 1,0 V - 2,0 V für 3,3 V-Karten) sollten bei Digitalsignale vermieden werden, da der Eingangsstatus ungewiss wird. 
 + 
 +Bei Ausgängen nimmt der Pin nach Ausgabe des Status HIGH den maximalen Spannungspegel an, dh. 3,3 V für 3,3 V Boards und 5 V für 5 V Boards. 
 + 
 +Wenn Sie zuvor den internen Wicklungswiderstand aktiviert haben, ist die Ausgangsspannung geringer (ca. 3,3 V) als 5 V für das HIGH-Signal (siehe digitalWrite ()). 
 + 
 +===== Arduino Pins Überlastung ===== 
 +Arduino'​s (aufgrund ihres einfachen Aufbaus) sind nicht sehr tragfähig und sollten bei allen Steuerungen berücksichtigt werden, die einen höheren Strom erfordern (Magnetventile,​ Relais, ...). Im Fall von schweren das Board einfach stirbt oder weniger Überlastung (oder kurzzeitige ​ Überlast ) aus. Im Falle einer schlecht dimensionierten Relaissteuerung kann der Arduino einfach ein- und ausgeschaltet werden (die Relais "​springen"​ entsprechend) - nun, berücksichtigen Sie in diesem Fall die Platinenlast. 
 + 
 +Die Hauptbelastungsgrenzen ​ (die natürlich von Typ variieren):​ 
 +  
 +  * Pinbelastung an UNO (5V): **20 mA** 
 +  * Pin Kapazität für Mega Board (5V): **40 mA** 
 +  * Pins Beladbarkeit (bei 3,3 V): **10 mA** 
 +  * Die maximale Belastbarkeit (UNO) aller Pins (Vcc, GND) beträgt **200 mA** 
 +  * Alle Pins (Vcc, GND) haben eine maximale Belastbarkeit (Mega) von **400..800 mA** 
 + 
 +<WRAP center round important 80%> 
 +Nach meiner Erfahrung sind Pins nicht 15 mA wert und die gesamte Platine (UNO) ist über 150 mA, weil sie "​stößt"​. 
 + 
 +Verbraucher mit höherer Leistung sollten durch Optos, optisch isolierte Relais, Halbleiterrelais oder Transistoren (Triac, TIP120 usw.) vom Arduino getrennt werden. 
 +</​WRAP>​ 
 + 
 +===== Verwendung von Pins ===== 
 +Es gibt ein paar "​kleine"​ Tipps und Tricks zur Verwendung von Arduino-Pins,​ und dies sind die Gründe für viele "​ungeklärte"​ Probleme, falls zutreffend:​ 
 + 
 +  * Pin0 und Pin1 sind mit der seriellen Kommunikation verbunden. Wenn Sie also Informationen von der Board abrufen und mit dem Befehl "​Serial.print"​ Informationen an den seriellen Monitor senden möchten, können diese Pins derzeit nicht als digitale Ausgänge verwendet werden.  
 +  * Analoge Pins können ohne weiteres als digitaler Port verwendet werden, bezeichnen Sie sie einfach als Pin 14..19 für Uno, wie in der folgenden Abbildung gezeigt. 
 +  * Nach meiner Erfahrung lohnt es sich, die Ports anzugeben, die beim Entwerfen belassen werden sollen. Da ich hauptsächlich I²C für die Kommunikation verwende, verwende ich A4 und A5 für Uno für die Kommunikation. 
 + 
 +{{ :​wiki:​arduino:​uno_pins.png?​500 |Arduino UNO pins}} 
 + 
 +===== Arduino ISP ===== 
 + 
 +Der ISP-Port (In-System Programming),​ der normalerweise in Arduino-Karten (und kompatiblen Karten) integriert ist, bietet die Möglichkeit,​ die Karte durch Umgehen von USB / Bootloading zu umgehen. Es bietet auch Kommunikationsmöglichkeiten für die SPI-Kommunikation,​ beispielsweise zwischen Karten. Die möglichen Portzuweisungen sind: 
 + 
 +{{:​wiki:​arduino:​icsp_headers.jpg?​400|Arduino ISP pins}} 
 + 
 +Außerdem sind diese Zweige parallel zu den entsprechenden Zweigen der IO-Ports (siehe unten), so dass sie hier zum Herunterladen einfach "​gruppiert"​ werden. Es ist auch möglich, ​eine Arduino-Karte zu verwenden, um andere Arduino-Programme über den ISP hochzuladen. 
 + 
 +^Arduino ISP-Port^Name^Kurzbeschreibung| 
 +|MISO|Master In Slave Out|Master-Eingang,​ Slave Out| 
 +|VTG|5V |Spannungsversorgung 5V +| 
 +|SCK|Serial Clock|Serial Clock, mit SPI als Master| 
 +|MOSI|Master Out Slave In|Master-Ausgang,​ Slave-Eingang| 
 +|RST|Reset|Reset| 
 +|GND|GND|GND| 
 + 
 +===== Arduino SPI ===== 
 +Eine der am häufigsten verwendeten Kommunikationen auf Arduino-Karten ist SPI. Die hierfür erforderlichen Bibliotheken und Beispielverbindungen sind in den spezifischen Modulen beschrieben,​ die in Arduino SPI Communication zusammengefasst sind. Das ISP-Connector-Modul auf Arduino verwendet auch SPI, das relativ einfach zu projizieren ist (leider ist "​SS"​ (select) hier nicht aufgeführt):​ 
 + 
 +{{:​wiki:​arduino:​spi.png|SPI}} 
 + 
 +^Board^SPI SS \\ (select)^SPI MOSI^SPI MISO^SPI SCK| 
 +|[[de:​arduino:​boards#​arduino_uno|Arduino UNO]]|10|11|12|13| 
 +|[[de:​arduino:​boards#​arduino_mega|Arduino Mega]]|53|50|51|52| 
 +|[[de:​arduino:​boards#​arduino_nano|Arduino Nano]]|D10|D11|D12|D13| 
 + 
 +Beschreibung der Aduino SPI Library: https://​www.arduino.cc/​en/​Reference/​SPI 
 + 
 +===== Arduino ISR ===== 
 +en: interrupt service routine 
 + 
 +Die ISR-Funktion (Interrupt Service Routine) überwacht Eingänge mit schnellem Wechselzustand. Diese Interrupts eignen sich in der Regel zum Zählen oder Überwachen schneller Impulse (Hall-Impulse - Durchflussmesser,​ Stromimpulse),​ unabhängig vom Programmablaufzyklus. 
 + 
 +Auf der Softwareseite müssen diese Signale von der Funktion attachInterrupt () verarbeitet werden, und nur die angegebenen Ports können diese schnellen Signale lesen: 
 + 
 +^Board^interrupt pins| 
 +|[[de:​arduino:​boards#​arduino_uno|Arduino Uno]], [[de:​arduino:​boards#​arduino_nano|Arduino Nano]], Mini, alle 328-based|2,​ 3| 
 +|[[de:​arduino:​boards#​arduino_mega|Arduino Mega]], Mega2560, MegaADK|2, 3, 18, 19, 20, 21| 
 +|Micro, Leonardo, andere 32u4-based|0,​ 1, 2, 3, 7| 
 +|[[de:​arduino:​boards#​wemos_d1|Wemos D1]]| alle Pins (außer D0)| 
 + 
 +===== Arduino PWM ===== 
 +PWM (Pulsweitenmodulation) ist eine Form der Signalisierung,​ die verwendet werden kann, um analoge Ausgangssignale an einem digitalen Ausgang zu erzeugen, d. H. Eine Digital-Analog-Wandlerfunktion. Die PWM-Ausgänge des Arduino können mit der Funktion analogWrite () gesteuert werden. Die ausgewählten Digitalausgänge - gekennzeichnet mit ~ - haben nur PWM funktionalität. 
 + 
 +^ Board ^ ausgewählte PWM-Ausgänge | 
 +|Für die meisten ATmega168- oder ATmega328-Boards \\ [[de:​arduino:​boards#​arduino_uno|Arduino Uno]], [[de:​arduino:​boards#​arduino_nano|Arduino Nano]]*|3, 5, 6, 9, 10, 11 Pins, Pin 5-6: 980 Hz, alle andere: 490 Hz| 
 +|[[de:​arduino:​ boards # arduino_mega| Arduino Mega]]|2..13. und 44-46. Pins| 
 +|[[de:​arduino:​ boards # wemos_d1|Wemos D1]]|alle digitalen Ausgänge (außer D0)| 
 +|[[de:​arduino:​boards#​arduino_micro|Arduino Micro]]|0, 1, 2, 3, 7| 
 +|ältere Boards|Pin 9, 10 und 11| 
 + 
 +*: Für ATmega168- oder ATmega328-Boards:​ 
 +  * timer0: Pin 5 und 6, 8-Bit-PWM 
 +  * timer1: Pin 9 und 10, 16-Bit-PWM 
 +  * timer2: Pin 11 und 3, 8-Bit-PWM 
 + 
 +Bei Servos, die eine 16-Bit-Auflösung erfordern, möglicheweise funktionieren nur die Pin 9 und 10! 
 + 
 +Mit Arduino Micro kann nur 8-Bit-PWM implementiert werden. 
 + 
 +===== Arduio AREF Pin ===== 
 +Über den AREF-Pin kann die für den Analogeingang verwendete externe Referenzspannung (Typ: EXTERNAL) (dh der Maximalwert des Eingangsbereichs) über die Funktion analogReference () eingestellt werden. 
 + 
 +===== Arduino serielle Kommunikation ===== 
 +Die Standardkommunikation zwischen Arduino-Board ist seriell (zb. UART), die über USB an das Programmiergerät oder den Kommunikationspartner-PC übertragen wird. Sowohl die TX- als auch die RX-Pins der Boards sind parallel zum USB-Port angeschlossen. Wenn Sie also serielle Kommunikation verwenden, können Sie diese Pins nicht als digitalen Port verwenden. 
 + 
 +Natürlich kann dieser Kanal auch für andere UART-Kommunikationen wie zb. RS-232 verwendet werden, aber in diesem Fall sollten die Spannungspegel,​ die für RS-232 typisch ± 12 V sind, beachtet werden. Jede Arduino-Board verfügt über mindestens einen seriellen (UART) Port mit Pin-Belegung:​ 
 + 
 +^board^pins für serielle Kommunikation| 
 +|[[de:​arduino:​boards#​arduino_uno|Arduino Uno]], [[de:​arduino:​boards#​arduino_nano|Nano]]|Rx←0,​ Tx→1| 
 +|[[de:​arduino:​boards#​arduino_mega|Arduino Mega]], Due|Serial1:​ pin 19 (RX) pin 18 (TX), Serial2: pin 17 (RX) pin 16 (TX), Serial3: pin 15 (RX) pin 14 (TX)| 
 + 
 +===== Arduino I²C ===== 
 +Eine der am häufigsten verwendeten Kommunikationen auf Arduino-Karten ist I²C. Die Standardports für die Kommunikation auf verschiedenen Boards lauten wie folgt: 
 + 
 +^ Board ^ SDA (Datenport) ^ SCL (Clock Port) ^ Hinweis | 
 +| [[de: arduino: boards # arduino_uno | Arduino UNO]] | A4 | A5 || 
 +| [[de: arduino: boards # wemos_d1 | Wemos D1]] | A4 (SDA) | A5 (SCL) | Alle digitalen Ausgänge (außer D0) können an I²C angelegt werden|