http://sites.schaltungen.at/arduino-uno-r3/programmierung
DIN A3 oder DIN A4 quer ausdrucken ~015_b_PrennIng-a_arduino.uno.r3-programmierung (xx Seiten)_1a.pdf
*******************************************************************************I** DIN A4 ausdrucken siehe********************************************************I* DIN A4 ausdrucken ********************************************************I* Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:[email protected] ENDE
ARDUINO UNO R3 Programmierung
So einfach kann programmieren sein! Arduino Uno Tutorial für die erste Benutzung von Christian Sommer
300_c_C. Sommer-x_ARDUINO UNO Tutorial - So einfach kann programmieren sein! _1a.pdf
********************************************************I* Mikrocontrollerspielwiese Hier wird sich um Mikrocontroller-Anfänger gekümmert
Man findest hier den kompletten Einstieg und man kann hier auch die Programmiersprache C lernen.
viele Beispielprojekte, um schnell und einfach Erfolgserlebnisse zu erlangen.
Es wird aber nicht das letzte Bit erklären und nicht jede mögliche Funktion erwähnt. Die Hard- und Softwareprojekte stellen Ausgangspunkte dar, die Dir als Vorlagen für Deine eigenen, vielleicht viel größeren Projekte dienen sollen. Was Du brauchst: einwenig Vorwissen einen Mikrocontroller ein Steckbrett, um ihn draufzustecken (oder eine Universalleiterplatte/Lochrasterleiterplatte) eine Spannungsversorgung ein paar wenige Bauelemente Software, um zu Programmieren einen Programmieradapter, um Dein Programm in den Mikrocontroller zu schieben Deine Bereitschaft, einwenig die Programmiersprache C zu lernen Was kostet Dich das ? ungefähr > € 10,- Programmieren lernen 1. Einwenig C lernen 2. C für Mikrocontroller 3. eigene Projekte 4. einige nützliche Unix Befehle Projekte und Experimente 1. Los geht's Hello World! (eine LED auf dem Arduino blinken lassen) Was Du in jedem Arduino-Programm findest... 2. Arduino gibt digitale Signale aus Was ist ein digitales Signal? Das Blinksdings Wechselblinker 3-Kanal-Lauflicht (Was sind Variablen?) 5-Kanal-Lauflicht (Was sind Ports?) 14-Kanal-Lauflicht (Was ist eine for-Schleife?) 14-Kanal-Hinundherlauflicht Morse-Code: SOS (Was ist eine eigene Funktion?) Zufallslicht (rand-Funktion) Knightrider (if) 14-Kanal-Gummiballlauflicht (Bist Du ein Künstler?) Alle Pins können digital 20-Kanal-Lauflicht komische Zahlen (dez, bin, hex) 3. Arduino gibt analoge Signale aus LED halbhell leuchten lassen - Was ist PWM? Langsames Hell- und Dunkelwerden einer LED (Fading / analogWrite / PWM) PWM an allen Pins 4. Arduino gibt Informationen auf LCD aus Text-LCD: Hello World - Text-LCD! Laufschrift Arduino zählt die Sekunden (millis-Funktion) Zeitanzeige Digitaluhr Umlaute und Sonderzeichen ausgeben Eigene Symbole erschaffen und ausgeben Kleine Animation (einzelner Pixel) Kleine Animation (Mario) Grafik-LCD: Hello World - Grafik-LCD Kleine Animation Laufschrift Variablen ausgeben Große Schrift Sechs Analogwerte anzeigen Spannung und Stromstärke anzeigen Joystick (Menü, mit Joystick bedienbar) 5. Arduino sendet Informationen an Deinen Computer Hallo Computer! (Serial Monitor: Serial.print und Serial.println) 6. Arduino empfängt Informationen von Deinem Computer Hallo Arduino LED! (Eingaben im Serial Monitor lassen die Board LED an- oder ausgehen) Hallo Arduino LCD! (Eingaben im Serial Monitor lassen Text auf LCD erscheinen) 7. Arduino reagiert auf Tasteneingaben Hallo Taste! Logikfuntionen: AND, OR Gegenseitige Auslösung Gegenseitige Verriegelung (Quiz-Schaltung) Zählen von Tastenbetätigungen / Entprellen Zeitschalter (Treppenhausbeleuchtung / Monoflop) Nur eine einzige Taste steuert das Leuchten einer LED Taste löst Interrupt aus / nur eine einzige Taste steuert das Blinken einer LED 8. Arduino empfängt analoge Signale Was ist ein Analogwert? Analogwert messen und an den Computer senden Analogwert steuert LED-Band-Anzeige Analogwert steuert LED-Punkt-Anzeige (Was ist ein Makro?) Analogwert als Batteriesymbol im LCD ausgeben 9. Arduino steuert Motoren Servomotor Gleichstrommotor / DC Motor Servomotor als billiger Getriebemotorersatz z. B. für Roboter Schrittmotor 10. Arduino programmiert seinen kleinen Bruder Einen Attiny45 programmieren (ArduinoISP) Puren avr-gcc benutzen, um einen Attiny45 zu programmieren 11. Arduino steuert eine LED-Matrix Einen Punkt leuchten lassen Zeilenlauflicht Spaltenlauflicht Alle 64 Punkte hintereinander leuchten lassen Diagonallauflicht Ein schräger Strich mit Multiplex Ein Smiley zeigt Gefühle Laufschrift 12. Arduino und sein Bruder reden miteinander I2C: eine Sprache in der Mikrocontroller miteinander sprechen können Text über I2C senden Drei (oder mehr) Messwerte zu einem Slave mit LCD übertragen 13. Arduino erkennt seine Umwelt Wie warm ist es? Wie feucht ist es? Wie groß ist der Abstand bzw. die Distanz? Wie hell ist es? Wie laut ist es? Wie groß ist die Spannung? Wie groß ist der Strom? Wie groß ist der Widerstand? Wie groß ist die Frequenz? 14. Arduino benutzt einen Timer Wie man einen Timer benutzen kann 15. Arduino kommuniziert mit Deinem Computer mittels Frontends C#: Computer → Arduino: Eine LED schalten (ein C# Programm läßt die Arduino LED an- und ausgehen) Sechs LEDs schalten (ein C# Programm läßt 6 LEDs an- und ausgehen) Zwölf LEDs schalten (ein C# Programm läßt 12 LEDs an- und ausgehen - zwei Bytes senden) Eine LED dimmen (ein C# Programm steuert einen PWM-Ausgang des Arduino) Sechs LEDs dimmen (ein C# Programm steuert die 6 PWM-Ausgänge des Arduino) Arduino → Computer: Sechs Analogwerte von Arduino an den Computer senden (ein C# Programm zeigt die Analogwerte an) Java: Wie geht serielle Datenübertragung mit Java? Arduino → Computer: Java-Programm zeigt die sechs Analogwerte als Zahlen an Java-Programm zeigt die sechs Analogwerte als Balken an Java-Programm zeigt die sechs Analogwerte als Zeiger an Java-Programm zeigt die sechs Analogwerte als Kennlinien an Computer → Arduino: Ein Java-Slider sendet zum Arduino einen Wert, der im LCD ausgegeben wird Ein Java-Slider sendet zum Arduino einen Wert, der die Helligkeit einer LED steuert (PWM) Sechs Java-Slider senden 6 Werte zum Arduino-LCD Sechs Java-Slider senden 6 Werte zum Arduino und steuern 6 LEDs mit PWM Ein Java-Slider sendet zum Arduino einen Wert, der einen Servo steuert Sechs Java-Slider steuern sechs Servos Text von einem Java-Programm zum LCD senden 16. Arduino im Netzwerk (LAN und Internet) Arduino als Webserver (Messwerte im Netz veröffentlichen) Arduino als Webserver (über Netzwerk eine LED steuern) Arduino als Webclient Arduino postet auf Twitter 17. Arduino steuert Roboter Finde das Licht! Der lichtscheue Terror-Lutz Fahre auf der schwarzen Linie! Erkenne die Hindernisse! Downloads: Datenblatt des Mikrocontrollers vom Arduino Uno R3: Atmega328 Datenblatt der Mikrocontroller, die auch auf Arduinospielwiese benutzt werden: Attiny45 und Attiny85 Datenblätter weiterer Mikrocontroller gibt es auf der Mikrocontrollerspielwiese Datenblätter für Motortreiber-ICs: L293D L298 Handbuch zur C-Befehlsbibliothek: avr-libc-user-manual Schaltplan des Arduino Uno
Quelle:
http://www.arduinospielwiese.de/
********************************************************I* Einführung in die Programmierung mit C und Arduino
1 VorwortDiese Einführung entstand im Rahmen eines Semester Praktikums in China. Bei einem Projekt das über die Programmierung und den Aufbau eines Quadrocopters ging wurde mit einem Arduino gearbeitet. Um alle Projektmitglieder auf einen gemeinsamen Wissensstand zu bringen brauchte ich ein speziell für Arduino und C ausgelegte Einführung. Alle die ich im Internet dazu gefunden habe waren nicht vollständig und deckten nur kleine Teilgebiete ab. Gleichzeitig war das schreiben dieser Einführung eine gute Wiederholung für mich. Es soll für all-diejenigen sein, die etwas eingerostet sind in der Sprache C oder den Umgang mit einem Arduino lernen möchten. Wobei der Arduino schon sehr benutzerfreundlich ist und für Einsteiger im Mikrocontroller Bereich gilt, finden dennoch viele die ersten Schritte schwierig. Weil es sehr knapp gehalten wurde kann es auch als Nachschlagewerk für die Syntax genutzt werden. 2 Einführung in CEs gibt immer mehr als eine Möglichkeit, eine Aufgabe in einem Computerprogramm abzubilden. Finde deinen eigenen Programmierstil und verbessere ihn. Ablauf eines Programms:
2.1 DatentypenDie Größe der Datentypen ist System abhängig und besonders bei Mikrocontroller sehr wichtig, da der Speicher begrenzt ist. Ein Bool ist eigentlich nur ein Bit groß dennoch wird dafür ein ganzes Byte reserviert, weil kleinere Datentypen nicht verarbeitet werden können.
2.1.1 ArraysIn einem Array werden Daten gleichen Datentyps zusammengefasst.
2.1.2 StringsEin String ist nichts anderes als ein char-Array.
2.1.3 StrukturenDie Struktur definiert einen neuen Datentyp, welcher Komponenten unterschiedlicher Datentypen beinhaltet
2.1.4 AufzählungstypDer Aufzählungstyp wird verwendet, wenn man Werte gruppieren möchte, aber ein Array zu unübersichtlich ist.
2.1.5 KonstantenEs gibt Konstanten mit Variablennamen. Dabei wird eine Variable zusätzlich mit dem Schlüsselwort const gekennzeichnet, so kann sie später im Programm nicht mehr verändert werden. Es gibt auch symbolische Konstanten. Hier wird zu Beginn ein Name festgelegt, der später beim Kompilieren durch den dazugehörigen Wert ersetzt wird.
2.2 Operatoren2.2.1 Arithemtische OperatorenZu jeder arithmetischen Operation gibt es auch eine Kurzschreibweise, die aber mit bedacht verwendet werden sollte (führt aber zu schlecht lesbarem Code).
2.2.2 VergleichsoperatorenAlle Operationen geben true oder false zurück.
2.2.3 Logische OperatorenAlle Operationen geben true oder false zurück.
2.2.4 Bitorientierte OperatorenAlle Operatoren werden bitweise angewandt.
2.3 Kontrollstrukturen2.3.1 VerzweigungEs wird überprüft, ob eine Bedingung erfüllt ist. Je nach dem wird ein anderer Code ausgeführt.
2.3.2 for-SchleifeDer Code im Block wird eine bestimmte Anzahl durchlaufen. Auf die Zählvariable kann innerhalb des Blocks zugegriffen werden.
2.3.3 while-SchleifeDer Code innerhalb des Blocks wird solange ausgeführt, wie die Bedingung im Kopf erfüllt ist.
2.3.4 do-while-SchleifeDies ist die fußgesteuerte while-Schleife. Sie funktioniert wie die normale while-Schleife nur, dass die Bedingung am Schluss kommt. Der Vorteil ist, dass der Code unabhängig von der Bedingung mindestens einmal ausgeführt wird.
2.3.5 break and continueDiese beiden Anweisungen werden im Zusammenhang mit Schleifen verwendet. Vorsicht bei der Anwendung. break: der Aufruf dieser Anweisung beendet die gesamte Schleife. continue: Der Aufruf beendet nur den aktuellen Durchlauf an dieser Stelle und setzt die Codeausführung an dem Schleifenkopf fort.
2.3.6 switch-AnweisungFalls man einen Wert einer Variablen auf verschiedene Werte überprüfen möchte, ist die switch-Anweisung die beste Wahl.
2.4 Zeiger (Pointer)Zeiger zeigen auf ein Objekt eines jeden beliebigen Datentyps. Mit einem Sternchen vor dem Namen wird ein Zeiger beim Deklarieren gekennzeichnet. Er muss vom gleichen Datentyp sein, wie der, auf den er späte zeigen soll.
2.5 FunktionenWenn Programmabschnitte meist öfter als einmal benötigt werden, oder einfach nur der übersichtlichkeit halber, bietet sich eine Funktion an. Sie besteht aus dem Datentyp, welchen sie zurückgibt, dem Namen und der übergabeparameter. Doch zuerst muss man sie, wie auch bei den Variablen, bekannt geben.
2.5.1 call-by-value
2.5.2 call-by-pointerFalls die Übergabeparameter durch den Aufruf der Funktion verändert werden sollen, gibt es die Möglichkeit sie per Zeiger zu übergeben.
2.5.3 call-by-referenceähnlich wie call-by-pointer, funktioniert call-by-reference. Man gibt nur die Speicheradresse der Variablen an die Funktion weiter.
2.5.4 Default-ParameterUm bei einem Funktionsaufruf nicht alle Parameter angeben zu müssen, kann man die Variablen vor belegen.
2.5.5 Funktionen überladenMan kann den gleichen Namen einer Funktion verwenden, solange sie sich in der Parameterliste unterscheiden. Der Compiler entscheidet dann welche Funktion er verwenden muss.
2.6 FormatierungEin wichtiges Thema wird meist vergessen, die Formatierung.
3 Einführung in ArduinoArduino ist eine Open-Source-Plattform, basierend auf einem Mikrocontroller-Board und einer Entwicklungsumgebung. Warum Arduino? Arduino ist viel günstiger als so manches Entwickler Board. Sie sind leichter zu Programmieren als zum Beispiel die Atmel AVR Controller und es gibt eine große aktive Community. 3.1 Software und InstallationArduino liefert eine eigene kleine Software die Ihr hier herunterladen könnt. Es existieren auch Plugins für Microsoft Visual Studio und Eclipse. Nach der Installation könt ihr auch schon gleich loslegen. Geht auf neuen Sketch erstellen (Programme in Arduino heißen Sketch). Dann wählt ihr noch den richtigen USB Port aus, unter Tools -> Serial Port. Nun muss noch das richtige Arduino Modell ausgewählt werden, unter Tools -> Board. Zum Schluss könnt ihr den Sketch hochladen.
3.2 ProgrammierenMan kann den Arduino in C und teilweise in C++ programmieren, wobei man bei C++ auf den begrenzten Speicher acht geben muss. Zusätzlich gibt es noch spezielle mikrocontroller-typische Befehle, wie zum Beispiel das Einlesen und Ausgeben eines Pins. Für eine detaillierte Erklärung bitte hier nachlesen. 3.2.1 SketchAls Sketch wird ein Programm bezeichnet. Es beinhaltet immer zwei Funktionen, nämlich setup und loop. Setup wird genau einmal ausgeführt und dient zur Deklarationen von Variablen. Loop ist wie eine endlos-Schleife. Sie wird nach jedem Durchlauf wieder von neuem aufgerufen.
3.2.2 Digital I/OFolgendes dient zur Manipulierung der Digitalen Pins. Zuerst muss man im setup bekanntgeben, ob der Pin als Eingang oder als Ausgang fungiert.
3.2.3 Analog I/OFür die Analogen Pins gilt fast das gleiche, wie bei den Digitalen Pins. Bei analogWrite wird der Wert in ein Rechtecksignal (PWM ca. 490Hz) umgewandelt, dass im Mittelwert dem gewünschten Analogen Wert entspricht.
3.2.4 ZeitFür die Zeitgebung und die Verzögerung gibt es einige fertige Funktionen.
3.2.5 KommunikationDie Kommunikation mit dem Arduino erfolgt meist über einen Seriellen Port. Zum einen wird der Arduino darüber programmiert, zum anderen kann man auch mit ihm kommunizieren. Zum Beispiel Sensorwerte auslesen und direkt anzeigen. Um dies zu machen muss man zuerst den Serial Monitor aktivieren und die richtige Baudrate auswählen. Für weitere Funktionen bitte hier entnehmen.
3.2.6 MatheIn der Standard Bibliothek gibt es schon vorhandene Funktionen für die Berechnung. Bei der Verwendung immer darauf achten, dass der Mikrocontroller nicht viel Leistung hat.
3.2.7 Externe InterruptsEin Interrupt ist wenn ein wichtiges Ereignis eintritt und das Hauptprogramm unterbrochen wird, um das Ereignis zu verarbeiten. Bei dem Arduino Uno gibt es zwei Externe Interrupts an Pin 2 und Pin 3. Man kann den Interrupt auslösen, wenn der Eingang auf LOW ist, sich ändert ( CHANGE ), wechselt auf high ( RISING ) oder auf low wechselt ( FALLING ). Die Interrupt Service Routine ist die Funktion, die den Interrupt verarbeitet. Sie sollte so knapp wie möglich geschrieben werden. Manche Funktionen werden nicht mehr weiterverarbeitet, wenn ein Interrupt aufgerufen wird (serielle Kommunikation). Falls Interrupts bei kritischen Sachen nicht erwünscht sind, kann man sie mit noInterrupts() deaktivieren und mit interrupts() wieder aktivieren.
3.3 Boards3.3.1 Arduino UnoDas meist verwendete Board heißt Arduino Uno. Aktuell in der dritten Revision ist es für fast jedes Projekt denkbar. Im Internet kursieren etliche Projekte und Anleitungen im Bezug auf den Arduino Uno. Es gibt zusätzlich einige Shields für dieses Board um die Funktionalität zu erweitern. Spezifikation Arduino Uno R3
3.3.2 Arduino MegaWenn einem die Anschlüsse doch mal nicht reichen sollten dann ist die bessere Wahl der Arduino Mega. Mit zusätzlichem Speicher ist er gut für die großen Projekte ausgerüstet. Spezifikation Arduino Mega R3
3.4 BeispieleNun macht es hier wenig Sinn die gleichen Beispiele die es schon genügend im Internet gibt hier noch einmal auszutreten. Unter folgendem Link findet Ihr etliche gut beschriebene Tutorials die sich meist auf den Arduino Uno beziehen aber ohne Probleme auch mit dem Mega realisierbar sind. Quelle: http://manuel-jasch.de/post/einf%C3%BChrung-in-die-programmierung-mit-c-und-arduino/ DIN A4 ausdrucken ********************************************************I* Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:[email protected] ENDE |