[[Vorlage(Getestet, jammy, focal, bionic)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Archivmanager:Archive entpacken] [:Programme_starten: Starten von Programmen] [:Terminal: Ein Terminal öffnen] [:Benutzer_und_Gruppen:] [:mit Root-Rechten arbeiten:] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Arduino_Logo.png, 64, align=left)]] [https://www.arduino.cc/ Arduino / Genuino] {en} ist eine [wikipedia:Physical_Computing:Physical-Computing-Plattform], also ein Verbund von Mikrocontroller (Board genannt) und dazugehöriger Software, die beide quelloffen sind. Das heißt, man kann sich die Pläne für die Minicomputer herunterladen und diese selbst herstellen. Programmiert wird in C/C++ und die Entwicklungsumgebung ist sehr einfach gehalten und somit für Einsteiger hervorragend geeignet, auch dank vieler integrierter Bibliotheken und Beispiele. Den Aufbau der elektronischen Schaltungen kann man mittels [:Fritzing:] erstellen. Neben den Boards von Arduino werden [https://www.arduino.cc/en/ArduinoCertified/Products offiziell] {en} Intel Edison, Intel Galileo Gen 2 und Samsung ARTIK unterstützt. Eine Liste weiterer [https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips inoffizieller Hersteller] {en} eröffnet ungeahnte Möglichkeiten. {{{#!vorlage Tabelle [[Bild(Arduino-IDE_204.png, x180)]] +++ <:>Arduino-IDE (2.0.4) }}} = Installation = Voraussetzung ist ein installiertes [:Java:]. Die deutschsprachige Entwicklungsumgebung (Arduino Integrated Development Environment) ist in den offiziellen Paketquellen enthalten, allerdings in stark veralteten Versionen, selbst in neueren Ubuntus. Möchte man eine aktuelle Version, z.B. weil das eigene Board von der alten Version nicht unterstützt wird, kann man das Programm einfach [#Projektseite manuell herunterladen]. Entscheidet man sich trotzdem für die Version aus den Paketquellen, muss folgendes Paket installiert [1] werden: {{{#!vorlage Paketinstallation arduino, universe }}} == Projektseite == Von der [https://www.arduino.cc/en/Main/Software Download-Seite] {en} {dl} lädt man sich die Linux-Version herunter und entpackt [2] diese an den gewünschten Ort. Um das Programm zu starten, führt man das Skript '''arduino''' aus [3]. Optional kann man die Datei '''install.sh''' ausführen, z.B. im Terminal [4]: {{{#!vorlage Befehl sh /ENTPACKTER/ORDNER/install.sh }}} Damit wird ein Programmstarter automatisch angelegt. [[Bild(Wiki/Icons/usb.png,64,right)]] === Portable Version === Zur Erstellung einer portablen Version (z.B. auf einem USB-Stick) genügt es das [https://www.arduino.cc/en/Main/Software Archiv] {en} {dl} zu entpacken [2] und im Stammverzeichnis der aktuellen Version den Ordner '''portable''' zu erstellen. Nun werden alle Bibliotheken und Programme an diesem Platz abgelegt. Bei einer Aktualsisierung kann dieser Ordner gesichert und in das neue Verzeichnis abgelegt werden. Alternativ kopiert man die Dateien der neuen Version ins bestehende Verzeichnis und ersetzt die alten Dateien. = Einstellungen = Die Einstellungen erreicht man über ''"Datei → Voreinstellungen"''. Hier kann unter anderem der Speicherort für die Sketche (Programme), die Editor-Sprache, die Textgröße angepaßt und weitere Adressen für den [#Inoffizielle-Boards Bordverwalter] hinterlegt werden. [[Vorlage(Bildunterschrift 1602a.png, 280, "[:Fritzing:2x16 LCD-Display an einem Arduino UNO]", right)]] = Konfiguration = == Bibliotheken == Die Entwicklungsumgebung bringt eine Vielzahl von Bibliotheken mit. Je nach verwendeter Hardware kann es jedoch nötig sein weitere Bibliotheken zu installieren. Über ''"Sketch → Bibliothek einbinden"'' kann man entweder über ''"ZIP-Bibliothk hinzufügen"'' eine passende Library aufspielen oder man sucht via ''"Bibliotheken verwalten..."'' nach dieser. Die Dateien werden nach der Auswahl herunter geladen und an die richtige Stelle kopiert. Diese sind unter '''~/Arduino/libraries''' zu finden. Über ''"Sketch → Bibliothek einbinden"'' wählt man die im Sketch zu nutzende Bibliothek aus der Liste. Der passende Code (z.B. `#include `) wird im Quelltext eingefügt. == Board == Wenn das Programm gestartet ist, wählt man zuerst unter ''"Werkzeuge → Board"'' das passende Board (zB. ''"Arduino/Genuino Uno"''). aus, bzw. sucht im ''"Boardverwalter..."'' nach einem verfügbaren Treiber. Falls der Port nach dem Verbinden des Boards per USB nicht automatisch ausgewählt wurde, wählt man ihn unter ''"Werkzeuge → Port"'' aus. {{{#!vorlage Hinweis Bei der Arbeit mit mehreren Boards werden unter Umständen, neben `/dev/tty0`, weitere Ports angezeigt. }}} === Inoffizielle Boards === Um inoffizille Boards/Microcontroller zu ergänzen öffnet man die [#Einstellungen Einstellungen]. Unter ''"Zusätzliche Boardverwalter-URLs"'' ergänzt man die Adresse und wählt das Gewünschte anschließend im [#Board Boardverwalter] aus. Ein entsprechende Liste mit Links ist unter [github:arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls#list-of-3rd-party-boards-support-urls:Unofficial list of 3rd party boards support urls] zu finden. {{{#!vorlage Hinweis Für den ODROID-GO Advance gibt es eine Anleitung unter [https://magazine.odroid.com/article/arduino-for-odroid-setting-up-your-own-oduino/ odroid.com] {en}. }}} == Gruppe == Wurde das Programm aus den Paketquellen installiert, prüft beim ersten Start der Arduino Permission Checker, ob alle nötigen Berechtigungen vorhanden sind. Im Normalfall bemängelt er, dass der Nutzer nicht in der Gruppe `dialout` ist [5]. Dies kann per Bestätigung auf ''"Add"'' und anschließender Eingabe des Benutzerpassworts nachgeholt werden. Bei der manuellen Installation erscheint erst ein Fehler, wenn man versucht, Code auf das Board zu laden. Per Terminal kann die Eintragung nachgeholt und das Problem somit gelöst werden [4] [6]: {{{#!vorlage Befehl sudo adduser $USER dialout }}} ## Falls beim Sketch hochladen mit Fehlermeldungen abgebrochen wird, häufig macht der Modemmanager Probleme: ## {{{#!vorlage Befehl ## sudo apt-get --purge remove modemmanager ## }}} = Programmierung = Bevor man mit der Programmierung anfängt sollte auf einem Breadboard die Bauelemente der Schaltung stecken. Der Vorteil ist, dass man Schaltungen immer wieder umbauen und anpassen kann bevor ggf. eine Platine geätzt wird. Einen kleinen Einstieg im Umgang mit diesen Steckbrettern findet man unter [http://www.strippenstrolch.de/1-1-5-das-laborsteckbrett.html Das Laborsteckbrett] {de}. == Code == In neueren Versionen wird bereits das zweiteilige Grundgerüst des Programms (Sketch genannt) angelegt, welches standardmäßig aus den Teilen `setup()` und `loop()` besteht: {{{#!code c void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: } }}} Die Beispiele sind durch Kommentare gut beschrieben. Somit kann der Quellcode gut nachvollzogen werden. Im folgenden [https://www.arduino.cc/en/Tutorial/HelloWorld Beispiel] {en} wird ein LCD-Display, welches mit dem Treiber eines Hitachi HD44780 kompatibel ist, angesteuert und `Hello World` ausgegeben: '''HelloWorld.ino''' {{{#!code c /* LiquidCrystal Library - Hello World Demonstrates the use a 16x2 LCD display. The LiquidCrystal library works with all LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface. This sketch prints "Hello World!" to the LCD and shows the time. The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * LCD VSS pin to ground * LCD VCC pin to 5V * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3) Library originally added 18 Apr 2008 by David A. Mellis library modified 5 Jul 2009 by Limor Fried (https://www.ladyada.net) example added 9 Jul 2009 by Tom Igoe modified 22 Nov 2010 by Tom Igoe modified 7 Nov 2016 by Arturo Guadalupi This example code is in the public domain. http://www.arduino.cc/en/Tutorial/LiquidCrystalHelloWorld */ // include the library code: #include // initialize the library by associating any needed LCD interface pin // with the arduino pin number it is connected to const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis() / 1000); } }}} Unter ''"Datei → Beispiele"'', sowie in der [#Links Linkliste], findet man unzählige Beispiele, die den Einstieg vereinfachen. {{{#!vorlage Hinweis Je nachdem welche Komponenten genutzt werden ist es nötig zusätzliche Bibliotheken einzubinden. Dies geschiebt per [https://www.arduino.cc/reference/en/language/structure/further-syntax/include/ #include]. }}} = Hochladen = Hat man ein Sketch fertiggestellt schließt man den Arduino an den Linux-PC an, kompilert das Sketch und lädt es auf den Minicomputer. Im Programmfenster wird man darüber informiert, wenn der Vorgang abgeschlossen wurde. Probleme werden ebenfalls gemeldet. = Bedienung = {{{#!vorlage Tabelle Arduino-IDE +++ Schaltflächen +++ [[Bild(Arduino_pruefen.png)]] Überprüfung/Kompilieren des Sketches auf Fehler. Diese werden im unteren Teil des Programmfensters angezeigt. +++ [[Bild(Arduino_hochladen.png)]] Das Programm auf das Board hochladen. +++ [[Bild(Arduino_neu.png)]] Ein neues Sketch erstellen. +++ [[Bild(Arduino_oeffnen.png)]] Vorhandenes Sketch öffnen. +++ [[Bild(Arduino_speichern.png)]] Das derzeitige Projekt speichern. }}} Es kann hilfreich sein die Ausgabe mit dem Seriellen Monitor (''"Werkzeuge → Serieller Monitor"'') zu überprüfen. = Tastenkürzel = {{{#!vorlage Tabelle Tastenkürzel +++ Taste(n) Beschreibung +++ [[Vorlage(Tasten, p)]] Sketch ausdrucken. +++ [[Vorlage(Tasten, s)]] Sketch speichern. +++ [[Vorlage(Tasten, r)]] Sketch kompilieren bzw. überprüfen. +++ [[Vorlage(Tasten, u)]] Sketch auf den Adruino hochladen. +++ [[Vorlage(Tasten, strg+umschalt+m)]] Serieller Monitor }}} [[Bild(arduino_logo_2.png,200 ,align=right)]] = Links = * [https://www.arduino.cc/ Offizielle Webseite] {en} * [https://forum.arduino.cc/ Arduino-Forum] {en} * [https://www.arduino.cc/en/Reference/HomePage Befehlsreferenz] {en} zur Programmierung von Arduinos * [https://playground.arduino.cc/ Arduino Playground] {en} - Plattform zum Austausch von Programmcode, Schaltplänen, Tutorialen, etc. * [fb:official.arduino:Facebook] * [github:arduino:Github] * [https://plus.google.com/+Arduino Google Plus] ## Google+ wird demnächst eingestellt, 10.10.2018 Beforge (Quelle: https://heise.de/-4183950) * [twitter:arduino:Twitter] * [http://fritzing.org/learning/ Fritzing] {en} - Programmcode und Schemata * [wikipedia:Arduino_(Plattform):Arduino] * [heise:thema/Arduino:Artikel über Arduino: Arduino - Mikrocontroller] * [heise:developer/artikel/ATtiny-Winzlinge-ganz-gross-3329007.html:ATtiny: Winzlinge ganz groß] * [heise:make/artikel/Arduino-Uno-als-In-System-Programmer-2769246.html:Microcontroller flashen] * [https://www.arduino.cc/en/Tutorial/ArduinoISP Arduino ISP] {en} * [https://playground.arduino.cc/Main/ManualsAndCurriculum Manuals and Curriculum] {en} - Umfangreiche Link-Sammlung zu Handbüchern * [https://hci.rwth-aachen.de/arduino Arduino in a Nutshell] {en} {dl} * [https://www.elegoo.com/download/ Elegoo] {en} {dl} - Treiber, Programmcode und Bibliotheken * [https://medium.com/@hhk7734/how-to-use-i2c-lcd-on-odroid-eaf20d20966c How to use I2C LCD on ODROID] {en} ## https://startingelectronics.org/ #tag: Hardware, Editor, Bildung, Programmierung, Arduino, Odroid