Arduino-Programmierung für Anfänger Der Ampel-Controller
Die Ampel ist ein lustiges kleines Projekt, das in weniger als einer Stunde abgeschlossen werden kann. Erfahren Sie, wie Sie mit einem Arduino Ihr eigenes Modell erstellen und die Schaltung für ein erweitertes Modell ändern können.
Machen Sie sich keine Sorgen, wenn Sie noch nie ein Arduino verwendet haben. Wir haben einen Anfängerleitfaden Erste Schritte mit Arduino: Ein Anfängerhandbuch Erste Schritte mit Arduino: Ein Anfängerhandbuch Arduino ist eine Open-Source-Plattform für Prototyping-Elektronik, die auf flexiblen, Hardware und Software verwenden. Es ist für Künstler, Designer, Hobbyisten und alle gedacht, die interaktive Objekte oder Umgebungen erstellen möchten. Weiterlesen .
Hinweis: Dies ist das neueste einer Reihe von Tutorials für Anfänger für Arduino, die Open Source-Plattform für Prototyping-Elektronik. Hier ist eine Liste der vorherigen Artikel der Serie:
- Was ist Arduino und was können Sie damit machen Was ist Arduino und was können Sie damit machen? Was ist Arduino und was können Sie damit machen? Das Arduino ist ein bemerkenswertes kleines elektronisches Gerät, aber wenn Sie noch nie eines benutzt haben, was genau sind sie und was können Sie damit machen? Weiterlesen
- Was ist ein Arduino Starter Kit und was enthält es? Was ist in einem Arduino Starter Kit enthalten? [MakeUseOf erklärt] Was ist in einem Arduino Starter Kit enthalten? [MakeUseOf erklärt] Ich habe die Arduino-Open-Source-Hardware hier bereits auf MakeUseOf vorgestellt, aber Sie benötigen mehr als nur den eigentlichen Arduino, um etwas daraus zu bauen und tatsächlich loszulegen. Arduino "Starter-Kits" sind… Lesen Sie mehr
- Weitere coole Komponenten, die Sie mit Ihrem Starter-Kit kaufen können 8 Weitere coole Komponenten für Ihre Arduino-Projekte 8 Weitere coole Komponenten für Ihre Arduino-Projekte Sie denken also über ein Arduino-Starter-Kit nach, fragen sich jedoch, ob es einige grundlegende LEDs und Widerstände gibt genug, um dich für das Wochenende zu beschäftigen? Wahrscheinlich nicht. Hier sind weitere 8… Read More
- Erste Schritte mit Ihrem Arduino Starter Kit - Installieren von Treibern und Einrichten von Board & Port Erste Schritte mit Ihrem Arduino Starter Kit - Installieren von Treibern & Einrichten von Board & Port Erste Schritte mit Ihrem Arduino Starter Kit - Installieren von Treibern & Einrichten von Board & Port Sie haben sich also ein Arduino-Starter-Kit und möglicherweise andere zufällig coole Komponenten gekauft - was jetzt? Wie fangen Sie eigentlich an, dieses Arduino-Ding zu programmieren? Wie richten Sie es ein? Lesen Sie mehr
- Ein genauerer Blick auf die Struktur einer Arduino-App und das Beispiel-Blink-Programm
Was du brauchst
Neben dem Basis-Arduino benötigen Sie:
- Rote, gelbe und grüne LEDs.
- Ein Steckbrett.
- 6 x 220? Widerstände.
- Drähte anschließen.
- 1 x Druckschalter.
- 1 x 10k? Widerstand
Nahezu jedes Arduino ist geeignet, sofern es genügend Pins hat. Stellen Sie sicher, dass Sie unseren Einkaufsführer lesen. Arduino Einkaufsführer: Welches Board sollten Sie erhalten? Arduino Buying Guide: Welches Board sollten Sie bekommen? Es gibt so viele verschiedene Arten von Arduino-Boards, dass Sie sich verwechseln könnten. Was solltest du für dein Projekt kaufen? Lassen Sie uns mit diesem Arduino Einkaufsführer helfen! Lesen Sie mehr, wenn Sie sich nicht sicher sind, welches Modell Sie benötigen. Sie haben wahrscheinlich diese Teile in Ihrem Starter-Kit. Was ist in Ihrem Arduino-Starter-Kit? [Arduino-Anfänger] Was enthält Ihr Arduino-Starter-Kit? [Arduino-Anfänger] Angesichts einer Kiste voller elektronischer Komponenten ist es leicht, überwältigt zu werden. Hier finden Sie eine Anleitung, was genau in Ihrem Kit enthalten ist. Lesen Sie bereits mehr.
Ein einfaches Beispiel
Fangen wir klein an. Eine einfache Ampel ist ein guter Ausgangspunkt. Hier ist die Schaltung:
Verbinden Sie die Anode (langes Bein) jeder LED mit den digitalen Pins acht, neun und zehn (über einen Widerstand von 220 ° C). Verbinden Sie die Kathoden (kurzes Bein) mit der Arduino-Erde.
Ich habe Fritzing benutzt, um diese Diagramme zu zeichnen. Es ist nicht nur einfach zu benutzen, es ist kostenlos!
Der Code
Beginnen Sie mit der Definition von Variablen, damit wir die Leuchten nicht über eine Zahl, sondern über den Namen ansprechen können. Starten Sie ein neues Arduino-Projekt und beginnen Sie mit folgenden Zeilen:
int rot = 10; int gelb = 9; int grün = 8;
Als nächstes fügen wir die Setup-Funktion hinzu, wo wir die roten, gelben und grünen LEDs als Ausgänge konfigurieren. Da Sie Variablen zur Darstellung der PIN-Nummern erstellt haben, können Sie jetzt stattdessen auf die Pins Bezug nehmen.
void setup () pinMode (rot, AUSGABE); pinMode (gelb, AUSGABE); pinMode (grün, AUSGABE);
Das war einfach. Nun zum schwierigen Teil - der eigentlichen Logik einer Ampel. Erstellen Sie eine separate Funktion zum Ändern der Beleuchtung (später sehen Sie warum).
Wenn Sie zum ersten Mal mit der Programmierung beginnen, ist der Code selbst sehr rudimentär - er ermittelt die minutiösen Logikdetails, die das größte Problem darstellen. Der Schlüssel zu einem guten Programmierer ist es, jeden Prozess betrachten und ihn in seine grundlegenden Schritte einteilen zu können. Hier ist der Rest des Codes:
void loop () changeLights (); Verzögerung (15000); void changeLights () // grün aus, gelb für 3 Sekunden digitalWrite (grün, LOW); DigitalWrite (Gelb, HIGH); Verzögerung (3000); // gelb ausschalten und dann 5 Sekunden lang rot einschalten digitalWrite (yellow, LOW); DigitalWrite (Rot, HIGH); Verzögerung (5000); // Rot und Gelb für 2 Sekunden (Rot ist bereits eingeschaltet) DigitalWrite (Gelb, HIGH); Verzögerung (2000); // Rot und Gelb ausschalten, dann Grün einschalten DigitalWrite (Gelb, LOW); DigitalWrite (rot, LOW); DigitalWrite (grün, HIGH); Verzögerung (3000);
Erledigt! Laden Sie jetzt hoch und führen Sie den Vorgang aus (stellen Sie sicher, dass Sie das richtige Board und den richtigen Port aus der Karte auswählen) Werkzeuge > Hafen und Werkzeuge > Tafel Menüs). Sie sollten eine Ampel haben, die sich alle 15 Sekunden ändert (wie folgt):
Ein Fußgängerübergang
Nun, da Sie die Grundlagen kennen, verbessern wir sie. Fügen Sie eine Drucktaste für Fußgänger hinzu, um das Licht jederzeit zu ändern:
Beachten Sie, dass die Ampel genau dem vorherigen Beispiel entspricht. Schließen Sie den Taster an den digitalen Pin 12 an. Sie werden feststellen, dass der Switch eine hochohmige 10k hat. Widerstand daran befestigt, und Sie fragen sich vielleicht, warum. Dies wird als Pull-Down-Widerstand bezeichnet. Es ist zunächst ein schwer zu fassendes Konzept, aber halten Sie sich an mich.
Ein Schalter lässt den Strom entweder fließen oder nicht. Dies scheint einfach genug zu sein, aber in einer Logikschaltung sollte der Strom entweder in einem hohen oder niedrigen Zustand fließen (erinnern Sie sich an - 1 oder 0, hoch oder niedrig). Sie können davon ausgehen, dass ein Druckknopfschalter, der nicht wirklich gedrückt wird, als niedrig definiert definiert wird. Tatsächlich spricht er jedoch von "Floating", da überhaupt kein Strom gezogen wird.
In diesem schwebenden Zustand ist es möglich, dass ein falscher Messwert auftritt, wenn er mit elektrischen Interferenzen schwankt. Mit anderen Worten, ein schwebender Schalter liefert weder einen zuverlässigen hohen noch einen niedrigen Zustandswert. Ein Pull-Down-Widerstand hält einen kleinen Stromfluss aufrecht, wenn der Schalter geschlossen wird, wodurch eine genaue Anzeige des niedrigen Zustands sichergestellt wird. In anderen Logikschaltkreisen finden Sie stattdessen einen Pull-Up-Widerstand - dies funktioniert nach dem gleichen Prinzip, aber umgekehrt, um sicherzustellen, dass das jeweilige Logikgatter auf High eingestellt ist.
Jetzt, im Loop-Teil des Codes, anstatt die Lichter alle 15 Sekunden zu wechseln, lesen wir stattdessen den Status des Druckschalters und ändern nur die Lichter, wenn er aktiviert ist.
Der Code
Fügen Sie am Anfang des Programms eine neue Variable hinzu:
Int-Taste = 12; // Der Schalter befindet sich an Pin 12
Fügen Sie nun in der Setup-Funktion eine neue Zeile hinzu, um den Schalter als Eingang zu deklarieren. Ich habe auch eine einzige Zeile hinzugefügt, um die Ampel auf der grünen Bühne zu starten. Ohne diese Anfangseinstellung würden sie deaktiviert, bis zum ersten Mal ein changeLights () mit einer Funktion initiiert wurde.
pinMode (Taste, INPUT); DigitalWrite (grün, HIGH);
Ändern Sie stattdessen die gesamte Schleifenfunktion wie folgt:
void loop () if (digitalRead (Schaltfläche) == HIGH) delay (15); // Software-Entprellung if (digitalRead (button) == HIGH) // wenn der Schalter auf HIGH steht, dh. gedrückt - Licht wechseln! changeLights (); Verzögerung (15000); // 15 Sekunden warten
Das sollte es tun. Sie fragen sich vielleicht, warum die Schaltfläche zweimal markiert ist (digitalRead (Schaltfläche)), getrennt durch eine kleine Verzögerung. Dies wird Entprellung genannt. Ähnlich wie der Pull-Down-Widerstand für die Taste benötigt wurde, verhindert diese einfache Überprüfung, dass der Code geringfügige Störungen als Tastendruck erkennt. Sie müssen dies nicht tun (und es würde wahrscheinlich auch gut funktionieren), aber es ist eine gute Praxis.
Durch Warten in der ob Anweisung für 15 Sekunden können sich die Ampeln für mindestens diese Dauer nicht ändern. Sobald 15 Sekunden abgelaufen sind, startet die Schleife erneut. Lesen Sie bei jedem Neustart der Schleife erneut den Status der Schaltfläche, aber wenn sie nicht gedrückt wird, wird die Taste gedrückt ob Die Anweisung wird nie aktiviert, die Lichter ändern sich nicht und sie wird einfach neu gestartet.
So sieht das aus (beschleunigt):
Eine Kreuzung
Versuchen wir es mit einem fortgeschritteneren Modell. Ändern Sie anstelle eines Fußgängerübergangs Ihre Rennstrecke so, dass zwei Ampeln vorhanden sind:
Schließen Sie die zweite Ampel an die digitalen Pins 11, 12 und 13 an.
Der Code
Weisen Sie zunächst Ihre neuen Ampel-Pins Variablen zu und konfigurieren Sie sie wie im ersten Beispiel als Ausgänge:
// Licht eins int red1 = 10; int yellow1 = 9; int green1 = 8; // Licht zwei int rot2 = 13; int yellow2 = 12; int green2 = 11; void setup () // ein PinMode (rot1, AUSGANG); pinMode (gelb1, AUSGANG); pinMode (grün1, AUSGANG); // zwei PinMode (rot2, OUTPUT); pinMode (gelb2, AUSGANG); pinMode (grün2, AUSGANG);
Aktualisieren Sie nun Ihre Schleife, um den Code aus dem ersten Beispiel (anstelle des Fußgängerübergangs) zu verwenden:
void loop () changeLights (); Verzögerung (15000);
Wieder wird die gesamte Arbeit in der durchgeführt changeLights () Funktion. Anstatt zu gehen rot > rot & Gelb > Grün, Dieser Code wechselt die Ampeln. Wenn einer grün ist, ist der andere rot. Hier ist der Code:
void changeLights () // schalte beide Gelben ein digitalWrite (green1, LOW); digitalWrite (yellow1, HIGH); digitalWrite (yellow2, HIGH); Verzögerung (5000); // schalte beide Gelbs aus und gegenüber grün und rot digitalWrite (yellow1, LOW); DigitalWrite (Rot1, Hoch); digitalWrite (yellow2, LOW); digitalWrite (red2, LOW); DigitalWrite (grün2, HOCH); Verzögerung (5000); // beide gelb wieder ein digitalWrite (yellow1, HIGH); digitalWrite (yellow2, HIGH); digitalWrite (green2, LOW); Verzögerung (3000); // schalte beide Gelbs aus und gegenüber grün und rot digitalWrite (green1, HIGH); digitalWrite (yellow1, LOW); digitalWrite (red1, LOW); digitalWrite (yellow2, LOW); digitalWrite (red2, HIGH); Verzögerung (5000);
So sieht das aus (beschleunigt):
Das war es für diese Zeit, also hoffe ich, dass Sie viel gelernt haben und Spaß beim Schreiben hatten. Sie haben sich mit ein paar LEDs und Widerständen die Hände schmutzig gemacht und einen Schalter mit Pulldown-Widerstand hinzugefügt - hoffentlich haben Sie verstanden, warum wir einen brauchen. Mit dem Code herumspielen, anpassen und vor allem Spaß haben. Wenn Sie Ergänzungen oder Änderungen vornehmen, lassen Sie es uns in den Kommentaren wissen?
Und erinnern Sie sich an Ihre Mitbastler während der Feiertage oder wenn ihr Geburtstag mit diesen Geschenkideen nur für Arduino-Fans ankommt Arduino Liebhaber in Ihrem Leben? Hier sind einige tolle Geschenkideen: Bücher, Kits, Projektkomponenten und mehr! Weiterlesen :
Bildnachweis: androsvector über Shutterstock.com
Erfahren Sie mehr über: Arduino, Programmierung.