SunFounder 3 in 1 IoT/Smart Car/Lernset¶
Danke, dass Sie sich für unser 3-in-1 Starterset entschieden haben.
Bemerkung
Dieses Dokument ist in den folgenden Sprachen verfügbar.
Bitte klicken Sie auf die jeweiligen Links, um das Dokument in Ihrer bevorzugten Sprache aufzurufen.

Haben Sie online ein Lernset gekauft, das nur mit einem einfachen PDF oder einem Heft mit den Schritten zum Aufbau des Projekts geliefert wurde?
Oder vielleicht möchten Sie Ihr eigenes Smart Car bauen, finden aber die Angebote online teuer und kompliziert?
Oder haben Sie nützliche und interessante IoT-Projekte gesehen, die von anderen erstellt wurden, wissen aber nicht, wo Sie anfangen sollen?
All diese Probleme können mit unserem 3-in-1 Starterset gelöst werden.
Im 3-in-1 Starterset finden Sie einen vollständigen Arduino-Kurs, der Anfängern hilft, Arduino zu lernen, sowie eine Vielzahl interessanter Projekte, die andere Lernsets nicht bieten, wie Smart Car-Projekte und IoT-Projekte. Sie werden Arduino meistern, solange Sie dem Kurs des Sets Schritt für Schritt folgen. Statt nur Code zu kopieren und einzufügen, werden Sie Ihren eigenen Code schreiben und Ihr Arduino-Projekt nach Ihren Wünschen umsetzen.
Darüber hinaus bietet das Set auch 30+ Scratch-Programmierprojekte für jüngere Schüler und Enthusiasten, sodass Anfänger keine Programmiererfahrung benötigen, um ihre eigenen Kreationen zu schreiben und zu realisieren!
Los geht’s! Fangen Sie mit Vertrauen an, Arduino von Null auf Held zu programmieren!
Bei Fragen senden Sie bitte eine E-Mail an service@sunfounder.com und wir werden so schnell wie möglich antworten.
Über die Anzeigesprache
Dieses Dokument ist auch in anderen Sprachen verfügbar. Um die Anzeigesprache zu ändern, klicken Sie bitte auf das Read the Docs-Symbol in der linken unteren Ecke der Seite.

Contents
Erfahren Sie mehr über die Komponenten in Ihrem Kit¶
Nach dem Öffnen des Pakets überprüfen Sie bitte, ob die Anzahl der Komponenten mit der Produktbeschreibung übereinstimmt und ob alle Komponenten in gutem Zustand sind.
Im Folgenden wird jede Komponente vorgestellt, einschließlich des Funktionsprinzips der Komponente und der zugehörigen Projekte.
Steuerplatine
SunFounder R3 Platine¶

Bemerkung
Die SunFounder R3 Platine ist eine Hauptplatine mit fast denselben Funktionen wie das Arduino Uno. Beide Platinen können austauschbar verwendet werden.
Die SunFounder R3 Platine ist eine Mikrocontroller-Platine, die auf dem ATmega328P basiert (Datenblatt). Sie verfügt über 14 digitale Ein-/Ausgangspins (von denen 6 als PWM-Ausgänge verwendet werden können), 6 analoge Eingänge, einen 16 MHz Keramikresonator (CSTCE16M0V53-R0), eine USB-Verbindung, eine Strombuchse, einen ICSP-Header und einen Reset-Knopf. Sie enthält alles, was zur Unterstützung des Mikrocontrollers benötigt wird; einfach mit einem USB-Kabel an einen Computer anschließen oder mit einem AC-DC-Adapter oder einer Batterie starten.
Technische Parameter

MIKROCONTROLLER: ATmega328P
BETRIEBSSPANNUNG: 5V
EINGANGSSPANNUNG (EMPFOHLEN): 7-12V
EINGANGSSPANNUNG (GRENZWERTE): 6-20V
DIGITALE I/O-PINS: 14 (0-13, von denen 6 PWM-Ausgabe bieten (3, 5, 6, 9-11))
PWM DIGITALE I/O-PINS: 6 (3, 5, 6, 9-11)
ANALOGE EINGANGSPINS: 6 (A0-A5)
GLEICHSTROM PRO I/O-PIN: 20 mA
GLEICHSTROM FÜR 3,3V-PIN: 50 mA
FLASH-SPEICHER: 32 KB (ATmega328P), von denen 0,5 KB vom Bootloader verwendet werden
SRAM: 2 KB (ATmega328P)
EEPROM: 1 KB (ATmega328P)
TAKTFREQUENZ: 16 MHz
LED_BUILTIN: 13
LÄNGE: 68,6 mm
BREITE: 53,4 mm
GEWICHT: 25 g
I2C-Anschluss: A4(SDA), A5(SCL)
Weiterführende Informationen
ESP8266 Modul¶

Das ESP8266 ist ein kostengünstiger Wi-Fi-Mikrochip mit integrierter TCP/IP-Netzwerksoftware und Mikrocontroller-Fähigkeit, produziert von Espressif Systems in Shanghai, China.
Der Chip erregte erstmals im August 2014 die Aufmerksamkeit westlicher Bastler mit dem ESP-01 Modul, hergestellt von einem Drittanbieter Ai-Thinker. Dieses kleine Modul ermöglicht es Mikrocontrollern, sich mit einem Wi-Fi-Netzwerk zu verbinden und einfache TCP/IP-Verbindungen mit Hayes-Stil-Befehlen herzustellen. Zu Beginn gab es jedoch kaum englischsprachige Dokumentationen über den Chip und die von ihm akzeptierten Befehle. Der sehr niedrige Preis und die Tatsache, dass es auf dem Modul sehr wenige externe Komponenten gab, was darauf hindeutete, dass es in größeren Mengen sehr kostengünstig sein könnte, lockte viele Hacker an, das Modul, den Chip und die darauf befindliche Software zu erkunden, sowie die chinesische Dokumentation zu übersetzen.
Pins des ESP8266 und ihre Funktionen:

Pin |
Bezeichnung |
Beschreibung |
---|---|---|
1 |
TXD |
UART_TXD, Senden; Allgemeiner Eingabe/Ausgabe-Zweck: GPIO1; Pull-down beim Start nicht erlaubt. |
2 |
GND |
GND |
3 |
CU_PD |
Funktioniert bei hohem Pegel; Ausschaltung bei niedrigem Pegel. |
4 |
GPIO2 |
Muss beim Einschalten auf hohem Pegel sein; Pull-down nicht erlaubt; Standardmäßig Pull-up; |
5 |
RST |
Externes Reset-Signal, Reset bei niedrigem Pegel; Funktioniert bei hohem Pegel (standardmäßig hoch); |
6 |
GPIO0 |
WiFi Statusanzeige; Betriebsmodusauswahl: Pull-up: Flash Boot, Betriebsmodus; Pull-down: UART Download, Download-Modus. |
7 |
VCC |
Stromversorgung (3,3V) |
8 |
RXD |
UART_RXD, Empfangen; Allgemeiner Eingabe/Ausgabe-Zweck: GPIO3; |
ESP8266 Adapter¶

Der ESP8266 Adapter ist eine Erweiterungsplatine, die es ermöglicht, das ESP8266 Modul auf einem Steckbrett zu verwenden.
Er passt perfekt zu den Pins des ESP8266 selbst und fügt zudem einen 5V Pin hinzu, um die Spannung von der Arduino-Platine zu erhalten. Der integrierte AMS1117-Chip wird verwendet, um das ESP8266 Modul nach der Spannungsabsenkung auf 3,3V zu betreiben.
Das Schaltbild ist wie folgt:

Beispiel
IoT-Projekte (IoT-Projekt)
Grundlagen
Breadboard¶

Ein Breadboard ist eine Konstruktionsbasis für den Prototypenbau von Elektronik. Ursprünglich bezog sich das Wort auf ein buchstäbliches Brotschneidebrett, ein poliertes Stück Holz, das zum Brotschneiden verwendet wurde.[1] In den 1970er Jahren wurde das lötfreie Breadboard (auch als Steckbrett oder Terminalarray-Platine bekannt) eingeführt, und heutzutage bezeichnet der Begriff „Breadboard“ hauptsächlich diese.
Es wird verwendet, um Schaltkreise schnell aufzubauen und zu testen, bevor ein Schaltkreisdesign abgeschlossen wird. Es verfügt über viele Löcher, in die oben erwähnte Komponenten wie ICs und Widerstände sowie Jumperkabel eingesteckt werden können. Das Breadboard ermöglicht es Ihnen, Komponenten leicht ein- und auszustecken.
Das Bild zeigt die interne Struktur eines Breadboards. Obwohl diese Löcher auf dem Breadboard unabhängig voneinander zu sein scheinen, sind sie tatsächlich intern durch Metallstreifen miteinander verbunden.

Wenn Sie mehr über Breadboards erfahren möchten, verweisen wir auf: Wie man ein Breadboard benutzt - Science Buddies
Widerstand¶

Ein Widerstand ist ein elektronisches Element, das den Strom in einem Zweig begrenzen kann. Ein fester Widerstand ist eine Art von Widerstand, dessen Widerstandswert nicht verändert werden kann, während der eines Potentiometers oder eines variablen Widerstands einstellbar ist.
Es gibt zwei gebräuchliche Schaltsymbole für Widerstände. In der Regel ist der Widerstandswert darauf vermerkt. Wenn Sie diese Symbole in einer Schaltung sehen, repräsentieren sie einen Widerstand.

Ω ist die Einheit des Widerstands und größere Einheiten sind KΩ, MΩ usw. Ihre Beziehung ist wie folgt: 1 MΩ = 1000 KΩ, 1 KΩ = 1000 Ω. Normalerweise ist der Widerstandswert darauf vermerkt.
Bevor man einen Widerstand verwendet, muss man dessen Widerstandswert kennen. Hier sind zwei Methoden: Sie können die Farbbänder auf dem Widerstand betrachten oder ein Multimeter verwenden, um den Widerstand zu messen. Es wird empfohlen, die erste Methode zu verwenden, da sie bequemer und schneller ist.

Wie auf der Karte gezeigt, steht jede Farbe für eine Zahl.
Schwarz |
Braun |
Rot |
Orange |
Gelb |
Grün |
Blau |
Violett |
Grau |
Weiß |
Gold |
Silber |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
0.1 |
0.01 |
Die 4- und 5-Band-Widerstände werden häufig verwendet und haben 4 bzw. 5 Farbbänder.
Normalerweise, wenn Sie einen Widerstand erhalten, kann es schwierig sein zu entscheiden, von welchem Ende aus man die Farben lesen sollte. Ein Tipp ist, dass der Abstand zwischen dem 4. und 5. Band vergleichsweise größer ist.
Daher können Sie die Lücke zwischen den beiden Farbbändern an einem Ende des Widerstands betrachten; wenn sie größer als alle anderen Bandlücken ist, dann sollten Sie von der gegenüberliegenden Seite lesen.
Sehen wir uns an, wie man den Widerstandswert eines 5-Band-Widerstands wie unten gezeigt abliest.

Für diesen Widerstand sollte der Widerstand von links nach rechts gelesen werden. Der Wert sollte in diesem Format vorliegen: 1. Band 2. Band 3. Band x 10^Multiplier (Ω) und der zulässige Fehler beträgt ±Toleranz%. So ist der Widerstandswert dieses Widerstands 2(rot) 2(rot) 0(schwarz) x 10^0(schwarz) Ω = 220 Ω, und der zulässige Fehler beträgt ± 1% (braun).
Mehr über Widerstände können Sie hier nachlesen: Widerstand - Wikipedia.
Kondensator¶


Ein Kondensator bezeichnet die Menge an gespeicherter Ladung unter einem gegebenen Potenzialunterschied, gekennzeichnet durch C, wobei die internationale Einheit das Farad (F) ist. Allgemein gesprochen bewegen sich elektrische Ladungen unter einer Kraft in einem elektrischen Feld. Wenn zwischen den Leitern ein Medium vorhanden ist, wird die Bewegung der elektrischen Ladungen behindert und die Ladungen sammeln sich auf den Leitern an, was zu einer Ansammlung von elektrischen Ladungen führt.
Die Menge der gespeicherten elektrischen Ladungen wird Kapazität genannt. Da Kondensatoren zu den am häufigsten verwendeten elektronischen Bauteilen in elektronischen Geräten gehören, finden sie breite Anwendung in Gleichstrom-Isolation, Kopplung, Bypass, Filterung, Schwingkreisen, Energieumwandlung und Steuerungsschaltungen. Kondensatoren werden unterteilt in Elektrolytkondensatoren, Festkörperkondensatoren und so weiter.
Je nach Materialeigenschaften können Kondensatoren unterteilt werden in: Aluminium-Elektrolytkondensatoren, Folienkondensatoren, Tantal-Kondensatoren, Keramik-Kondensatoren, Superkondensatoren und so weiter.
In diesem Set werden Keramikkondensatoren und Elektrolytkondensatoren verwendet.
Auf den Keramikkondensatoren sind die Bezeichnungen 103 oder 104 zu finden, welche den Kapazitätswert repräsentieren, 103=10x10^3pF, 104=10x10^4pF.
Einheitenumrechnung
1F=10^3mF=10^6uF=10^9nF=10^12pF
Beispiel
2.6 Türklingel (Scratch-Projekt)
2.16 SPIEL - Apfel essen (Scratch-Projekt)
2.19 SPIEL - Angeln (Scratch-Projekt)
Jumper-Kabel¶
Kabel, die zwei Anschlüsse verbinden, werden als Jumper-Kabel bezeichnet. Es gibt verschiedene Arten von Jumper-Kabeln. Hier konzentrieren wir uns auf diejenigen, die in Steckbrettern (Breadboards) verwendet werden. Unter anderem werden sie dazu verwendet, elektrische Signale von beliebigen Stellen auf dem Steckbrett zu den Ein-/Ausgangspins eines Mikrocontrollers zu übertragen.
Jumper-Kabel werden durch Einstecken ihrer „Endanschlüsse“ in die vorgesehenen Steckplätze des Steckbretts verbunden. Unter der Oberfläche des Steckbretts befinden sich einige parallele Platten, die die Steckplätze in Gruppen von Reihen oder Spalten verbinden, je nach Bereich. Die „Endanschlüsse“ werden in die Steckbrettschlitze eingeführt, ohne zu löten, in die speziellen Schlitze, die im spezifischen Prototyp verbunden werden müssen.
Es gibt drei Arten von Jumper-Kabeln: Female-to-Female (Weiblich zu Weiblich), Male-to-Male (Männlich zu Männlich) und Male-to-Female (Männlich zu Weiblich). Der Grund, warum wir es Male-to-Female nennen, liegt daran, dass es an einem Ende eine herausragende Spitze und an dem anderen ein versenktes weibliches Ende hat. Male-to-Male bedeutet, dass beide Seiten männlich sind, und Female-to-Female bedeutet, dass beide Enden weiblich sind.

In einem Projekt können mehrere Typen verwendet werden. Die Farbe der Jumper-Kabel kann unterschiedlich sein, dies bedeutet jedoch nicht, dass ihre Funktion entsprechend unterschiedlich ist. Sie sind lediglich so gestaltet, dass man die Verbindung zwischen den einzelnen Schaltungen besser erkennen kann.
Chip
74HC595¶

Der 74HC595 besteht aus einem 8-Bit-Schieberegister und einem Speicherregister mit dreistufigen parallelen Ausgängen. Er wandelt serielle Eingaben in parallele Ausgaben um, sodass Sie IO-Ports eines MCU einsparen können. Wenn MR (Pin10) auf hohem Pegel und OE (Pin13) auf niedrigem Pegel ist, werden Daten am aufsteigenden Flanken von SHcp eingegeben und gelangen über den aufsteigenden Flanken von SHcp ins Speicherregister. Wenn die beiden Taktgeber verbunden sind, liegt das Schieberegister immer einen Puls vor dem Speicherregister. Es gibt einen seriellen Schiebeeingangspin (Ds), einen seriellen Ausgangspin (Q) und einen asynchronen Reset-Taster (niedriger Pegel) im Speicherregister. Das Speicherregister gibt einen Bus mit parallelen 8 Bits und in drei Zuständen aus. Wenn OE aktiviert ist (niedriger Pegel), wird die Daten im Speicherregister auf den Bus ausgegeben.

Pins des 74HC595 und ihre Funktionen:
Q0-Q7: 8-Bit-parallele Daten-Ausgangspins, können 8 LEDs oder 8 Pins einer 7-Segment-Anzeige direkt steuern.
Q7’: Serieller Ausgangspin, verbunden mit DS eines anderen 74HC595, um mehrere 74HC595 in Serie zu verbinden.
MR: Reset-Pin, aktiv auf niedrigem Pegel.
SHcp: Zeitsequenzeingabe des Schieberegisters. Am aufsteigenden Rand bewegen sich die Daten im Schieberegister nacheinander um ein Bit, d.h. Daten in Q1 wechseln zu Q2 usw. Am fallenden Rand bleiben die Daten im Schieberegister unverändert.
STcp: Zeitsequenzeingabe des Speicherregisters. Am aufsteigenden Rand wechseln die Daten im Schieberegister ins Speicherregister.
CE: Ausgangsaktivierungspin, aktiv auf niedrigem Pegel.
DS: Serieller Dateneingangspin.
VCC: Positive Versorgungsspannung.
GND: Erdung.
Beispiel
5.9 ShiftOut(LED) (Grundlegendes Projekt)
5.10 ShiftOut(Segmentanzeige) (Grundlegendes Projekt)
7. Strombegrenzendes Tor (IoT-Projekt)
Anzeige
LED¶

Halbleiter-Leuchtdioden sind eine Art von Bauteil, das elektrische Energie durch PN-Übergänge in Lichtenergie umwandeln kann. Nach Wellenlänge unterteilt, gibt es Laserdioden, Infrarot-Leuchtdioden und sichtbare Leuchtdioden, die im Allgemeinen als Leuchtdioden (LED) bezeichnet werden.
Dioden haben eine unidirektionale Leitfähigkeit, daher fließt der Strom im Schaltungssymbol so, wie der Pfeil es anzeigt. Man sollte nur der Anode eine positive und der Kathode eine negative Spannung zuführen. Dadurch leuchtet die LED.

Eine LED hat zwei Pins. Der längere ist die Anode und der kürzere die Kathode. Achten Sie darauf, sie nicht verkehrt herum anzuschließen. In der LED gibt es eine feste Vorwärtsspannung, weshalb sie nicht direkt mit der Schaltung verbunden werden kann, da die Versorgungsspannung diesen Abfall übersteigen und die LED dadurch beschädigen kann. Die Vorwärtsspannung der roten, gelben und grünen LED beträgt 1,8 V und die der weißen LED 2,6 V. Die meisten LEDs können einen maximalen Strom von 20 mA verkraften, daher muss ein Strombegrenzungswiderstand in Reihe geschaltet werden.
Die Formel für den Widerstandswert lautet:
R = (Vsupply – VD)/I
R steht für den Widerstandswert des Strombegrenzungswiderstands, Vsupply für die Versorgungsspannung, VD für den Spannungsabfall und I für den Betriebsstrom der LED.
Hier finden Sie eine detaillierte Einführung in die LED: LED - Wikipedia.
Beispiel
1.1 Hallo, LED! (Grundlegendes Projekt)
2.1 Überblenden (Grundlegendes Projekt)
2. Daten von Blynk abrufen (IoT-Projekt)
2.2 Atmende LED (Scratch-Projekt)
2.1 Tischlampe (Scratch-Projekt)
RGB LED¶

RGB-LEDs emittieren Licht in verschiedenen Farben. Eine RGB-LED kombiniert drei LEDs in den Farben Rot, Grün und Blau in einer transparenten oder halbtransparenten Kunststoffhülle. Durch das Ändern der Eingangsspannung der drei Pins und deren Überlagerung kann sie, statistischen Angaben zufolge, 16.777.216 verschiedene Farben erzeugen.

RGB-LEDs können in gemeinsame Anoden und gemeinsame Kathoden unterteilt werden. In diesem Bausatz wird die letztere verwendet. Die gemeinsame Kathode, oder GK, bedeutet, dass die Kathoden der drei LEDs verbunden sind. Wenn man sie mit GND verbindet und die drei Pins anschließt, wird die LED die entsprechende Farbe anzeigen.
Ihr Schaltungssymbol ist im folgenden Bild dargestellt.

Eine RGB-LED hat 4 Pins: Der längste ist GND; die anderen sind Rot, Grün und Blau. Wenn man die Kunststoffhülle berührt, findet man eine Kerbe. Der dem Einschnitt am nächsten gelegene Pin ist der erste Pin, gekennzeichnet als Rot, dann GND, Grün und anschließend Blau.

Beispiel
2.2 Buntes Licht (Grundlegendes Projekt)
5.2 Schwellenwert (Grundlegendes Projekt)
2.3 Bunte Kugeln (Scratch-Projekt)
7-Segment-Anzeige¶

Eine 7-Segment-Anzeige ist eine Komponente in der Form einer 8, die aus 7 LEDs besteht. Jede LED wird als Segment bezeichnet - wenn sie mit Energie versorgt wird, bildet ein Segment einen Teil einer darzustellenden Zahl.
Es gibt zwei Arten von Pin-Verbindungen: Gemeinsame Kathode (CC) und Gemeinsame Anode (CA). Wie der Name schon sagt, hat eine CC-Anzeige alle Kathoden der 7 LEDs verbunden, während eine CA-Anzeige alle Anoden der 7 Segmente verbunden hat.
In diesem Bausatz verwenden wir die 7-Segment-Anzeige mit gemeinsamer Kathode, hier ist das elektronische Symbol dazu.

Jede LED in der Anzeige erhält ein positionelles Segment, von dem einer ihrer Anschlusspins aus dem rechteckigen Kunststoffgehäuse herausgeführt wird. Diese LED-Pins sind von „a“ bis „g“ beschriftet und repräsentieren jede einzelne LED. Die anderen LED-Pins sind miteinander verbunden und bilden einen gemeinsamen Pin. Durch Vorwärtsbiasierung der entsprechenden Pins der LED-Segmente in einer bestimmten Reihenfolge leuchten einige Segmente auf, während andere dunkel bleiben, wodurch der entsprechende Charakter auf der Anzeige dargestellt wird.
Anzeigecodes
Um Ihnen zu helfen zu verstehen, wie 7-Segment-Anzeigen (Gemeinsame Kathode) Zahlen darstellen, haben wir die folgende Tabelle gezeichnet. Zahlen sind die Zahlen 0-F, die auf der 7-Segment-Anzeige dargestellt werden; (DP) GFEDCBA bezieht sich auf die entsprechende LED, die auf 0 oder 1 eingestellt ist. Zum Beispiel bedeutet 00111111, dass DP und G auf 0 eingestellt sind, während die anderen auf 1 eingestellt sind. Daher wird die Zahl 0 auf der 7-Segment-Anzeige angezeigt, während HEX-Code der entsprechenden Hexadezimalzahl entspricht.

Beispiel
5.15 EEPROM (Grundlegendes Projekt)
7. Strombegrenzendes Tor (IoT-Projekt)
I2C LCD1602¶

GND: Erdung
VCC: Spannungsversorgung, 5V.
SDA: Serielle Datenleitung. Verbinden Sie über einen Pull-up-Widerstand mit VCC.
SCL: Serielle Taktleitung. Verbinden Sie über einen Pull-up-Widerstand mit VCC.
Wie wir alle wissen, bereichern LCDs und einige andere Displays die Mensch-Maschine-Interaktion erheblich. Sie haben jedoch eine gemeinsame Schwäche. Wenn sie an einen Controller angeschlossen sind, werden mehrere IOs des Controllers belegt, der nicht viele externe Ports hat. Dies beschränkt auch andere Funktionen des Controllers.
Deshalb wurde das LCD1602 mit einem I2C-Modul entwickelt, um dieses Problem zu lösen. Das I2C-Modul verfügt über einen eingebauten PCF8574 I2C-Chip, der I2C-Serien-Daten in parallele Daten für die LCD-Anzeige umwandelt.
I2C-Adresse
Die Standardadresse ist in der Regel 0x27, in einigen Fällen kann sie 0x3F sein.
Nimmt man die Standardadresse von 0x27 als Beispiel, kann die Geräteadresse durch Kurzschließen der A0/A1/A2-Pads geändert werden; im Standardzustand sind A0/A1/A2 auf 1, und wenn das Pad kurzgeschlossen ist, sind A0/A1/A2 auf 0.

Hintergrundbeleuchtung/Kontrast
Die Hintergrundbeleuchtung kann durch das Aufstecken eines Jumper-Caps aktiviert werden, durch das Abziehen wird sie deaktiviert. Das blaue Potentiometer auf der Rückseite dient zur Kontrasteinstellung (Verhältnis der Helligkeit zwischen dem hellsten Weiß und dem dunkelsten Schwarz).

Kurzschluss-Cap: Mit diesem Cap kann die Hintergrundbeleuchtung aktiviert werden, ziehen Sie es ab, um die Beleuchtung zu deaktivieren.
Potentiometer: Es wird verwendet, um den Kontrast (Klarheit des angezeigten Textes) einzustellen, der im Uhrzeigersinn erhöht und gegen den Uhrzeigersinn verringert wird.
Beispiel
5.11.1 Flüssigkristallanzeige (Grundlegendes Projekt)
5.12 Serielle Lektüre (Grundlegendes Projekt)
Ton
Summer¶

Als eine Art von elektronischem Summer mit integrierter Struktur, die mit Gleichstrom versorgt werden, werden Summer häufig in Computern, Druckern, Fotokopierern, Alarmen, elektronischen Spielzeugen, automobilen Elektronikgeräten, Telefonen, Timern und anderen elektronischen Produkten oder Sprachgeräten verwendet.
Man kann Summer in aktive und passive unterteilen (siehe folgendes Bild). Wenn man den Summer so dreht, dass seine Pins nach oben zeigen, dann ist der Summer mit einer grünen Platine ein passiver Summer, während der mit schwarzem Klebeband umwickelte ein aktiver Summer ist.
Der Unterschied zwischen einem aktiven und einem passiven Summer:
Ein aktiver Summer hat eine eingebaute Oszillationsquelle, daher gibt er Töne von sich, wenn er elektrifiziert wird. Ein passiver Summer hat jedoch keine solche Quelle und gibt daher keinen Ton von sich, wenn Gleichstromsignale verwendet werden. Stattdessen müssen Sie ihn mit Rechteckwellen antreiben, deren Frequenz zwischen 2K und 5K liegt. Der aktive Summer ist oft teurer als der passive aufgrund der eingebauten Oszillationskreise.
Das Folgende ist das elektrische Symbol eines Summers. Er hat zwei Pins, einen positiven und einen negativen Pol. Ein + auf der Oberfläche stellt die Anode dar, und der andere ist die Kathode.

Sie können die Pins des Summers überprüfen: der längere ist die Anode und der kürzere die Kathode. Bitte verwechseln Sie sie nicht beim Anschließen, sonst gibt der Summer keinen Ton von sich.
Beispiel
1.2 Piepton (Grundlegendes Projekt)
5.7 Tone() oder noTone() (Grundlegendes Projekt)
4. Cloud-Musikplayer (IoT-Projekt)
Treiber
TT Motor¶

Dies ist ein TT Gleichstrom-Getriebemotor mit einem Übersetzungsverhältnis von 1:48. Er wird mit 2 x 200mm Kabeln mit 0,1“ Steckern geliefert, die in ein Breadboard passen. Ideal für den Einsatz in einem Breadboard oder Klemmblock.
Diese Motoren können mit einer Spannung von 3 ~ 6VDC betrieben werden. Bei höheren Spannungen werden sie natürlich etwas schneller laufen.
Beachten Sie, dass dies sehr einfache Motoren sind, die über keinen eingebauten Encoder, Geschwindigkeitsregelung oder Positionsrückmeldung verfügen. Die Spannung wird zugeführt und die Drehung erfolgt. Es wird Variationen von Motor zu Motor geben. Wenn Sie eine präzise Bewegung benötigen, benötigen Sie ein separates Feedback-System.
Technische Details
Nennspannung: 3~6V
Dauerhafter Leerlaufstrom: 150mA +/- 10%
Min. Betriebsgeschwindigkeit (3V): 90+/- 10% U/min
Min. Betriebsgeschwindigkeit (6V): 200+/- 10% U/min
Anhaltemoment (3V): 0,4kg.cm
Anhaltemoment (6V): 0,8kg.cm
Übersetzungsverhältnis: 1:48
Abmessungen des Gehäuses: 70 x 22 x 18mm
Kabellänge: 200mm & 28 AWG
Gewicht: 30,6g
Abmessungszeichnung

Beispiel
1.3 Das Rad drehen (Grundlegendes Projekt)
1. Bewegung (Auto-Projekt)
3. Geschwindigkeit erhöhen (Auto-Projekt)
8. IoT Auto (IoT-Projekt)
3.1 Das Auto testen (Scratch-Projekt)
Servo¶

Ein Servo besteht in der Regel aus folgenden Teilen: Gehäuse, Welle, Getriebesystem, Potentiometer, Gleichstrommotor und eingebettetem Board.
So funktioniert es: Der Mikrocontroller sendet PWM-Signale an den Servo. Das eingebettete Board im Servo empfängt diese Signale über den Signalpin und steuert den darin befindlichen Motor an. Dadurch treibt der Motor das Getriebesystem an, welches nach einer Verzögerung die Welle antreibt. Die Welle und das Potentiometer des Servos sind miteinander verbunden. Wenn sich die Welle dreht, treibt sie das Potentiometer an. Das Potentiometer gibt ein Spannungssignal an das eingebettete Board weiter. Das Board bestimmt dann auf Basis der aktuellen Position die Drehrichtung und -geschwindigkeit, sodass es genau an der definierten Position stoppen und dort verharren kann.

Der Winkel wird durch die Dauer eines Impulses bestimmt, der auf das Steuerkabel gegeben wird. Dies wird als Pulsweitenmodulation bezeichnet. Das Servo erwartet alle 20 ms einen Impuls. Die Länge des Impulses bestimmt, wie weit der Motor dreht. Ein 1,5ms-Impuls lässt den Motor beispielsweise auf die 90-Grad-Position (Neutralstellung) drehen. Wenn ein Impuls, der kürzer als 1,5 ms ist, an einen Servo gesendet wird, dreht sich dieser zu einer Position und hält seine Ausgangswelle einige Grade gegen den Uhrzeigersinn vom Neutralpunkt aus. Bei einem Impuls, der breiter als 1,5 ms ist, tritt das Gegenteil auf. Die minimale Impulsbreite und die maximale Impulsbreite, die den Servo zu einer gültigen Position drehen lassen, sind Funktionen jedes Servos. Üblicherweise liegt die Mindestimpulsbreite bei etwa 0,5 ms und die Maximalimpulsbreite bei 2,5 ms.

Beispiel
5.5 Interne Bibliothek verwenden (Grundlegendes Projekt)
7. Strombegrenzendes Tor (IoT-Projekt)
2.10 Pendel (Scratch-Projekt)
Kreiselpumpe¶

Die Kreiselpumpe wandelt Rotationskinetik in hydrodynamische Energie um, um Flüssigkeiten zu transportieren. Die Rotationsenergie stammt aus dem Elektromotor. Die Flüssigkeit tritt entlang oder in der Nähe der rotierenden Welle in das Pumpenlaufrad ein, wird vom Laufrad beschleunigt, fließt radial nach außen in die Diffusor- oder Spiralgehäusekammer und strömt von dort aus weiter.
Typische Anwendungen von Kreiselpumpen sind das Pumpen von Wasser, Abwasser, in der Landwirtschaft, für Erdöl und Petrochemie.
- Merkmale
Spannungsbereich: DC 3 ~ 4,5V
Betriebsstrom: 120 ~ 180mA
Leistung: 0,36 ~ 0,91W
Max. Förderhöhe: 0,35 ~ 0,55M
Max. Durchflussrate: 80 ~ 100 L/H
Dauerbetriebszeit: 100 Stunden
Wasserschutzklasse: IP68
Antriebsart: DC, magnetischer Antrieb
Material: Technischer Kunststoff
Außendurchmesser des Auslasses: 7,8 mm
Innendurchmesser des Auslasses: 6,5 mm
Es handelt sich um eine Tauchpumpe, die auch so verwendet werden sollte. Bei oberirdischem Betrieb kann sie sich so stark erhitzen, dass Überhitzungsgefahr besteht.
Beispiel
1.4 Pumpen (Grundlegendes Projekt)
6. Pflanzenüberwachung (IoT-Projekt)
L298N Modul¶
Dieses L298N Motor-Treiber-Modul ist ein leistungsstarkes Treibermodul zum Ansteuern von Gleichstrom- und Schrittmotoren. Es besteht aus einem L298 Motor-Treiber-IC und einem 78M05 5V-Regler. Das L298N Modul kann bis zu 4 Gleichstrommotoren steuern oder 2 Gleichstrommotoren mit Richtungs- und Geschwindigkeitsregelung.

IN1 & IN2: Eingangspins von Motor A. Dienen zur Steuerung der Drehrichtung von Motor A.
IN3 & IN4: Eingangspins von Motor B. Dienen zur Steuerung der Drehrichtung von Motor B.
ENA: Aktiviert das PWM-Signal für Motor A. Hier wurde es mit einer Jumperkappe mit 5V verbunden.
ENB: Aktiviert das PWM-Signal für Motor B. Hier wurde es mit einer Jumperkappe mit 5V verbunden.
OUT1 & OUT2: Ausgangspins von Motor A.
OUT3 & OUT4: Ausgangspins von Motor B.
12V: 12V Eingang von einer DC-Stromquelle.
5V: Versorgt die Schaltlogik im L298N IC.
GND: Massepin.
Merkmale
Treibermodell: L298N 2A
Treiber-Chip: Doppelte H-Brücke L298N
Motor-Spannungsversorgung (maximal): 46V
Motor-Stromversorgung (maximal): 2A
Logikspannung: 5V
Treiberspannung: 5-35V
Treiberstrom: 2A
Logikstrom: 0-36mA
Maximale Leistung (W): 25W
Stromerfassung für jeden Motor
Kühlkörper für bessere Leistung
LED-Anzeige für eingeschaltetes Gerät
Betriebsprinzip
Das Treibermodul kann zwei Motoren steuern. Die aktivierten Terminals ENA und ENB sind im High-Level aktiv.
Das Arbeitsverhältnis zwischen ENA und IN1, IN2 ist wie folgt:
ENA |
IN1 |
IN2 |
Zustand von Motor A |
---|---|---|---|
0 |
X |
X |
Stop |
1 |
0 |
0 |
Bremse |
1 |
0 |
1 |
Dreht im Uhrzeigersinn |
1 |
1 |
0 |
Dreht gegen den Uhrzeigersinn |
1 |
1 |
1 |
Bremse |
Das Arbeitsverhältnis zwischen ENB und IN3, IN4 ist wie folgt:
ENB |
IN3 |
IN4 |
Zustand von Motor B |
---|---|---|---|
0 |
X |
X |
Stop |
1 |
0 |
0 |
Bremse |
1 |
0 |
1 |
Dreht im Uhrzeigersinn |
1 |
1 |
0 |
Dreht gegen den Uhrzeigersinn |
1 |
1 |
1 |
Bremse |
Über die 5V Aktivierungskappe
Das L298N Motor-Treiber-Modul besteht aus einem L298 Motor-Treiber-IC, 78M05 Spannungsregler, Widerständen, Kondensator, Betriebs-LED und 5V Jumper in einer integrierten Schaltung.

Der 78M05 Spannungsregler wird nur aktiviert, wenn der Jumper gesetzt ist. Wenn die Stromversorgung 12V oder weniger beträgt, wird die interne Schaltung vom Spannungsregler versorgt und der 5V-Pin kann als Ausgangspin verwendet werden, um den Mikrocontroller zu versorgen.
Der Jumper sollte nicht gesetzt werden, wenn die Stromversorgung mehr als 12V beträgt, und eine separate 5V sollte über den 5V-Anschluss gegeben werden, um die interne Schaltung zu versorgen.
Beispiel
1.3 Das Rad drehen (Grundlegendes Projekt)
1. Bewegung (Auto-Projekt)
3. Geschwindigkeit erhöhen (Auto-Projekt)
8. IoT Auto (IoT-Projekt)
3.1 Das Auto testen (Scratch-Projekt)
Controller
Knopf¶

Knöpfe sind eine gängige Komponente zur Steuerung von elektronischen Geräten. Sie werden üblicherweise als Schalter verwendet, um Schaltkreise zu verbinden oder zu unterbrechen. Obwohl es Knöpfe in verschiedenen Größen und Formen gibt, handelt es sich bei dem hier verwendeten um einen 6mm Mini-Knopf, wie auf den folgenden Bildern gezeigt. Pin 1 ist mit Pin 2 und Pin 3 mit Pin 4 verbunden. Sie müssen also nur entweder Pin 1 oder Pin 2 mit Pin 3 oder Pin 4 verbinden.
Das Folgende zeigt den inneren Aufbau eines Knopfes. Das Symbol auf der rechten Seite unten wird normalerweise verwendet, um einen Knopf in Schaltkreisen darzustellen.

Da Pin 1 mit Pin 2 und Pin 3 mit Pin 4 verbunden ist, werden beim Drücken des Knopfes die 4 Pins verbunden, wodurch der Schaltkreis geschlossen wird.

Beispiel
3.1 Tastenwert auslesen (Grundlegendes Projekt)
2.6 Türklingel (Scratch-Projekt)
2.16 SPIEL - Apfel essen (Scratch-Projekt)
2.19 SPIEL - Angeln (Scratch-Projekt)
Reedschalter¶

Der Reedschalter ist ein elektrischer Schalter, der mittels eines angelegten Magnetfeldes funktioniert. Er wurde 1936 von Walter B. Ellwood von den Bell Telephone Laboratories erfunden und am 27. Juni 1940 in den USA unter der Patentnummer 2264746 patentiert.
Das Funktionsprinzip eines Reedschalters ist sehr einfach. Zwei Reed-Kontakte (normalerweise aus Eisen und Nickel gefertigt, zwei Metallen), die an den Endpunkten überlappen, sind in einem Glasröhrchen versiegelt. Die beiden Reeds überlappen und sind durch eine kleine Lücke (nur einige Mikrometer) voneinander getrennt. Das Glasröhrchen ist mit einem hochreinen Inertgas (wie Stickstoff) gefüllt, und einige Reedschalter werden so hergestellt, dass sie im Inneren ein Vakuum aufweisen, um ihre Hochspannungsleistung zu verbessern.
Das Reed fungiert als Magnetflussleiter. Die beiden Reeds sind im Ruhezustand nicht in Kontakt; wenn sie durch ein von einem Permanentmagneten oder einer elektromagnetischen Spule erzeugtes Magnetfeld hindurchgehen, führt das angelegte Magnetfeld dazu, dass die beiden Reeds an ihren Endpunkten unterschiedliche Polaritäten aufweisen. Wenn die magnetische Kraft die Federkraft der Reeds selbst übersteigt, werden die beiden Reeds zusammengezogen, um den Schaltkreis zu leiten. Wenn das Magnetfeld schwächer wird oder verschwindet, werden die Reeds aufgrund ihrer eigenen Elastizität freigegeben und die Kontaktflächen trennen sich, um den Schaltkreis zu öffnen.

Beispiel
3.2 Magnetismus spüren (Grundlegendes Projekt)
7. Strombegrenzendes Tor (IoT-Projekt)
Potentiometer¶

Ein Potentiometer ist ebenfalls ein Widerstandsbauelement mit drei Anschlüssen, dessen Widerstandswert nach einer bestimmten Regelung variiert werden kann.
Potentiometer gibt es in verschiedenen Formen, Größen und Werten, sie haben jedoch alle folgende Merkmale gemeinsam:
Sie haben drei Anschlüsse (oder Verbindungspunkte).
Sie verfügen über einen Drehknopf, eine Schraube oder einen Schieber, um den Widerstand zwischen dem mittleren und einem der äußeren Anschlüsse zu variieren.
Der Widerstand zwischen dem mittleren Anschluss und einem der äußeren Anschlüsse variiert von 0 Ω bis zum maximalen Widerstand des Potentiometers, wenn der Knopf, die Schraube oder der Schieber bewegt wird.
Hier ist das Schaltsymbol des Potentiometers.

Die Funktionen des Potentiometers im Schaltkreis sind:
Als Spannungsteiler dienen:
Ein Potentiometer ist ein kontinuierlich einstellbarer Widerstand. Beim Verstellen der Welle oder des Schiebegriffs des Potentiometers gleitet der bewegliche Kontakt über den Widerstand. Zu diesem Zeitpunkt kann, abhängig von der am Potentiometer angelegten Spannung und dem Winkel, um den sich der bewegliche Arm gedreht hat oder der zurückgelegten Strecke, eine Spannung ausgegeben werden.
Als Rheostat dienen:
Wenn das Potentiometer als Rheostat verwendet wird, verbinden Sie den mittleren Pin und einen der anderen beiden Pins im Schaltkreis. So erhalten Sie einen sanft und kontinuierlich veränderten Widerstandswert innerhalb des Fahrwegs des beweglichen Kontakts.
Als Stromregler dienen:
Wenn das Potentiometer als Stromregler fungiert, muss der Schiebekontaktanschluss als einer der Ausgangsanschlüsse verbunden werden.
Wenn Sie mehr über Potentiometer erfahren möchten, verweisen Sie auf: Potentiometer – Wikipedia
Beispiel
4.1 Den Drehknopf drehen (Grundlegendes Projekt)
2.5 Bewegende Maus (Scratch-Projekt)
2.18 SPIEL - Breakout-Klon (Scratch-Projekt)
Joystick Modul¶

Das Grundkonzept eines Joysticks besteht darin, die Bewegung eines Sticks in elektronische Informationen umzusetzen, die ein Computer verarbeiten kann.
Um dem Computer eine vollständige Bewegungspalette zu übermitteln, muss ein Joystick die Position des Sticks auf zwei Achsen messen - der X-Achse (von links nach rechts) und der Y-Achse (von oben nach unten). Wie in der Grundgeometrie geben die X-Y-Koordinaten die genaue Position des Sticks an.
Um den Standort des Sticks zu bestimmen, überwacht das Joystick-Steuerungssystem einfach die Position jeder Welle. Das herkömmliche analoge Joystick-Design macht dies mit zwei Potentiometern oder variablen Widerständen.
Der Joystick verfügt auch über einen digitalen Eingang, der betätigt wird, wenn der Joystick nach unten gedrückt wird.

Beispiel
4.3 Den Joystick betätigen (Grundlegendes Projekt)
2.15 SPIEL - Sternengekreuzt (Scratch-Projekt)
2.22 SPIEL - Drachen töten (Scratch-Projekt)
IR-Empfänger¶
IR-Empfänger

OUT: Signal-Ausgang
GND:GND
VCC: Stromversorgung, 3.3v~5V
Ein Infrarot-Empfänger ist eine Komponente, die Infrarotsignale empfängt und eigenständig Infrarotstrahlen empfangen sowie Signale ausgeben kann, die mit TTL-Pegel kompatibel sind. Er ist in Größe und Form einem gewöhnlichen Transistor im Plastikgehäuse ähnlich und eignet sich für alle Arten von Infrarot-Fernbedienungen und Infrarot-Übertragungen.
Infrarot, oder kurz IR, ist eine beliebte, kostengünstige und einfach zu verwendende drahtlose Kommunikationstechnologie. Infrarotlicht hat eine etwas längere Wellenlänge als sichtbares Licht und ist daher für das menschliche Auge nicht wahrnehmbar - ideal für die drahtlose Kommunikation. Ein gängiges Modulationsschema für Infrarotkommunikation ist die 38KHz-Modulation.
Verwendet den HS0038B IR-Empfänger-Sensor mit hoher Empfindlichkeit
Kann für Fernbedienungen genutzt werden
Stromversorgung: 5V
Schnittstelle: Digital
Modulationsfrequenz: 38Khz
Pin-Belegung: (1) Ausgang (2) Vcc (3) GND
Größe: 23.5mm x 21.5mm
Fernbedienung

Hierbei handelt es sich um eine schlanke Infrarot-Fernbedienung mit 21 Funktionstasten und einer Übertragungsreichweite von bis zu 8 Metern, die sich ideal für den Einsatz in einem Kinderzimmer eignet.
Größe: 85x39x6mm
Reichweite der Fernbedienung: 8-10m
Batterie: 3V Knopfzellen-Lithium-Mangan-Batterie
Infrarot-Trägerfrequenz: 38KHz
Oberflächenklebematerial: 0.125mm PET
Effektive Lebensdauer: mehr als 20.000 Betätigungen
Beispiel
5.11.2 IR-Empfänger (Grundlegendes Projekt)
9. Fernsteuerung (Auto-Projekt)
10. One-Touch-Start (Auto-Projekt)
Sensor
Fotowiderstand¶

Ein Fotowiderstand oder eine Fotodiode ist ein lichtgesteuerter variabler Widerstand. Der Widerstand eines Fotowiderstands nimmt mit steigender Lichteinstrahlungsintensität ab; mit anderen Worten, er zeigt Foto-Leitfähigkeit.
Ein Fotowiderstand kann in lichtempfindlichen Detektorschaltungen und licht- sowie dunkelaktivierten Schaltkreisen eingesetzt werden und fungiert dabei als ein Widerstandshalbleiter. Im Dunkeln kann ein Fotowiderstand einen Widerstand von mehreren Megaohm (MΩ) haben, während er im Licht einen Widerstand von nur wenigen hundert Ohm haben kann.
Hier ist das elektronische Symbol des Fotowiderstands.

Beispiel
4.2 Licht wahrnehmen (Grundlegendes Projekt)
5. Überwachung des häuslichen Umfelds (IoT-Projekt)
6. Pflanzenüberwachung (IoT-Projekt)
Thermistor¶

Ein Thermistor ist eine Art von Widerstand, dessen Widerstand stark temperaturabhängig ist, mehr als bei Standardwiderständen. Das Wort ist eine Kombination aus den Wörtern „thermal“ und „Resistor“. Thermistoren werden häufig als Einschaltstrombegrenzer, Temperatursensoren (typischerweise vom Typ mit negativem Temperaturkoeffizienten oder NTC), selbstrückstellende Überstromschutzelemente und selbstregulierende Heizelemente (typischerweise vom Typ mit positivem Temperaturkoeffizienten oder PTC) eingesetzt.
Hier ist das elektronische Symbol des Thermistors.

Es gibt zwei grundsätzlich entgegengesetzte Typen von Thermistoren:
Bei NTC-Thermistoren nimmt der Widerstand mit steigender Temperatur ab, meistens aufgrund einer Zunahme von Leitungselektronen, die durch thermische Agitation aus dem Valenzband gehoben werden. Ein NTC wird häufig als Temperatursensor verwendet oder in Reihe zu einer Schaltung als Einschaltstrombegrenzer geschaltet.
Bei PTC-Thermistoren nimmt der Widerstand mit steigender Temperatur zu, meistens aufgrund erhöhter thermischer Gitteranregungen, insbesondere von Verunreinigungen und Unvollkommenheiten. PTC-Thermistoren werden häufig in Reihe zu einer Schaltung installiert und zum Schutz vor Überstrombedingungen als rückstellbare Sicherungen verwendet.
In diesem Kit verwenden wir einen NTC-Typ. Jeder Thermistor hat einen Normalwiderstand. Hier beträgt er 10k Ohm, gemessen bei 25 Grad Celsius.
Hier ist der Zusammenhang zwischen Widerstand und Temperatur:
RT = RN * expB(1/TK – 1/TN)
RT ist der Widerstand des NTC-Thermistors bei der Temperatur TK.
RN ist der Widerstand des NTC-Thermistors bei der Nenntemperatur TN. Hier beträgt der Zahlenwert von RN 10k.
TK ist eine Kelvin-Temperatur und die Einheit ist K. Hier beträgt der Zahlenwert von TK 273,15 + Grad Celsius.
TN ist eine Nenn-Kelvin-Temperatur; die Einheit ist ebenfalls K. Hier beträgt der Zahlenwert von TN 273,15 + 25.
Und B(beta), die Materialkonstante des NTC-Thermistors, wird auch als Wärmeempfindlichkeitsindex bezeichnet mit einem Zahlenwert von 3950.
exp steht für „exponentiell“, und die Basiszahl e ist eine natürliche Zahl und beträgt ungefähr 2,7.
Wandeln Sie diese Formel TK=1/(ln(RT/RN)/B+1/TN) um, um die Kelvin-Temperatur zu erhalten, die minus 273,15 Grad Celsius entspricht.
Dieser Zusammenhang ist eine empirische Formel. Sie ist nur dann genau, wenn die Temperatur und der Widerstand innerhalb des wirksamen Bereichs liegen.
Beispiel
2.7 Niedrigtemperaturalarm (Scratch-Projekt)
6.3 Hochtemperaturalarm (Grundlegendes Projekt)
4.5 Thermometer (Grundlegendes Projekt)
DHT11 Feuchtigkeits- und Temperatursensor¶
Der digitale Temperatur- und Feuchtigkeitssensor DHT11 ist ein kombinierter Sensor, der einen kalibrierten digitalen Ausgang für Temperatur und Feuchtigkeit bietet. Die Technologie einer speziellen digitalen Modulsammlung sowie die Technologie zur Temperatur- und Feuchtigkeitserfassung werden verwendet, um sicherzustellen, dass das Produkt eine hohe Zuverlässigkeit und hervorragende Langzeitstabilität aufweist.
Der Sensor beinhaltet einen resistiven Feuchtigkeitssensor und ein NTC-Temperaturmessgerät und ist mit einem leistungsstarken 8-Bit-Mikrocontroller verbunden.
Es stehen nur drei Pins zur Verfügung: VCC, GND und DATA. Der Kommunikationsprozess beginnt damit, dass die DATA-Leitung Startsignale an den DHT11 sendet. Der DHT11 empfängt diese Signale und sendet ein Antwortsignal zurück. Anschließend empfängt der Host das Antwortsignal und beginnt mit dem Empfang von 40-Bit Feuchtigkeitsdaten (8-Bit Feuchtigkeitswert ganzzahlig + 8-Bit Feuchtigkeitswert dezimal + 8-Bit Temperaturwert ganzzahlig + 8-Bit Temperaturwert dezimal + 8-Bit Prüfsumme).

Merkmale
Messbereich für Feuchtigkeit: 20 - 90%RH
Temperaturmessbereich: 0 - 60℃
Ausgabe digitaler Signale für Temperatur und Feuchtigkeit
Betriebsspannung: DC 5V; PCB-Größe: 2,0 x 2,0 cm
Messgenauigkeit für Feuchtigkeit: ±5%RH
Messgenauigkeit für Temperatur: ±2℃
Beispiel
5.11.3 Temperatur - Luftfeuchtigkeit (Grundlegendes Projekt)
5. Überwachung des häuslichen Umfelds (IoT-Projekt)
6. Pflanzenüberwachung (IoT-Projekt)
Linienverfolgungsmodul¶

S: Normalerweise niedriges Level, hohes Level bei Erkennung einer schwarzen Linie.
V+:Stromversorgung, 3.3v~5V
G: Masse
Dies ist ein 1-Kanal-Linienverfolgungsmodul, das, wie der Name schon sagt, schwarze Linien auf einem weißen Hintergrund oder weiße Linien auf einem schwarzen Hintergrund verfolgt.

Das Modul verwendet einen TCRT5000 Infrarotsensor, der aus einer Infrarot-LED (blau) und einem lichtempfindlichen Triplet (schwarz) besteht.
Die blaue Infrarot-LED sendet bei eingeschaltetem Zustand Infrarotlicht aus, das für das menschliche Auge unsichtbar ist.
Der schwarze Fototransistor, der zum Empfang von Infrarotlicht verwendet wird, hat einen internen Widerstand, dessen Widerstand mit dem empfangenen Infrarotlicht variiert; je mehr Infrarotlicht empfangen wird, desto stärker nimmt sein Widerstand ab und umgekehrt.
Auf dem Modul befindet sich ein LM393-Komparator, der dazu dient, die Spannung des Fototransistors mit der eingestellten Spannung (durch Potentiometer angepasst) zu vergleichen. Ist sie größer als die eingestellte Spannung, beträgt der Ausgang 1; sonst beträgt der Ausgang 0.
Daher, wenn die Infrarot-Senderröhre auf eine schwarze Oberfläche leuchtet, da Schwarz Licht absorbiert, empfängt der lichtempfindliche Transistor weniger Infrarotlicht, sein Widerstand wird erhöhen (Spannungsanstieg). Nach dem LM393-Komparator wird ein hohes Niveau ausgegeben.
Ebenso, wenn er auf eine weiße Oberfläche leuchtet, wird das reflektierte Licht stärker und der Widerstand des lichtempfindlichen Transistors sinkt (Spannungsabfall); daher gibt der Komparator ein niedriges Niveau aus und die Anzeige-LED leuchtet.
Eigenschaften
Verwendung des Infrarot-Emissionssensors TCRT5000
Erfassungsentfernung: 1-8mm, Brennweite von 2.5mm
Komparator-Ausgangssignal ist sauber, mit gutem Wellenform, Antriebskapazität größer als 15mA
Empfindlichkeitseinstellung durch Potentiometer
Betriebsspannung: 3.3V-5V
Digitalausgang: 0 (weiß) und 1 (schwarz)
Verwendet den weitspannungs LM393 Komparator.
Größe: 42mmx10mm
Beispiel
3.4 Linie erkennen (Grundlegendes Projekt)
4. Der Linie folgen (Auto-Projekt)
2.21 SPIEL - Schütze dein Herz (Scratch-Projekt)
Bodenfeuchtigkeitsmodul¶

GND: Masse
VCC:Stromversorgung, 3.3v~5V
AOUT: Gibt den Bodenfeuchtigkeitswert aus, je feuchter der Boden, desto geringer ist sein Wert.
Dieser kapazitive Bodenfeuchtigkeitssensor unterscheidet sich von den meisten auf dem Markt erhältlichen Widerstandssensoren, da er das Prinzip der kapazitiven Induktion zur Erfassung der Bodenfeuchtigkeit verwendet. Er umgeht das Problem, dass Widerstandssensoren sehr korrosionsanfällig sind und verlängert so seine Lebensdauer erheblich.
Er besteht aus korrosionsbeständigen Materialien und hat eine hervorragende Lebensdauer. Stecken Sie es in den Boden um Pflanzen herum und überwachen Sie die Bodenfeuchtigkeitsdaten in Echtzeit. Das Modul verfügt über einen integrierten Spannungsregler, der einen Betrieb in einem Spannungsbereich von 3,3 ~ 5,5 V ermöglicht. Es ist ideal für Mikrocontroller mit niedriger Spannung und 3,3 V und 5 V Versorgung geeignet.
Das Hardwareschema des kapazitiven Bodenfeuchtigkeitssensors ist unten dargestellt.

Es gibt einen Festfrequenzoszillator, der mit einem 555-Timer-IC aufgebaut ist. Die erzeugte Rechteckwelle wird dann wie ein Kondensator an den Sensor geleitet. Für das Rechteckwellensignal hat der Kondensator jedoch eine gewisse Reaktanz oder, um der Argumentation willen, einen Widerstand mit einem rein ohmschen Widerstand (10k Widerstand an Pin 3), um einen Spannungsteiler zu bilden.
Je höher die Bodenfeuchtigkeit, desto höher die Kapazität des Sensors. Infolgedessen hat die Rechteckwelle eine geringere Reaktanz, was die Spannung an der Signalleitung reduziert, und der Wert des analogen Eingangs durch den Mikrocontroller ist kleiner.
Spezifikation
Betriebsspannung: 3,3 ~ 5,5 VDC
Ausgangsspannung: 0 ~ 3,0 VDC
Betriebsstrom: 5mA
Schnittstelle: PH2.0-3P
Abmessungen: 3,86 x 0,905 Zoll (L x B)
Gewicht: 15g
Beispiel
4.4 Bodenfeuchtigkeit messen (Grundlegendes Projekt)
6. Pflanzenüberwachung (IoT-Projekt)
Hindernisvermeidungsmodul¶

VCC: Stromversorgung, 3,3 ~ 5V DC.
GND: Masse
OUT: Signalausgang, normalerweise im hohen Zustand, schaltet auf niedrig, wenn ein Hindernis erkannt wird.
Das IR-Hindernisvermeidungsmodul passt sich stark dem Umgebungslicht an und verfügt über ein Paar Infrarot-Sende- und Empfangsröhren.
Die Sendetube gibt eine Infrarotfrequenz ab. Trifft die Erkennungsrichtung auf ein Hindernis, wird die Infrarotstrahlung von der Empfangsröhre aufgenommen. Nach der Verarbeitung im Komparator-Schaltkreis leuchtet die Anzeige auf und gibt ein niedriges Signal aus.
Die Erkennungsentfernung kann mit einem Potentiometer angepasst werden, wobei der effektive Entfernungsbereich zwischen 2-30 cm liegt.

Beispiel
3.3 Hindernisse erkennen (Grundlegendes Projekt)
5. Spielen mit dem Hindernisvermeidungsmodul (Auto-Projekt)
8. Selbstfahrendes Auto (Auto-Projekt)
7. Strombegrenzendes Tor (IoT-Projekt)
2.13 SPIEL - Schießen (Scratch-Projekt)
2.20 SPIEL - Klicke nicht auf das weiße Feld (Scratch-Projekt)
Ultraschall-Modul¶

Das Ultraschall-Entfernungsmessmodul bietet eine berührungslose Messfunktion von 2 cm bis 400 cm, wobei die Messgenauigkeit bis zu 3 mm betragen kann. Es gewährleistet, dass das Signal innerhalb von 5 m stabil ist, und das Signal wird nach 5 m allmählich abgeschwächt, bis es an der 7 m Position verschwindet.
Das Modul beinhaltet Ultraschallsender, Empfänger und Steuerschaltung. Die grundlegenden Prinzipien sind wie folgt:
Verarbeitung eines High-Level-Signals von mindestens 10us mit einem IO-Flipflop.
Das Modul sendet automatisch acht 40kHz aus und überprüft, ob ein Pulssignal zurückkommt.
Kehrt das Signal zurück und führt durch das hohe Level, beträgt die Dauer des hohen IO-Ausgangs die Zeit von der Aussendung der Ultraschallwelle bis zu ihrer Rückkehr. Hierbei gilt: Testentfernung = (Hohe Zeit x Schallgeschwindigkeit (340 m/s)) / 2.
Das Zeitdiagramm ist unten dargestellt.

Sie müssen lediglich einen kurzen 10us-Impuls für den Trigger-Eingang bereitstellen, um die Entfernungsmessung zu starten, und dann sendet das Modul eine 8-Zyklen-Ultraschallburst mit 40 kHz aus und erhebt sein Echo. Sie können die Entfernung über das Zeitintervall zwischen dem Senden des Trigger-Signals und dem Empfangen des Echo-Signals berechnen.
Formel: us / 58 = Zentimeter oder us / 148 = Inch; oder: Entfernung = hohe Signalzeit * Geschwindigkeit (340M/s) / 2; es wird empfohlen, einen Messzyklus von über 60ms zu verwenden, um Signalüberschneidungen zwischen Trigger-Signal und dem Echo-Signal zu verhindern.
Beispiel
5.8 Benutzerdefinierte Funktion (Grundlegendes Projekt)
7. Folge Deiner Hand (Auto-Projekt)
6. Spiel mit dem Ultraschallmodul (Auto-Projekt)
2.17 SPIEL - Flappy Papagei (Scratch-Projekt)
Einstieg in Arduino¶
Wenn Sie keine Ahnung von Arduino haben: Es gibt einige Begriffe, die ich Ihnen zeigen möchte: Elektronik, Design, Programmierung und sogar Maker. Einige von Ihnen denken vielleicht, dass diese Worte weit von uns entfernt sind, aber in Wirklichkeit sind sie es nicht. Denn Arduino kann uns in die Welt der Programmierung entführen und uns helfen, den Traum, ein Maker zu sein, zu verwirklichen. In dieser Sitzung werden wir lernen:
Was ist Arduino?
Was kann Arduino tun?
Wie erstellt man ein Arduino-Projekt?
Was ist Arduino?¶
Zunächst gebe ich Ihnen eine kurze Einführung in Arduino.
Arduino ist eine bequeme, flexible und benutzerfreundliche Open-Source-Plattform für elektronische Prototypen, einschließlich verschiedener Hardware-Arduino-Boards und der Software Arduino IDE. Es eignet sich nicht nur für Ingenieure für schnelle Prototypen, sondern auch für Künstler, Designer, Hobbyisten und ist fast ein unverzichtbares Werkzeug für moderne Maker.
Arduino ist ein ziemlich großes System. Es verfügt über Software, Hardware und eine sehr große Online-Community von Menschen, die sich noch nie getroffen haben, aber dank eines gemeinsamen Hobbys zusammenarbeiten können. Jeder in der Arduino-Familie nutzt seinen Verstand, baut mit seinen Händen und teilt eine großartige Erfindung nach der anderen. Und Sie können auch ein Teil davon sein.
Was kann Arduino tun?¶
Sie fragen sich vielleicht, was Arduino eigentlich kann. Genug gesagt, Arduino wird all Ihre Probleme lösen.
Technisch gesehen ist Arduino ein programmierbarer Logikcontroller. Es handelt sich um ein Entwicklungsboard, mit dem viele spannende und kreative elektronische Kreationen erstellt werden können: wie ferngesteuerte Autos, Roboterarme, bionische Roboter, Smart Homes usw.
Arduino-Boards sind unkompliziert, einfach und leistungsstark und eignen sich für Schüler, Maker und sogar professionelle Programmierer.
Bis heute entwickeln Elektronikbegeisterte weltweit weiterhin kreative elektronische Kreationen auf Basis von Arduino-Entwicklungsboards.
Wie erstellt man ein Arduino-Projekt¶
Folgen Sie diesen Schritten, um zu lernen, wie Sie Arduino von Grund auf verwenden!
Download und Installation von Arduino IDE 2.0¶
Die Arduino IDE, bekannt als Arduino Integrierte Entwicklungsumgebung, bietet alle erforderliche Softwareunterstützung, um ein Arduino-Projekt abzuschließen. Es handelt sich um eine speziell für Arduino entwickelte Programmiersoftware, die vom Arduino-Team bereitgestellt wird und es uns ermöglicht, Programme zu schreiben und diese auf das Arduino-Board hochzuladen.
Arduino IDE 2.0 ist ein Open-Source-Projekt. Es stellt einen großen Fortschritt gegenüber seinem robusten Vorgänger, Arduino IDE 1.x, dar und bietet eine überarbeitete Benutzeroberfläche, verbesserten Board- & Bibliotheksmanager, Debugger, Autocomplete-Funktion und vieles mehr.
In diesem Tutorial zeigen wir, wie Sie die Arduino IDE 2.0 auf Ihrem Windows-, Mac- oder Linux-Computer herunterladen und installieren können.
Voraussetzungen¶
Windows - Win 10 und neuer, 64 Bit
Linux - 64 Bit
Mac OS X - Version 10.14: „Mojave“ oder neuer, 64 Bit
Download der Arduino IDE 2.0¶
Besuchen Sie Arduino IDE 2.0.0 Page.
Laden Sie die IDE für Ihre Betriebssystemversion herunter.
Installation¶
Windows¶
Doppelklicken Sie auf die Datei
arduino-ide_xxxx.exe
, um die heruntergeladene Datei auszuführen.Lesen Sie die Lizenzvereinbarung und stimmen Sie dieser zu.
Wählen Sie die Installationsoptionen.
Wählen Sie den Installationsort. Es wird empfohlen, die Software auf einem Laufwerk zu installieren, das nicht das Systemlaufwerk ist.
Abschließen.
macOS¶
Doppelklicken Sie auf die heruntergeladene Datei arduino_ide_xxxx.dmg
und folgen Sie den Anweisungen, um die Arduino IDE.app in den Applications-Ordner zu kopieren. Nach einigen Sekunden sehen Sie, dass die Arduino IDE erfolgreich installiert wurde.

Linux¶
Für das Tutorial zur Installation der Arduino IDE 2.0 auf einem Linux-System, verweisen Sie bitte auf: https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing#linux
Öffnen der IDE¶
Beim ersten Öffnen der Arduino IDE 2.0 werden automatisch die Arduino AVR Boards, eingebaute Bibliotheken und andere erforderliche Dateien installiert.
Zusätzlich können Ihre Firewall oder Ihr Sicherheitscenter einige Male fragen, ob Sie einen Gerätetreiber installieren möchten. Bitte installieren Sie alle.
Jetzt ist Ihre Arduino IDE einsatzbereit!
Bemerkung
Falls einige Installationen aufgrund von Netzwerkproblemen oder aus anderen Gründen nicht funktioniert haben, können Sie die Arduino IDE erneut öffnen, und sie wird den Rest der Installation abschließen. Das Ausgabefenster wird nach Abschluss aller Installationen nicht automatisch geöffnet, es sei denn, Sie klicken auf Überprüfen oder Hochladen.
Einführung in die Arduino IDE¶

Überprüfen (Verify): Kompilieren Sie Ihren Code. Bei jeglichen Syntaxproblemen werden Fehlermeldungen angezeigt.
Hochladen (Upload): Laden Sie den Code auf Ihr Board. Wenn Sie den Button klicken, blinken die RX- und TX-LEDs auf dem Board schnell und hören erst auf, wenn das Hochladen abgeschlossen ist.
Debuggen (Debug): Für die Fehlerüberprüfung Zeile für Zeile.
Board auswählen (Select Board): Schnelleinstellung für Board und Port.
Serieller Plotter (Serial Plotter): Überprüfen Sie die Änderung des Auslesewerts.
Serieller Monitor (Serial Monitor): Klicken Sie auf den Button und ein Fenster erscheint. Es empfängt die Daten, die von Ihrem Steuerungsboard gesendet werden. Sehr nützlich für das Debuggen.
Datei (File): Klicken Sie auf das Menü und eine Dropdown-Liste erscheint, einschließlich Dateierstellung, Öffnen, Speichern, Schließen, Konfiguration einiger Parameter usw.
Bearbeiten (Edit): Klicken Sie auf das Menü. In der Dropdown-Liste gibt es Bearbeitungsoperationen wie Ausschneiden (Cut), Kopieren (Copy), Einfügen (Paste), Suchen (Find) usw. mit den entsprechenden Tastenkombinationen.
Skizze (Sketch): Beinhaltet Operationen wie Überprüfen (Verify), Hochladen (Upload), Dateien hinzufügen (Add) usw. Eine besonders wichtige Funktion ist Bibliothek einfügen (Include Library) – hier können Sie Bibliotheken hinzufügen.
Werkzeug (Tool): Beinhaltet einige Werkzeuge – am häufigsten verwendet werden das Board (das von Ihnen verwendete Board) und der Port (der Port, an dem sich Ihr Board befindet). Jedes Mal, wenn Sie den Code hochladen möchten, müssen Sie diese auswählen oder überprüfen.
Hilfe (Help): Wenn Sie Anfänger sind, können Sie die Optionen im Menü überprüfen und die benötigte Hilfe erhalten, einschließlich Bedienung in der IDE, Einführungsinformationen, Fehlerbehebung, Codeerklärung usw.
Ausgabeleiste (Output Bar): Wechseln Sie hier den Ausgabe-Tab.
Ausgabefenster (Output Window): Informationen ausgeben.
Board und Port: Hier können Sie das ausgewählte Board und den Port für das Hochladen des Codes vorab ansehen. Sie können sie erneut über Werkzeug (Tools) -> Board / Port auswählen, falls etwas nicht korrekt ist.
Der Bearbeitungsbereich der IDE. Hier können Sie Code schreiben.
Skizzenbuch (Sketchbook): Zum Verwalten von Skizzendateien.
Board-Manager (Board Manager): Zum Verwalten von Board-Treibern.
Library Manager (Library Manager): Zum Verwalten Ihrer Bibliotheksdateien.
Debuggen (Debug): Hilft beim Debuggen des Codes.
Suchen (Search): Suchen Sie die Codes aus Ihren Skizzen.
Wie erstellt, öffnet oder speichert man die Skizze?¶
Wenn Sie die Arduino IDE zum ersten Mal öffnen oder eine neue Skizze erstellen, sehen Sie eine Seite wie diese, auf der die Arduino IDE eine neue Datei für Sie erstellt, die als „Skizze“ bezeichnet wird.
Diese Skizzendateien haben einen regelmäßigen temporären Namen, aus dem Sie das Erstellungsdatum der Datei ableiten können.
sketch_oct14a.ino
bedeutet die erste Skizze vom 14. Oktober,.ino
ist das Dateiformat dieser Skizze.Jetzt versuchen wir, eine neue Skizze zu erstellen. Kopieren Sie den folgenden Code in die Arduino IDE, um den ursprünglichen Code zu ersetzen.
void setup() { // Geben Sie hier Ihren Setup-Code ein, der einmal ausgeführt wird: pinMode(13,OUTPUT); } void loop() { // Geben Sie hier Ihren Hauptcode ein, der wiederholt ausgeführt wird: digitalWrite(13,HIGH); delay(500); digitalWrite(13,LOW); delay(500); }
Drücken Sie
Ctrl+S
oder klicken Sie auf Datei (File) -> Speichern (Save). Die Skizze wird standardmäßig unterC:\Users\{Ihr_Benutzername}\Dokumente\Arduino
gespeichert. Sie können sie umbenennen oder einen neuen Pfad zum Speichern auswählen.Nachdem Sie erfolgreich gespeichert haben, werden Sie feststellen, dass der Name in der Arduino IDE aktualisiert wurde.
Bitte fahren Sie mit dem nächsten Abschnitt fort, um zu lernen, wie Sie diese erstellte Skizze auf Ihr Arduino-Board hochladen.
Wie lädt man die Skizze auf das Board hoch?¶
In diesem Abschnitt erfahren Sie, wie Sie die zuvor erstellte Skizze auf das Arduino-Board hochladen und einige Überlegungen dazu kennen lernen.
1. Board und Port auswählen
Arduino-Entwicklungsboards werden in der Regel mit einem USB-Kabel geliefert. Sie können es verwenden, um das Board mit Ihrem Computer zu verbinden.
Wählen Sie das richtige Board und den Port in der Arduino IDE aus. Normalerweise werden Arduino-Boards automatisch vom Computer erkannt und einem Port zugewiesen, den Sie hier auswählen können.
Wenn Ihr Board bereits angeschlossen ist, aber nicht erkannt wird, überprüfen Sie, ob das INSTALLED-Logo im Abschnitt Arduino AVR Boards des Boards-Manager erscheint. Wenn nicht, scrollen Sie bitte etwas nach unten und klicken auf INSTALL.
Ein erneutes Öffnen der Arduino IDE und das erneute Anstecken des Arduino-Boards beheben die meisten Probleme. Sie können auch auf Tools -> Board oder Port klicken, um sie auszuwählen.
2. Überprüfen der Skizze
Nachdem Sie auf die Überprüfen-Schaltfläche geklickt haben, wird die Skizze kompiliert, um festzustellen, ob Fehler vorliegen.
Sie können es verwenden, um Fehler zu finden, wenn Sie einige Zeichen löschen oder versehentlich einige Buchstaben eingeben. In der Nachrichtenleiste können Sie sehen, wo und welche Art von Fehlern aufgetreten sind.
Wenn keine Fehler vorliegen, sehen Sie eine Nachricht wie die unten stehende.
3. Skizze hochladen
Nach Abschluss der oben genannten Schritte klicken Sie auf die Upload-Schaltfläche, um diese Skizze auf das Board hochzuladen.
Wenn der Vorgang erfolgreich war, sehen Sie den folgenden Hinweis.

Gleichzeitig blinkt die LED auf dem Board.

Das Arduino-Board führt die Skizze automatisch aus, sobald nach dem Hochladen der Skizze Strom angelegt wird. Das laufende Programm kann durch Hochladen einer neuen Skizze überschrieben werden.
Struktur eines Arduino-Programms¶
Werfen wir einen Blick auf die neue Skizze. Obwohl sie nur wenige Codezeilen enthält, handelt es sich tatsächlich um eine „leere“ Skizze. Das Hochladen dieser Skizze auf das Entwicklungsboard wird keine Aktion auslösen.
void setup() {
// Fügen Sie Ihren Setup-Code hier ein, der einmal ausgeführt wird:
}
void loop() {
// Fügen Sie Ihren Hauptcode hier ein, der wiederholt ausgeführt wird:
}
Wenn wir setup()
und loop()
entfernen und die Skizze zu einer wirklichen leeren
Datei machen, werden Sie feststellen, dass sie die Überprüfung nicht besteht.
Sie sind das Äquivalent zum menschlichen Skelett und unverzichtbar.
Während des Skizzierens wird setup()
zuerst ausgeführt und der Code darin (innerhalb von {}
) wird nach dem Einschalten oder Zurücksetzen des Boards einmal ausgeführt.
loop()
dient zum Schreiben der Hauptfunktion, und der darin enthaltene Code wird in einer Schleife nach der Ausführung von setup()
wiederholt.
Um setup() und loop() besser zu verstehen, betrachten wir vier Skizzen. Ihr Ziel ist es, die integrierte LED des Arduino blinken zu lassen. Bitte führen Sie jedes Experiment nacheinander aus und notieren Sie die spezifischen Effekte.
Skizze 1: Lassen Sie die integrierte LED kontinuierlich blinken.
void setup() {
// Fügen Sie Ihren Setup-Code hier ein, der einmal ausgeführt wird:
pinMode(13,OUTPUT);
}
void loop() {
// Fügen Sie Ihren Hauptcode hier ein, der wiederholt ausgeführt wird:
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
Skizze 2: Lassen Sie die integrierte LED nur einmal blinken.
void setup() {
// Fügen Sie Ihren Setup-Code hier ein, der einmal ausgeführt wird:
pinMode(13,OUTPUT);
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
void loop() {
// Fügen Sie Ihren Hauptcode hier ein, der wiederholt ausgeführt wird:
}
Skizze 3: Lassen Sie die integrierte LED einmal langsam und dann schnell blinken.
void setup() {
// Fügen Sie Ihren Setup-Code hier ein, der einmal ausgeführt wird:
pinMode(13,OUTPUT);
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
}
void loop() {
// Fügen Sie Ihren Hauptcode hier ein, der wiederholt ausgeführt wird:
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
delay(200);
}
Skizze 4: Meldet einen Fehler.
void setup() {
// Fügen Sie Ihren Setup-Code hier ein, der einmal ausgeführt wird:
pinMode(13,OUTPUT);
}
digitalWrite(13,HIGH);
delay(1000);
digitalWrite(13,LOW);
delay(1000);
void loop() {
// Fügen Sie Ihren Hauptcode hier ein, der wiederholt ausgeführt wird:
}
Mit Hilfe dieser Skizzen können wir mehrere Merkmale von setup-loop
zusammenfassen.
loop()
wird wiederholt ausgeführt, nachdem das Board eingeschaltet wurde.setup()
wird nur einmal ausgeführt, nachdem das Board eingeschaltet wurde.Nach dem Einschalten des Boards wird zuerst
setup()
und dannloop()
ausgeführt.Der Code muss innerhalb des
{}
-Bereichs vonsetup()
oderloop()
geschrieben werden, außerhalb des Rahmens tritt ein Fehler auf.
Bemerkung
Anweisungen wie digitalWrite(13,HIGH)
dienen zur Steuerung der integrierten LED, und ihre Verwendung wird in späteren Kapiteln ausführlich besprochen.
Skizze Schreibregel¶
Wenn Sie einen Freund bitten, das Licht für Sie einzuschalten, können Sie sagen: „Schalte das Licht ein.“, oder „Licht an, Kumpel.“, Sie können jeden Tonfall verwenden, den Sie möchten.
Wenn Sie jedoch möchten, dass das Arduino-Board etwas für Sie tut, müssen Sie die Arduino-Programmiersprache befolgen, um die Befehle einzugeben.
In diesem Kapitel werden die Grundregeln der Arduino-Sprache vorgestellt. Dies wird Ihnen helfen zu verstehen, wie man natürliche Sprache in Code umsetzt.
Natürlich ist dies ein Prozess, mit dem man sich erst mit der Zeit vertraut macht und der für Anfänger am fehleranfälligsten ist. Wenn Sie also oft Fehler machen, ist das in Ordnung. Versuchen Sie es einfach noch ein paar Mal.
Semikolon ;
¶
Genauso wie Sie in einem Brief am Ende eines Satzes einen Punkt setzen, verlangt die Arduino-Sprache, dass Sie ;
verwenden, um dem Board das Ende des Befehls mitzuteilen.
Betrachten wir das bekannte Beispiel „Onboard-LED blinkt“. Eine korrekte Skizze sollte so aussehen:
Beispiel:
void setup() {
// Geben Sie hier Ihren Setup-Code ein, der einmal ausgeführt wird:
pinMode(13,OUTPUT);
}
void loop() {
// Geben Sie hier Ihren Hauptcode ein, der wiederholt ausgeführt wird:
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
Betrachten wir als Nächstes die folgenden beiden Skizzen und raten, ob sie von Arduino korrekt erkannt werden können, bevor wir sie ausführen.
Skizze A:
void setup() {
// Geben Sie hier Ihren Setup-Code ein, der einmal ausgeführt wird:
pinMode(13,OUTPUT);
}
void loop() {
// Geben Sie hier Ihren Hauptcode ein, der wiederholt ausgeführt wird:
digitalWrite(13,HIGH)
delay(500)
digitalWrite(13,LOW)
delay(500)
}
Skizze B:
void setup() {
// Geben Sie hier Ihren Setup-Code ein, der einmal ausgeführt wird:
pinMode(13,OUTPUT);
}
void loop() {
// Geben Sie hier Ihren Hauptcode ein, der wiederholt ausgeführt wird:
digitalWrite(13,
HIGH); delay
(500
);
digitalWrite(13,
LOW);
delay(500)
;
}
Das Ergebnis ist, dass Skizze A einen Fehler meldet und Skizze B läuft.
Die Fehler in Skizze A fehlen
;
und obwohl es normal aussieht, kann es Arduino nicht lesen.Skizze B sieht zwar für den Menschen merkwürdig aus, jedoch sind Einrückungen, Zeilenumbrüche und Leerzeichen in Aussagen Dinge, die in Arduino-Programmen nicht existieren. Daher sieht es für den Arduino-Compiler genaus so aus wie im Beispiel.
Bitte schreiben Sie Ihren Code jedoch nicht wie Skizze B, denn normalerweise sind es Menschen, die den Code schreiben und ansehen, also bringen Sie sich nicht selbst in Schwierigkeiten.
Geschweifte Klammern {}
¶
{}
sind die Hauptkomponenten der Arduino-Programmiersprache und sie müssen paarweise auftreten.
Eine bessere Programmierkonvention ist es, eine Struktur, die geschweifte Klammern benötigt, einzufügen, indem man direkt nach dem Tippen der linken geschweiften Klammer die rechte geschweifte Klammer eintippt und dann den Cursor zwischen die geschweiften Klammern bewegt, um die Anweisung einzufügen.
Kommentar //
¶
Ein Kommentar ist der Teil der Skizze, den der Compiler ignoriert. Sie werden normalerweise verwendet, um anderen zu erklären, wie das Programm funktioniert.
Wenn wir in einer Codezeile zwei benachbarte Schrägstriche schreiben, wird der Compiler alles bis zum Ende der Zeile ignorieren.
Erstellen wir eine neue Skizze, wird sie mit zwei Kommentaren geliefert. Wenn wir diese beiden Kommentare entfernen, wird die Skizze in keiner Weise beeinflusst.
void setup() {
// Geben Sie hier Ihren Setup-Code ein, der einmal ausgeführt wird:
}
void loop() {
// Geben Sie hier Ihren Hauptcode ein, der wiederholt ausgeführt wird:
}
Kommentare sind in der Programmierung sehr nützlich und einige häufige Anwendungen sind unten aufgeführt.
Verwendung A: Erklären Sie sich selbst oder anderen, was dieser Abschnitt des Codes macht.
void setup() {
pinMode(13,OUTPUT); // Pin 13 auf Ausgangsmodus setzen, er steuert die Onboard-LED
}
void loop() {
digitalWrite(13,HIGH); // Aktivieren der Onboard-LED durch Setzen von Pin 13 auf HIGH
delay(500); // Status quo für 500 ms
digitalWrite(13,LOW); // Ausschalten der Onboard-LED
delay(500);// Status quo für 500 ms
}
Verwendung B: Temporäres Deaktivieren einiger Anweisungen (ohne sie zu löschen) und erneutes Kommentieren, wenn sie gebraucht werden, so dass sie nicht neu geschrieben werden müssen. Dies ist sehr nützlich, wenn man Code debuggt und versucht, Programmfehler zu lokalisieren.
void setup() {
pinMode(13,OUTPUT);
// digitalWrite(13,HIGH);
// delay(1000);
// digitalWrite(13,LOW);
// delay(1000);
}
void loop() {
digitalWrite(13,HIGH);
delay(200);
digitalWrite(13,LOW);
delay(200);
}
Bemerkung
Verwenden Sie die Tastenkombination Ctrl+/
, um Ihren Code schnell zu kommentieren oder den Kommentar zu entfernen.
Kommentar /**/
¶
Gleich wie //
für Kommentare. Diese Art von Kommentar kann mehr als eine Zeile lang sein. Sobald der Compiler /*
liest, ignoriert er alles, was danach kommt, bis er auf */
stößt.
Beispiel 1:
/* Blinken */
void setup() {
pinMode(13,OUTPUT);
}
void loop() {
/*
Der folgende Code lässt die integrierte LED blinken.
Sie können die Zahl in delay() ändern, um die Blinkfrequenz zu ändern.
*/
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
#define
¶
Dies ist ein nützliches C++ Werkzeug.
#define Bezeichner Token-Zeichenfolge
Beim Lesen ersetzt der Compiler automatisch Bezeichner
durch Token-Zeichenfolge
, was normalerweise für Konstantendefinitionen verwendet wird.
Als Beispiel hier ein Sketch, der define verwendet, was die Lesbarkeit des Codes verbessert.
#define BOARD_LED 13
#define VERZÖGERUNGSZEIT 500
void setup() {
pinMode(BOARD_LED,OUTPUT);
}
void loop() {
digitalWrite(BOARD_LED,HIGH);
delay(VERZÖGERUNGSZEIT);
digitalWrite(BOARD_LED,LOW);
delay(VERZÖGERUNGSZEIT);
}
Für den Compiler sieht es tatsächlich so aus:
void setup() {
pinMode(13,OUTPUT);
}
void loop() {
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
Wir können sehen, dass der Bezeichner
ersetzt wurde und im Programm nicht existiert.
Deshalb gibt es einige Vorsichtsmaßnahmen bei der Verwendung.
Eine
Token-Zeichenfolge
kann nur manuell geändert und nicht durch Arithmetik im Programm in andere Werte umgewandelt werden.Vermeiden Sie die Verwendung von Symbolen wie
;
. Zum Beispiel:
#define BOARD_LED 13;
void setup() {
pinMode(BOARD_LED,OUTPUT);
}
void loop() {
digitalWrite(BOARD_LED,HIGH);
}
Der Compiler wird es wie folgt erkennen, was als Fehler gemeldet wird:
void setup() {
pinMode(13;,OUTPUT);
}
void loop() {
digitalWrite(13;,HIGH);
}
Bemerkung
Eine Benennungskonvention für #define
besteht darin, den Bezeichner
zu groß zu schreiben, um Verwirrung mit Variablen zu vermeiden.
Variable¶
Die Variable ist eines der mächtigsten und wichtigsten Werkzeuge in einem Programm. Sie hilft uns, Daten in unseren Programmen zu speichern und abzurufen.
Im folgenden Skizzenbeispiel werden Variablen verwendet. Es speichert die Pin-Nummern der an Bord befindlichen LED in der Variable ledPin
und eine Zahl „500“ in der Variable delayTime
.
int ledPin = 13;
int delayTime = 500;
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
digitalWrite(ledPin,HIGH);
delay(delayTime);
digitalWrite(ledPin,LOW);
delay(delayTime);
}
Warte mal, ist das nicht das Gleiche, was #define
tut? Die Antwort ist NEIN.
Die Rolle von
#define
besteht lediglich darin, Text einfach und direkt zu ersetzen; der Compiler betrachtet es nicht als Teil des Programms.Eine
Variable
hingegen existiert innerhalb des Programms und wird verwendet, um Werte zu speichern und abzurufen. Eine Variable kann ihren Wert auch innerhalb des Programms ändern, was ein Define nicht kann.
Die folgende Skizze addiert selbst zur Variable und lässt die an Bord befindliche LED nach jedem Blinken länger blinken.
int ledPin = 13;
int delayTime = 500;
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
digitalWrite(ledPin,HIGH);
delay(delayTime);
digitalWrite(ledPin,LOW);
delay(delayTime);
delayTime = delayTime+200; //Bei jeder Ausführung wird der Wert um 200 erhöht
}
Eine Variable deklarieren¶
Eine Variable zu deklarieren bedeutet, eine Variable zu erstellen.
Um eine Variable zu deklarieren, benötigen Sie zwei Dinge: den Datentyp und den Variablennamen. Der Datentyp muss durch ein Leerzeichen von der Variable getrennt sein, und die Variablendeklaration muss mit einem ;
beendet werden.
Betrachten wir diese Variable als Beispiel.
int delayTime;
Datentyp
Hier ist int
ein Datentyp, der als Integer-Typ bezeichnet wird und verwendet werden kann, um Ganzzahlen von -32768 bis 32766 zu speichern. Es kann auch nicht verwendet werden, um Dezimalzahlen zu speichern.
Variablen können neben Ganzzahlen auch andere Arten von Daten speichern. Die Arduino-Sprache (die, wie wir uns erinnern, C++ ist) hat eingebauten Support für einige von ihnen (hier sind nur die am häufigsten verwendeten und nützlichsten aufgeführt):
float
: Speichert eine Dezimalzahl, zum Beispiel 3,1415926.byte
: Kann Zahlen von 0 bis 255 speichern.boolean
: Speichert nur zwei mögliche Werte,True
oderFalse
, obwohl es einen Byte im Speicher belegt.char
: Speichert eine Zahl von -127 bis 127. Da es alschar
markiert ist, wird der Compiler versuchen, es einem Zeichen aus dem ASCII table of characters zuzuordnen.string
: Kann eine Zeichenkette speichern, z.B.Halloween
.
Variablenname
Sie können der Variable einen beliebigen Namen geben, wie i
, apple
, Bruce
, R2D2
, Sectumsempra
, aber es gibt einige grundlegende Regeln zu beachten.
Beschreiben Sie, wofür es verwendet wird. Hier habe ich die Variable delayTime genannt, damit man leicht verstehen kann, was sie tut. Es wäre in Ordnung, wenn ich die Variable
barryAllen
nenne, aber es verwirrt die Person, die den Code anschaut.Verwenden Sie eine gebräuchliche Schreibweise. Sie können CamelCase verwenden, wie ich es getan habe, mit dem anfänglichen T in
delayTime
, damit man leicht sehen kann, dass die Variable aus zwei Wörtern besteht. Sie können auch UnderScoreCase verwenden, um die Variable alsdelay_time
zu schreiben. Es hat keinen Einfluss auf das Laufen des Programms, aber es würde dem Programmierer helfen, den Code zu lesen, wenn Sie die bevorzugte Schreibweise verwenden.Verwenden Sie keine Schlüsselwörter. Ähnlich wie beim Tippen von „int“ färbt die Arduino IDE es ein, um Sie daran zu erinnern, dass es ein Wort mit einem besonderen Zweck ist und nicht als Variablenname verwendet werden kann. Ändern Sie den Namen der Variable, wenn sie eingefärbt ist.
Spezialsymbole sind nicht erlaubt. Zum Beispiel: Leerzeichen, #, $, /, +, %, usw. Die Kombination aus englischen Buchstaben (Groß-/Kleinschreibung beachten), Unterstrichen und Zahlen (aber Zahlen dürfen nicht als erstes Zeichen eines Variablennamens verwendet werden) ist reichhaltig genug.
Einen Wert einer Variable zuweisen
Nachdem wir die Variable deklariert haben, ist es an der Zeit, die Daten zu speichern. Wir verwenden den Zuweisungsoperator (d.h. =
), um den Wert in die Variable zu setzen.
Wir können der Variable einen Wert zuweisen, sobald wir sie deklarieren.
int delayTime = 500;
Es ist auch möglich, ihr zu einem späteren Zeitpunkt einen neuen Wert zuzuweisen.
int delayTime; // kein Wert
delayTime = 500; // Wert ist 500
delayTime = delayTime +200; // Wert ist 700
Wie man den Stromkreis aufbaut¶
Viele der Dinge, die Sie täglich verwenden, werden mit Strom betrieben, wie die Lichter in Ihrem Haus oder der Computer, auf dem Sie gerade lesen.
Um Strom zu nutzen, müssen Sie einen elektrischen Stromkreis aufbauen. Grundsätzlich ist ein Stromkreis ein Pfad, durch den Strom fließt, oder ein elektronischer Stromkreis, und besteht aus elektrischen Geräten und Bauteilen, die auf eine bestimmte Weise miteinander verbunden sind, wie Widerstände, Kondensatoren, Stromquellen und Schalter.

Ein Stromkreis ist ein geschlossener Pfad, in dem Elektronen sich bewegen, um einen elektrischen Strom zu erzeugen. Damit der Strom fließt, muss ein leitender Pfad zwischen dem positiven Anschluss der Stromquelle und dem negativen Anschluss bestehen. Dies wird als geschlossener Stromkreis bezeichnet (wenn er unterbrochen ist, spricht man von einem offenen Stromkreis).
Das Arduino Board verfügt über einige Stromausgangspins (positiv) und einige Erdungspins (negativ). Diese Pins können als positive und negative Seite der Stromversorgung verwendet werden, indem Sie die Stromquelle in das Board stecken.

Mit Strom können Sie Werke mit Licht, Ton und Bewegung erschaffen. Sie können eine LED zum Leuchten bringen, indem Sie den langen Pin an den positiven Anschluss und den kurzen Pin an den negativen Anschluss anschließen. Die LED wird sehr schnell kaputtgehen, wenn Sie dies tun, also müssen Sie einen 220* Widerstand in den Stromkreis einfügen, um ihn zu schützen.
Der von ihnen gebildete Stromkreis ist unten dargestellt.

Vielleicht fragen Sie sich jetzt: Wie baue ich diesen Stromkreis auf? Halte ich die Drähte mit der Hand, oder klebe ich die Pins und Drähte fest?
In dieser Situation werden Lötfreie Steckplatinen Ihre besten Verbündeten sein.
Hallo, Steckplatine!¶
Eine Steckplatine ist eine rechteckige Kunststoffplatte mit vielen kleinen Löchern. Diese Löcher ermöglichen es uns, elektronische Bauteile einfach einzufügen und elektronische Schaltkreise aufzubauen. Steckplatinen fixieren elektronische Bauteile nicht dauerhaft, so dass wir einen Schaltkreis bei Fehlern einfach reparieren und von vorne beginnen können.
Bemerkung
Für die Verwendung von Steckplatinen sind keine speziellen Werkzeuge erforderlich. Viele elektronische Bauteile sind jedoch sehr klein, und eine Pinzette kann uns helfen, kleinere Teile besser aufzunehmen.
Im Internet finden wir viele Informationen über Steckplatinen.
Hier sind einige Dinge, die Sie über Steckplatinen wissen sollten.
Jede halbe Reihengruppe (wie Spalte A-E in Reihe 1 oder Spalte F-J in Reihe 3) ist verbunden. Wenn also ein elektrisches Signal von A1 einfließt, kann es von B1, C1, D1, E1, aber nicht von F1 oder A2 herausfließen.
In den meisten Fällen werden beide Seiten der Steckplatine als Stromschienen verwendet, und die Löcher in jeder Spalte (etwa 50 Löcher) sind miteinander verbunden. Als Faustregel werden positive Stromquellen an die Löcher in der Nähe des roten Drahts angeschlossen, und negative Stromquellen an die Löcher in der Nähe des blauen Drahts.
In einem Schaltkreis fließt der Strom von der positiven zur negativen Polklemme, nachdem er durch die Last geflossen ist. In diesem Fall kann ein Kurzschluss auftreten.
Lassen Sie uns die Richtung des Stroms verfolgen, um den Schaltkreis aufzubauen!

In diesem Schaltkreis verwenden wir den 5V-Pin des Boards, um die LED mit Strom zu versorgen. Verwenden Sie ein männlich-zu-männlich (M2M) Verbindungskabel, um es mit der roten Stromschiene zu verbinden.
Um die LED zu schützen, muss der Strom durch einen 220-Ohm-Widerstand fließen. Verbinden Sie ein Ende (beliebiges Ende) des Widerstands mit der roten Stromschiene und das andere Ende mit der freien Reihe der Steckplatine.
Bemerkung
Der Farbring des 220-Ohm-Widerstands ist rot, rot, schwarz, schwarz und braun.
Wenn Sie die LED aufheben, werden Sie sehen, dass einer ihrer Anschlüsse länger ist als der andere. Verbinden Sie den längeren Anschluss mit derselben Reihe wie der Widerstand und den kürzeren Anschluss mit der anderen Reihe.
Bemerkung
Der längere Anschluss ist die Anode, die die positive Seite des Stromkreises repräsentiert; der kürzere Anschluss ist die Kathode, die die negative Seite darstellt.
Die Anode muss über einen Widerstand mit dem GPIO-Pin verbunden werden; die Kathode muss mit dem GND-Pin verbunden werden.
Verwenden Sie ein männlich-zu-männlich (M2M) Verbindungskabel, um den kurzen LED-Pin mit der negativen Stromschiene der Steckplatine zu verbinden.
Verbinden Sie den GND-Pin des Boards mit der negativen Stromschiene mithilfe eines Jumpers.
Vorsicht vor Kurzschlüssen¶
Kurzschlüsse können auftreten, wenn zwei Komponenten, die nicht verbunden sein sollten, „versehentlich“ verbunden werden. Dieses Kit enthält Widerstände, Transistoren, Kondensatoren, LEDs usw., die lange Metallpins haben, die aneinander stoßen und einen Kurzschluss verursachen können. Einige Schaltungen funktionieren einfach nicht richtig, wenn ein Kurzschluss auftritt. Gelegentlich kann ein Kurzschluss Bauteile dauerhaft beschädigen, insbesondere zwischen der Stromquelle und der Erdungsschiene, wodurch der Schaltkreis sehr heiß wird, das Plastik auf der Steckplatine schmilzt und sogar die Bauteile verbrennt!
Stellen Sie daher immer sicher, dass die Pins aller Elektronikbauteile auf der Steckplatine sich nicht berühren.
Richtung des Schaltkreises¶
Schaltkreise haben eine Orientierung und diese spielt bei bestimmten elektronischen Komponenten eine bedeutende Rolle. Es gibt Bauteile mit Polarität, was bedeutet, dass sie basierend auf ihren positiven und negativen Polen korrekt verbunden werden müssen. Schaltkreise mit falscher Orientierung funktionieren nicht ordnungsgemäß.

Wenn Sie die LED in diesem einfachen Schaltkreis, den wir zuvor gebaut haben, umkehren, werden Sie feststellen, dass sie nicht mehr funktioniert.
Im Gegensatz dazu haben manche Bauteile keine Richtung, wie zum Beispiel die Widerstände in diesem Schaltkreis. Daher können Sie diese umkehren, ohne die normale Funktion der LEDs zu beeinflussen.
Die meisten Komponenten und Module mit Bezeichnungen wie „+“, „-“, „GND“, „VCC“ oder mit Pins unterschiedlicher Länge müssen auf eine bestimmte Weise im Schaltkreis verbunden werden.
Schutz des Schaltkreises¶
Strom ist die Geschwindigkeit, mit der Elektronen an einem Punkt in einem geschlossenen elektrischen Schaltkreis vorbeifließen. Im Grundlegendsten ist Strom = Fluss. Ein Ampere (kurz: Amp) ist die internationale Einheit zur Messung von Strom. Es drückt die Menge an Elektronen (manchmal als „elektrische Ladung“ bezeichnet) aus, die über einen Zeitraum an einem Punkt im Schaltkreis vorbeifließen.
Die treibende Kraft (Spannung) hinter dem Stromfluss wird als Spannung bezeichnet und in Volt (V) gemessen.
Widerstand (R) ist die Eigenschaft des Materials, die den Stromfluss einschränkt und wird in Ohm (Ω) gemessen.
Laut Ohmschem Gesetz (solange die Temperatur konstant bleibt), sind Strom, Spannung und Widerstand proportional. Der Strom eines Schaltkreises ist proportional zu seiner Spannung und umgekehrt proportional zu seinem Widerstand.
Daher ist Strom (I) = Spannung (V) / Widerstand (R).
Zum Ohmschen Gesetz können wir ein einfaches Experiment durchführen.

Wenn Sie das Kabel, das 5V mit 3,3V verbindet, wechseln, wird die LED dunkler. Wenn Sie den Widerstand von 220 Ohm auf 1000 Ohm ändern (Farbring: braun, schwarz, schwarz, braun und braun), werden Sie feststellen, dass die LED dunkler als zuvor wird. Je größer der Widerstand, desto dunkler die LED.
Bemerkung
Für eine Einführung in Widerstände und wie man Widerstandswerte berechnet, siehe Widerstand.
Die meisten verpackten Module benötigen nur Zugang zur richtigen Spannung (normalerweise 3,3V oder 5V), wie zum Beispiel das Ultraschallmodul.
In Ihren selbstgebauten Schaltkreisen müssen Sie jedoch auf die Versorgungsspannung und den Widerstandseinsatz für elektrische Geräte achten.
Als Beispiel: LEDs verbrauchen normalerweise 20mA Strom und ihr Spannungsabfall beträgt etwa 1,8V. Laut Ohmschem Gesetz benötigen wir bei einer 5V-Stromversorgung einen Widerstand von mindestens 160 Ohm ((5-1,8)/20mA), um die LED nicht zu zerstören.
Schaltkreissteuerung mit Arduino¶
Jetzt, da wir ein grundlegendes Verständnis für Arduino-Programmierung und elektronische Schaltkreise haben, ist es Zeit für die wichtigste Frage: Wie steuert man Schaltkreise mit Arduino?
Einfach ausgedrückt, steuert Arduino einen Schaltkreis, indem es den Pegel der Pins auf dem Board ändert. Zum Beispiel steuert es eine an Bord befindliche LED, indem es ein hohes oder niedriges Signal an Pin 13 sendet.
Jetzt versuchen wir, das Arduino-Board zu programmieren, um die blinkende LED auf dem Steckbrett zu steuern. Bauen Sie den Schaltkreis so, dass die LED an Pin 9 angeschlossen ist.

Laden Sie anschließend diesen Sketch auf das Arduino-Entwicklungsboard hoch.
int ledPin = 9;
int delayTime = 500;
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
digitalWrite(ledPin,HIGH);
delay(delayTime);
digitalWrite(ledPin,LOW);
delay(delayTime);
}
Dieser Sketch ähnelt sehr dem, den wir verwendet haben, um das Blinken der an Bord befindlichen LED zu steuern. Der Unterschied ist, dass der Wert von ledPin
dieses Mal auf 9 geändert wurde.
Jetzt können Sie sehen, wie die LED auf dem Steckbrett blinkt.
Code herunterladen¶
Laden Sie den relevanten Code über den untenstehenden Link herunter.
Oder sehen Sie sich den Code auf SunFounder 3 in 1 Kit für Arduino - GitHub an.
Grundprojekte¶
In diesem Kapitel lernen Sie, wie Sie elektronische Schaltungen mit Arduino steuern können.
Je nach Komponenten können die grundlegenden Steuermethoden von Arduino in vier Typen unterteilt werden:
1. Digitaler Schreibvorgang: Setzen Sie die Ausgangsspannung des Pins auf Hoch oder Niedrig, um das Licht ein- und auszuschalten.
2. Analoges Schreiben: Schreiben Sie den analogen Wert (PWM-Welle) auf den Pin, um die Helligkeit des Lichts anzupassen.
3. Digitaler Lesevorgang: Lesen Sie das Pegelsignal des digitalen Pins, um den Arbeitszustand des Schalters zu ermitteln.
4. Analoges Auslesen: Lesen Sie die Spannung des analogen Pins, um den Arbeitszustand des Drehknopfs zu ermitteln.
Es gibt auch einige Komponenten, die zusätzliche Bibliotheken für ihre Verwendung benötigen, und diese sind im Abschnitt 5.11 Externe Bibliotheken installieren zusammengefasst.
Schließlich bietet das Set auch einige 6. Lustiges Projekt, die viele einfache und nützliche Manipulationen enthalten. Probieren Sie diesen Abschnitt des Codes aus und Sie werden verstehen, wie die meisten einfachen Projekte funktionieren.
1. Digitaler Schreibvorgang¶
Digitaler Schreibvorgang dient dazu, ein digitales Signal an einen digitalen Pin auszugeben oder zu schreiben. Das digitale Signal hat nur zwei Zustände, 0 oder 1, 0V oder 5V, so dass einige Komponenten, wie die LED und der Summer, ein- oder ausgeschaltet werden können.
Auf dem Arduino R3-Board gibt es 14 digitale I/O-Pins von 0 bis 13. Verwenden Sie nun die Funktionen pinMode()
und digitalWrite()
um diesen digitalen Pins ein hohes oder niedriges Signal zu schreiben.
pinMode(pin, mode)
: Konfiguriert den spezifischen Pin alsINPUT
oderOUTPUT
, hier muss er alsOUTPUT
eingestellt werden.- Syntax
pinMode(pin, mode)
- Parameter
pin
: Die Pin-Nummer von Arduino, für die der Modus gesetzt werden soll.mode
:INPUT
,OUTPUT
oderINPUT_PULLUP
.
digitalWrite(pin, value)
: Schreiben Sie ein hohes Signal (5V) oder ein niedriges Signal (0V) auf einen digitalen Pin, um den Betriebszustand der Komponente zu ändern. Wenn der Pin mit pinMode() als OUTPUT konfiguriert wurde, wird seine Spannung auf den entsprechenden Wert gesetzt: 5V (oder 3,3V auf 3,3V-Boards) für HIGH, 0V (Erdung) für LOW.- Syntax
digitalWrite(pin, value)
- Parameter
pin
: Die Pin-Nummer von Arduino.value
:HIGH
oderLOW
.
Beispiel für Digitaler Schreibvorgang:
const int pin = 13;
void setup() {
pinMode(pin, OUTPUT); // setzt den digitalen Pin als Ausgang
}
void loop() {
digitalWrite(pin, HIGH); // schaltet den digitalen Pin ein
delay(1000); // wartet eine Sekunde
digitalWrite(pin, LOW); // schaltet den digitalen Pin aus
delay(1000); // wartet eine Sekunde
}

Anmerkungen und Warnungen
Die Pins 0~13 sind alle digitale Pins.
Verwenden Sie nicht die Pins 0 und 1, da sie zur Kommunikation mit dem Computer verwendet werden. Ein Anschluss an diese Pins stört die Kommunikation, einschließlich der Verhinderung des Hochladens auf das Board.
Wenn die digitalen Pins aufgebraucht sind, können die analogen Pins (A0-A5) auch als digitale Pins verwendet werden.
Zugehörige Komponenten
Unten finden Sie die zugehörigen Komponenten, auf die Sie klicken können, um zu erfahren, wie sie verwendet werden.
1.1 Hallo, LED!¶
Genau wie das Ausdrucken von „Hello, world!“ der erste Schritt beim Erlernen der Programmierung ist, so ist die Anwendung eines Programms zum Steuern einer LED die traditionelle Einführung in die physische Programmierung.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Das Prinzip dieser Schaltung ist einfach und die Stromrichtung wird in der Abbildung angezeigt. Wenn Pin 9 ein hohes Signal (5V) ausgibt, leuchtet die LED nach dem 220-Ohm-Strombegrenzungswiderstand auf. Wenn Pin 9 ein niedriges Signal (0V) ausgibt, schaltet sich die LED aus.
Verdrahtung

Code
Bemerkung
Sie können die Datei
1.1.hello_led.ino
unter dem Pfad3in1-kit\basic_project\1.1.hello_led
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nach erfolgreichem Hochladen des Codes sehen Sie die LED blinken.
Wie funktioniert das?
Hier verbinden wir die LED mit dem digitalen Pin 9, deshalb müssen wir zu Beginn des Programms eine int-Variable namens ledPin deklarieren und ihr den Wert 9 zuweisen.
const int ledPin = 9;
Nun initialisieren Sie den Pin in der setup()
-Funktion, wo Sie den Pin auf den OUTPUT
-Modus setzen müssen.
void setup() {
pinMode(ledPin, OUTPUT);
}
In loop()
, wird digitalWrite()
verwendet, um ein 5V-High-Level-Signal für ledPin bereitzustellen, was einen Spannungsunterschied zwischen den LED-Pins verursacht und die LED einschaltet.
digitalWrite(ledPin, HIGH);
Wenn das Level-Signal auf LOW geändert wird, wird das Signal von ledPin auf 0 V zurückgesetzt, um die LED auszuschalten.
digitalWrite(ledPin, LOW);
Ein Intervall zwischen Ein- und Ausschalten ist erforderlich, damit Menschen die Änderung sehen können, deshalb verwenden wir einen delay(1000)
-Code, um den Controller 1000 ms lang nichts tun zu lassen.
delay(1000);
1.2 Piepton¶
Der aktive Summer ist ein typisches digitales Ausgabegerät, das genauso einfach zu verwenden ist wie das Anzünden einer LED!
Zwei Arten von Summern sind im Kit enthalten. Wir müssen den aktiven Summer verwenden. Drehen Sie sie um, die versiegelte Rückseite (nicht die freiliegende PCB) ist die, die wir wollen.

Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltplan

Verdrahtung

Code
Bemerkung
Sie können die Datei
1.2.beep.ino
unter dem Pfad3in1-kit\basic_project\1.2.beep
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nach erfolgreichem Hochladen des Codes hören Sie alle Sekunde einen Piepton.
1.3 Das Rad drehen¶
Ein Motor ist ein typisches digitales Ausgabegerät und wird genauso verwendet wie eine LED. Allerdings benötigt der Motor einen großen Strom, und der hohe Strom kann das Hauptsteuerungsboard wie z.B. das R3-Board beschädigen. Deshalb wird in diesem Fall ein L298N-Modul verwendet, welches ein guter Helfer für das R3-Board ist, um den Motor sicher zu steuern.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltplan

IN1~IN4 sind die Eingänge des L298N-Moduls und OUT1~OUT4 sind die Ausgänge.
Eine einfache Verwendungsweise ist: Wird ein hohes Signalniveau an INx angelegt, gibt OUTx ein hohes Signalniveau aus; wird ein niedriges Signalniveau an INx angelegt, gibt OUTx ein niedriges Signalniveau aus. Wenn die beiden Enden des Motors an OUT1 und OUT2 angeschlossen sind und für IN1 und IN2 entgegengesetzte Signalniveaus eingegeben werden, dreht sich der Motor. OUT3 und OUT4 können auf die gleiche Weise verwendet werden.
Verdrahtung
L298N |
R3-Board |
Motor |
---|---|---|
12V |
5V |
|
GND |
GND |
|
IN3 |
9 |
|
IN4 |
10 |
|
OUT3 |
ein Draht des Motors |
|
OUT4 |
ein Draht des Motors |

Code
Bemerkung
Sie können die Datei
1.3.turn_the_wheel.ino
unter dem Pfad3in1-kit\basic_project\1.3.turn_the_wheel
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
1.4 Pumpen¶
Die Wasserpumpe ist ebenfalls ein Motor, der durch eine spezielle Struktur die mechanische Energie des Motors oder andere externe Energien umwandelt, um die Flüssigkeit zu transportieren.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein komplettes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltplan

IN1~IN4 sind die Eingänge des L298N-Moduls, und OUT1~OUT4 sind die Ausgänge.
Eine einfache Verwendungsweise ist: Wird ein hohes Signalniveau an INx angelegt, gibt OUTx ein hohes Signalniveau aus; wird ein niedriges Signalniveau an INx angelegt, gibt OUTx ein niedriges Signalniveau aus. Wenn die beiden Enden des Motors an OUT1 und OUT2 angeschlossen sind und für IN1 und IN2 entgegengesetzte Signalniveaus eingegeben werden, dreht sich der Motor. OUT3 und OUT4 können auf die gleiche Weise verwendet werden.
Verdrahtung
L298N |
R3-Board |
Motor |
---|---|---|
12V |
5V |
|
GND |
GND |
|
IN3 |
9 |
|
IN4 |
10 |
|
OUT3 |
ein Draht des Motors |
|
OUT4 |
ein Draht des Motors |

Code
Bemerkung
Sie können die Datei
1.4.pumping.ino
unter dem Pfad3in1-kit\basic_project\1.4.pumping
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Fügen Sie den Schlauch zur Pumpe hinzu und platzieren Sie ihn im Becken. Nachdem der Code erfolgreich hochgeladen wurde, können Sie sehen, dass das Wasser im Becken nach einer Weile abgelassen wird. Während dieses Experiments halten Sie bitte die Schaltung vom Wasser fern, um Kurzschlüsse zu vermeiden!
2. Analoges Schreiben¶
6 der 14 digitalen Pins von Arduino verfügen auch über eine PWM-Ausgabefunktion. Daher können Sie neben dem Schreiben von digitalen Signalen an diese 6 Pins auch analoge Signale (PWM-Wellensignale) an sie senden. Auf diese Weise können Sie die LEDs in unterschiedlicher Helligkeit leuchten lassen oder den Motor mit unterschiedlichen Geschwindigkeiten drehen lassen.
Pulsweitenmodulation, oder PWM, ist eine Technik, um analoge Ergebnisse mit digitalen Mitteln zu erzielen. Da die wörtliche Bedeutung schwer zu fassen sein mag, folgt hier ein Beispiel zur Steuerung der Intensität einer LED, um das Prinzip besser zu veranschaulichen.
Ein digitales Signal, das aus hohen und niedrigen Pegeln besteht, wird als Puls bezeichnet. Die Pulsbreite dieser Pins kann durch Änderung der EIN/AUS-Geschwindigkeit angepasst werden. Vereinfacht ausgedrückt: Wenn wir die LED für eine kurze Zeit (wie 20ms, die visuelle Verweildauer der meisten Menschen) ein-, aus- und wieder einschalten, werden wir nicht bemerken, dass sie ausgeschaltet war, aber die Helligkeit des Lichts wird etwas schwächer sein. In diesem Zeitraum gilt: Je länger die LED eingeschaltet ist, desto heller wird sie sein. Das heißt, innerhalb eines Zeitraums, je breiter der Puls, desto größer ist die „elektrische Signalstärke“, die vom Mikrocontroller ausgegeben wird.
Dies ist die benötigte Funktion, um die PWM-Welle zu schreiben:
analogWrite(pin, value)
Schreibt einen analogen Wert (PWM-Welle) an einen Pin. Durch Generieren eines bestimmten Pulssignals können unterschiedliche Ausgangsspannungen (0-5V) simuliert werden. Der Pin behält dieses Signal bei, bis er durch eine neue Lese- oder Schreibanweisung aufgerufen wird.
- Syntax
analogWrite(pin, value)
- Parameter
pin
: Der Arduino-Pin, an den geschrieben wird. Erlaubte Datentypen: int.value
: Das Tastverhältnis: zwischen 0 (immer aus) und 255 (immer an). Erlaubte Datentypen: int.
Beispiel für Analoges Schreiben
int pin = 9; // Verbindung zum PWM-Pin
void setup() {
pinMode(pin, OUTPUT); // Definiert den Pin als Ausgang
}
void loop() {
for (int i = 0 ;i<255 ; i++){
analogWrite(pin, i); //analogWrite Werte von 0 bis 255
delay(30);
}
}
Anmerkungen und Warnungen
Wenn Sie genau auf das R3-Board schauen, haben die mit dem Symbol „~“ gekennzeichneten Pins eine analoge Ausgabefunktion.
Die an den Pins 5 und 6 erzeugten PWM-Ausgänge haben höhere Tastverhältnisse als erwartet. Dies liegt an Wechselwirkungen mit den Funktionen
millis()
unddelay()
, die denselben internen Timer verwenden, der zum Erzeugen dieser PWM-Ausgänge genutzt wird. Dies wird vor allem bei niedrigen Tastverhältniseinstellungen (z. B. 0 - 10) bemerkbar und kann dazu führen, dass ein Wert von 0 den Ausgang an den Pins 5 und 6 nicht vollständig abschaltet.
Zugehörige Komponenten
Im Folgenden finden Sie die zugehörigen Komponenten, auf die Sie klicken können, um zu erfahren, wie sie verwendet werden.
2.1 Überblenden¶
Dieses Projekt ähnelt 1.1 Hallo, LED!. Der Unterschied liegt in der Signalart. Während das frühere Projekt die LED durch Ausgabe eines digitalen Signals (0&1) ein- oder ausschaltet, steuert dieses Projekt die Helligkeit der LED durch Ausgabe eines analogen Signals.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Code
Bemerkung
Sie können die Datei
2.1.fading.ino
im Pfad3in1-kit\basic_project\2.analogWrite\2.1.fading
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, können Sie sehen, wie die LED atmet.
2.2 Buntes Licht¶
Wie wir wissen, kann Licht überlagert werden. Beispielsweise ergibt die Kombination von blauem und grünem Licht ein türkises Licht und die von rotem und grünem Licht ein gelbes Licht. Dies wird als „Additive Farbmischung“ bezeichnet.
Auf Basis dieser Methode können wir durch Mischen der drei Grundfarben nach verschiedenen spezifischen Gewichtungen jedes sichtbare Licht erzeugen. Beispielsweise entsteht Orange aus viel Rot und wenig Grün.
In diesem Kapitel werden wir die Geheimnisse der additiven Farbmischung mit einer RGB-LED erkunden!
Eine RGB-LED entspricht dem Kapseln einer roten, einer grünen und einer blauen LED unter einer Lampe, wobei die drei LEDs einen gemeinsamen Kathodenpin teilen. Da das elektrische Signal für jeden Anodenpin bereitgestellt wird, kann das Licht der entsprechenden Farbe angezeigt werden. Durch Änderung der elektrischen Signalintensität jeder Anode kann sie dazu gebracht werden, verschiedene Farben zu erzeugen.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
Schaltplan

Die PWM-Pins 11, 10 und 9 steuern die Rot-, Grün- und Blau-Pins der RGB-LED jeweils an und verbinden den gemeinsamen Kathodenpin mit GND. Dadurch kann die RGB-LED durch Überlagerung von Licht auf diesen Pins mit verschiedenen PWM-Werten eine bestimmte Farbe anzeigen.
Verdrahtung

Eine RGB-LED hat 4 Pins: Der längste Pin ist der gemeinsame Kathodenpin, der normalerweise mit GND verbunden ist, der linke Pin neben dem längsten Pin ist Rot, und die 2 Pins rechts sind Grün und Blau.

Code
Hier können wir unsere Lieblingsfarbe in Zeichensoftware (wie Paint) auswählen und sie mit der RGB-LED anzeigen.
Bemerkung
Sie können die Datei
2.2.colorful_light.ino
im Pfad3in1-kit\basic_project\2.analogWrite\2.2.colorful_light
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.

Schreiben Sie den RGB-Wert in color_set()
, dann werden Sie sehen, wie die RGB-LED die gewünschten Farben anzeigt.
Wie funktioniert das?
In diesem Beispiel wird die Funktion, die Werte den drei Pins von RGB zuweist, in einer unabhängigen Unterfunktion color()
verpackt.
void color (unsigned char red, unsigned char green, unsigned char blue)
{
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue);
}
In loop()
dient der RGB-Wert als Eingabeargument, um die Funktion color()
aufzurufen und somit die RGB-LED verschiedene Farben ausstrahlen zu lassen.
void loop()
{
color(255, 0, 0); // rot
delay(1000);
color(0,255, 0); // grün
delay(1000);
color(0, 0, 255); // blau
delay(1000);
}
3. Digitaler Lesevorgang¶
Sensoren erfassen Informationen aus der realen Welt, welche über Pins (manche digital, manche analog) an das Hauptboard weitergegeben werden, sodass der Computer die tatsächliche Situation erkennen kann.
Daher kann das Arduino-Board den Arbeitsstatus von digitalen Sensoren erkennen, indem es den Wert digitaler Pins wie Tasten oder IR-Vermeidungsmodule liest.
Hier sind die benötigten Funktionen:
pinMode(pin, mode)
: Konfiguriert den spezifischen Pin alsINPUT
oderOUTPUT
. Hier muss er aufINPUT
gesetzt werden.- Syntax
pinMode(pin, mode)
- Parameter
pin
: Die Arduino-Pin-Nummer, für die der Modus gesetzt werden soll.mode
: INPUT, OUTPUT oder INPUT_PULLUP.
digitalRead(pin)
: Liest den Wert (Zustand) vom angegebenen digitalen Pin.- Syntax
digitalRead(pin)
- Parameter
pin
: Die Arduino-Pin-Nummer, die Sie lesen möchten.
- Rückgabewert
HIGH oder LOW
Beispiel für Digitalen Lesevorgang
int ledPin = 13; // LED verbunden mit digitalem Pin 13
int inPin = 7; // Taster verbunden mit digitalem Pin 7
int val = 0; // Variable zum Speichern des gelesenen Wertes
void setup() {
pinMode(ledPin, OUTPUT); // setzt den digitalen Pin 13 als Ausgang
pinMode(inPin, INPUT); // setzt den digitalen Pin 7 als Eingang
}
void loop() {
val = digitalRead(inPin); // liest den Eingangspin
digitalWrite(ledPin, val); // setzt die LED auf den Wert des Tasters
}
Anmerkungen und Warnungen
Pull-Up & Pull-Down.
digitalRead()
kann zufällige, unbestimmte Werte produzieren, wenn der Pin kein klares Signal erhält. Das Steuern der Eingangspins in einen bekannten Zustand kann das Projekt zuverlässiger machen. Bei der Verwendung einer Eingangskomponente wie einem Taster ist es normalerweise notwendig, einen Pull-Up- oder Pull-Down-Widerstand parallel zum digitalen Eingangspin anzuschließen.Abgesehen vom Anschluss eines Pull-up-Widerstands können Sie auch den Pin-Modus im Code auf
INPUT_PULLUP
setzen, zum BeispielpinMode(pin, INPUT_PULLUP)
. In diesem Fall wird der Pin über die Software auf den internen Pull-up-Widerstand von Atmega zugreifen, und es hat den gleichen Effekt wie das Anschließen eines Pull-up-Widerstands.Über Pin13.
Alle digitalen Pins (1-13) auf dem R3-Board können mit
digitalRead()
verwendet werden. Aber der digitale Pin 13 ist schwieriger als Eingang zu verwenden als andere digitale Pins. Da er mit einer LED und einem Widerstand verbunden ist, ist er auf den meisten Boards verlötet. Wenn Sie seinen internen 20k Pull-up-Widerstand aktivieren, wird er statt der erwarteten 5V bei etwa 1,7V liegen, da die onboard LED und der Serienwiderstand das Spannungsniveau senken. Das bedeutet, er gibt immer LOW zurück. Wenn Sie Pin 13 als digitalen Eingang verwenden müssen, setzen Sie seinenpinMode()
auf INPUT und verwenden Sie einen externen Pull-down-Widerstand.Analoge Pins.
Wenn die digitalen Pins nicht ausreichen, können die analogen Pins (A0-A5) auch als digitale Pins verwendet werden. Sie müssen mit
pinMode(pin,mode)
auf INPUT gesetzt werden.
Verwandte Komponenten
Unten finden Sie die zugehörigen Komponenten. Sie können darauf klicken, um zu erfahren, wie sie verwendet werden.
3.0 Serieller Monitor¶
In der Arduino IDE gibt es einen seriellen Monitor, der es ermöglicht, Nachrichten von Ihrem Computer zum Arduino-Board (über USB) zu senden und auch Nachrichten vom Arduino zu empfangen.
In diesem Projekt werden wir also lernen, wie man Daten vom Arduino-Board empfängt.
Bemerkung
Bei Uno, Nano, Mini und Mega werden die Pins 0 und 1 zur Kommunikation mit dem Computer verwendet. Das Anschließen von Geräten an diese Pins kann die Kommunikation stören, einschließlich fehlgeschlagener Uploads zum Board.
Verwendung des seriellen Monitors
Öffnen Sie die Arduino IDE und fügen Sie den folgenden Code ein.
// Die Setup-Routine wird einmal ausgeführt, wenn Sie Reset drücken: void setup() { // Initialisiere die serielle Kommunikation mit 9600 Baud: Serial.begin(9600); } // Die Loop-Routine wird immer und immer wieder ausgeführt: void loop() { int number = 100; Serial.println(number); Serial.println("Hello world"); delay(100); // Verzögerung zwischen den Abfragen für Stabilität }
Serial.begin(): Legt die Datenrate in Bits pro Sekunde (Baud) für die serielle Datenübertragung fest, hier auf 9600 eingestellt.
Serial.println(): Sendet Daten zum seriellen Port als menschenlesbaren ASCII-Text, gefolgt von einem Wagenrücklauf (ASCII 13 oder ‚r‘) und einem Zeilenumbruch (ASCII 10 oder ‚n‘). Dieser Befehl entspricht Serial.print().
Wählen Sie das richtige Board und den richtigen Port aus, um den Code hochzuladen.
Klicken Sie in der Symbolleiste auf das Lupensymbol, um den seriellen Monitor zu aktivieren.

Hier sehen Sie den seriellen Monitor.

1: Option, um automatisch zu scrollen oder nicht zu scrollen.
2: Option, um einen Zeitstempel vor den im seriellen Monitor angezeigten Daten anzuzeigen.
3: Auswahl des Zeilenendes, wählt die Zeichen aus, die den an Arduino gesendeten Daten hinzugefügt werden. Auswahl beinhaltet:
Kein Zeilenumbruch sendet nur, was Sie eingeben;
Zeilenumbruch ist
\n
und sendet nach Ihrer Eingabe einen ASCII-Zeilenumbruchcode;Wagenrücklauf ist
\r
und sendet nach Ihrer Eingabe ein ASCII-Wagenrücklaufzeichen;Beides, NL & CR ist
\r\n
und sendet nach Ihrer Eingabe sowohl ein Wagenrücklauf- als auch ein Zeilenumbruchzeichen.
4: Wählen Sie die Kommunikationsgeschwindigkeit zwischen Arduino-Board und PC. Dieser Wert MUSS dem in
Serial.begin()
eingestellten Wert entsprechen.5: Löscht den gesamten Text auf der Ausgabekonsole.
6: Ein Textfeld, um Zeichen an das Arduino-Board zu senden, siehe 5.12 Serielle Lektüre für ein Tutorial.
3.1 Tastenwert auslesen¶
In den vorherigen Projekten haben wir die Ausgabefunktion verwendet. In diesem Kapitel verwenden wir die Eingabefunktion, um den Tastenwert auszulesen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Ein Pin der Taste ist mit 5V verbunden, der andere Pin mit Pin 2. Wenn die Taste gedrückt wird, wird Pin 2 hochgeschaltet. Wenn die Taste jedoch nicht gedrückt wird, befindet sich Pin 2 in einem Schwebezustand und kann hoch oder niedrig sein. Um ein stabiles niedriges Signal zu erhalten, wenn die Taste nicht gedrückt ist, muss Pin 2 über einen 10K Pull-down-Widerstand erneut mit GND verbunden werden.
Verkabelung

Code
Bemerkung
Sie können die Datei
3.1.read_button_value.ino
unter dem Pfad3in1-kit\basic_project\3.1.read_button_value
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, klicken Sie auf das Lupensymbol in der oberen rechten Ecke der Arduino IDE (Serieller Monitor).

Wenn Sie die Taste drücken, wird im Seriellen Monitor „1“ angezeigt.
3.2 Magnetismus spüren¶
Der gebräuchlichste Typ eines Reed-Schalters enthält ein Paar magnetisierbare, flexible Metallzungen, deren Enden durch eine kleine Lücke getrennt sind, wenn der Schalter offen ist.
Ein Magnetfeld von einem Elektromagneten oder einem Permanentmagneten bewirkt, dass sich die Zungen einander anziehen und somit einen elektrischen Stromkreis schließen. Die Federkraft der Zungen führt dazu, dass sie sich trennen und den Stromkreis öffnen, wenn das Magnetfeld nachlässt.
Ein gängiges Beispiel für eine Anwendung eines Reed-Schalters ist die Erkennung des Öffnens einer Tür oder eines Fensters für eine Sicherheitsalarmanlage.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltplan

Standardmäßig ist Pin 2 niedrig; er wird hochschalten, wenn der Magnet in der Nähe des Reed-Schalters ist.
Der Zweck des 10K Widerstands besteht darin, Pin 2 auf einem stabilen niedrigen Niveau zu halten, wenn kein Magnet in der Nähe ist.
Verkabelung

Code
Bemerkung
Sie können die Datei
3.2.feel_the_magnetism.ino
unter dem Pfad3in1-kit\basic_project\3.2.feel_the_magnetism
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nach erfolgreichem Hochladen des Codes wird, wenn ein Magnet in der Nähe des Reed-Schalters ist, im seriellen Monitor eine 1 angezeigt.
3.3 Hindernisse erkennen¶
Dieses Modul wird häufig in Autos und Robotern installiert, um das Vorhandensein von Hindernissen vor ihnen zu erkennen. Es findet auch breite Anwendung in Handgeräten, Wasserhähnen und weiteren.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Der digitale Pin 2 wird verwendet, um das Signal des IR-Hindernisvermeidungsmoduls zu lesen. Das VCC des IR-Sensormoduls ist mit 5V verbunden, GND mit GND und OUT mit dem digitalen Pin 2.
Verkabelung

Code
Bemerkung
Sie können die Datei
3.3.detect_the_obstacle.ino
unter dem Pfad3in1-kit\basic_project\3.3.detect_the_obstacle
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Wenn das IR-Hindernisvermeidungsmodul ein Blockieren vor sich erkennt, wird auf dem seriellen Monitor [0] angezeigt. Andernfalls wird [1] angezeigt.
3.4 Linie erkennen¶
Das Linienverfolgungsmodul wird verwendet, um festzustellen, ob es schwarze Bereiche auf dem Boden gibt, wie zum Beispiel schwarze Linien, die mit Isolierband geklebt wurden.
Eine seiner LEDs sendet infrarotes Licht zum Boden, und die schwarze Oberfläche hat eine relativ starke Fähigkeit, Licht zu absorbieren und eine schwächere Reflexionsfähigkeit. Weiße Oberflächen verhalten sich genau umgekehrt. Wenn reflektiertes Licht erkannt wird, bedeutet dies, dass der Boden aktuell weiß ist. Wird keines erkannt, ist er schwarz.
So funktioniert es.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Der digitale Pin 2 wird verwendet, um das Signal des Linienverfolgungsmoduls zu lesen. Das VCC des Moduls ist mit 5V verbunden, GND mit GND und OUT mit dem digitalen Pin 2.
Verkabelung

Code
Bemerkung
Sie können die Datei
3.4.detect_the_line.ino
unter dem Pfad3in1-kit\basic_project\3.4.detect_the_line
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Wenn das Linienverfolgungsmodul eine schwarze Linie erkennt, wird [1] auf dem seriellen Monitor angezeigt. Andernfalls wird [0] dargestellt.
4. Analoges Auslesen¶
Das Arduino kann die angeschlossenen analogen Sensoren über die analogen Pins auslesen.
Das R3-Board enthält einen mehrkanaligen, 10-Bit-Analog-Digital-Wandler. Das bedeutet, dass es die Eingangsspannung zwischen 0 und der Betriebsspannung (5V oder 3,3V) einem Ganzzahlwert zwischen 0 und 1023 zuordnet.
Die Funktion analogRead(pin)
wird benötigt, um den Wert des analogen Pins auszulesen.
analogRead(pin)
: Liest den Wert vom angegebenen analogen Pin.- Syntax
analogRead(pin)
- Parameter
pin
: Der Name des analogen Eingangspins, von dem gelesen werden soll (A0 bis A5).
- Rückgabewerte
0-1023. Datentyp: int.
Beispiel für analoges Auslesen
int analogPin = A0; // Gerät an den analogen Pin A0 angeschlossen
// Äußere Leitungen führen zu Ground und +5V
int val = 0; // Variable zum Speichern des gelesenen Werts
void setup() {
Serial.begin(9600); // Serielle Schnittstelle einrichten
}
void loop() {
val = analogRead(analogPin); // Eingangspin auslesen
Serial.println(val); // Wert zur Fehlersuche ausgeben
}
Hinweise und Warnungen
Die analogen Pins sind A0-A5.
Es ist nicht notwendig,
pinMode()
vor dem Aufruf des analogen Pins aufzurufen. Wenn der Pin jedoch zuvor aufOUTPUT
gesetzt wurde, funktioniert dieanalogRead()
-Funktion nicht ordnungsgemäß. In diesem Fall müssen SiepinMode()
aufrufen, um ihn wieder aufINPUT
zu setzen.
Zugehörige Komponenten
Im Folgenden finden Sie die zugehörigen Komponenten. Klicken Sie darauf, um zu erfahren, wie sie verwendet werden.
4.1 Den Drehknopf drehen¶
Ein Potentiometer ist ein Widerstandskomponente mit 3 Anschlüssen, dessen Widerstandswert nach einer bestimmten Regelung variiert werden kann.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

In diesem Beispiel verwenden wir den analogen Pin (A0), um den Wert des Potentiometers auszulesen. Durch das Drehen der Achse des Potentiometers können Sie die Widerstandsverteilung zwischen diesen drei Pins ändern und so die Spannung am mittleren Pin verändern. Wenn der Widerstand zwischen dem mittleren und einem äußeren, mit 5V verbundenen Pin nahezu null ist (und der Widerstand zwischen dem mittleren und dem anderen äußeren Pin nahe 10kΩ liegt), liegt die Spannung am mittleren Pin nahe 5V. Die umgekehrte Operation (Widerstand zwischen dem mittleren und einem äußeren, mit 5V verbundenen Pin ist nahe 10kΩ) führt dazu, dass die Spannung am mittleren Pin nahe 0V liegt.
Verkabelung

Code
Bemerkung
Sie können die Datei
4.1.turn_the_knob.ino
im Pfad3in1-kit\basic_project\4.1.turn_the_knob
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem Sie die Codes auf das Board geladen haben, können Sie den seriellen Monitor öffnen, um den gelesenen Wert des Pins zu sehen. Wenn Sie die Achse des Potentiometers drehen, wird der serielle Monitor den Wert zwischen「0」und「1023」anzeigen.
4.2 Licht wahrnehmen¶
Der Fotowiderstand ist ein typisches Gerät für analoge Eingänge und wird in einer sehr ähnlichen Weise wie ein Potentiometer verwendet. Sein Widerstandswert hängt von der Intensität des Lichts ab: Je stärker das einfallende Licht, desto geringer ist sein Widerstandswert und umgekehrt.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist sicherlich praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

In dieser Schaltung sind der 10K Widerstand und der Fotowiderstand in Reihe geschaltet und der durch sie fließende Strom ist derselbe. Der 10K Widerstand dient als Schutz und der Pin A0 liest den Wert nach der Spannungsumwandlung des Fotowiderstands.
Wenn das Licht verstärkt wird, verringert sich der Widerstand des Fotowiderstands, seine Spannung sinkt und der Wert von Pin A0 steigt. Wenn das Licht stark genug ist, wird der Widerstand des Fotowiderstands nahezu 0 sein und der Wert von Pin A0 wird nahe 1023 liegen. Der 10K Widerstand spielt hierbei eine schützende Rolle, sodass 5V und GND nicht miteinander verbunden werden und es zu einem Kurzschluss kommt.
Platziert man den Fotowiderstand in einer dunklen Umgebung, wird der Wert von Pin A0 sinken. In einer ausreichend dunklen Umgebung wird der Widerstand des Fotowiderstands unendlich groß und seine Spannung nahe 5V liegen (der 10K Widerstand ist vernachlässigbar), der Wert von Pin A0 wird nahe 0 liegen.
Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
4.2.feel_the_light.ino
unter dem Pfad3in1-kit\basic_project\4.2.feel_the_light
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nach erfolgreichem Hochladen des Codes gibt der serielle Monitor die Werte des Fotowiderstands aus. Je stärker die aktuelle Umgebungshelligkeit, desto größer ist der auf dem seriellen Monitor angezeigte Wert.
4.3 Den Joystick betätigen¶
Jeder, der regelmäßig Videospiele spielt, sollte den Joystick gut kennen. Er wird normalerweise verwendet, um Charaktere zu bewegen oder den Bildschirm zu drehen.
Unsere Bewegungen können vom Joystick erkannt werden, der nach einem sehr einfachen Prinzip funktioniert. Er besteht aus zwei Potentiometern, die senkrecht zueinander stehen. Diese beiden Potentiometer messen den analogen Wert des Joysticks in vertikaler und horizontaler Richtung und erzeugen einen Wert (x,y) in einem planaren rechtwinkligen Koordinatensystem.
Dieses Set beinhaltet auch einen Joystick mit digitalem Eingang. Er wird aktiviert, wenn der Joystick gedrückt wird.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltplan

Bemerkung
Der SW-Pin ist mit einem 10K Pull-up-Widerstand verbunden, um ein stabiles Hochpegelsignal am SW-Pin (Z-Achse) zu erhalten, wenn der Joystick nicht gedrückt ist; sonst befindet sich der SW in einem schwebenden Zustand, und der Ausgabewert kann zwischen 0/1 variieren.
Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
4.3.toggle_the_joystick.ino
im Pfad3in1-kit\basic_project\4.3.toggle_the_joystick
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Öffnen Sie den seriellen Monitor, nachdem der Code erfolgreich hochgeladen wurde, um die x,y,z-Werte des Joysticks zu sehen.
Die Werte der x- und y-Achse sind analoge Werte, die von 0 bis 1023 variieren.
Die Z-Achse hat einen digitalen Wert mit einem Status von 1 oder 0 (wenn gedrückt, ist es 0).
4.4 Bodenfeuchtigkeit messen¶
In der Pflanzenzucht können die Pflanzen die anorganischen Elemente im Boden nicht direkt aufnehmen. Das Wasser im Boden dient als Lösungsmittel, um diese anorganischen Elemente zu lösen.
Die Pflanzen nehmen die Bodenfeuchtigkeit über das Wurzelsystem auf, erhalten Nährstoffe und fördern das Wachstum.
Im Prozess des Pflanzenwachstums und der Entwicklung unterscheiden sich auch die Anforderungen an die Bodentemperatur. Daher wird ein Bodenfeuchtigkeitssensor benötigt.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
4.4.measure_soil_moisture.ino
im Pfad3in1-kit\basic_project\4.4.measure_soil_moisture
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nach erfolgreichem Hochladen des Codes wird der serielle Monitor den Wert der Bodenfeuchtigkeit ausgeben.
Wenn Sie das Modul in den Boden stecken und ihn bewässern, wird der Wert des Bodenfeuchtigkeitssensors kleiner.
4.5 Thermometer¶
Ein Thermometer ist ein Gerät, das die Temperatur oder einen Temperaturgradienten misst (das Maß für die Hitze oder Kälte eines Objekts). Ein Thermometer hat zwei wichtige Elemente: (1) einen Temperatursensor (z.B. die Glühbirne eines Quecksilber-Thermometers oder den pyrometrischen Sensor in einem Infrarot-Thermometer), bei dem eine Änderung mit einer Temperaturänderung eintritt; und (2) eine Möglichkeit, diese Änderung in einen Zahlenwert umzuwandeln (z.B. die sichtbare Skala, die auf einem Quecksilber-Thermometer markiert ist, oder die digitale Anzeige bei einem Infrarot-Modell). Thermometer werden in Technologie und Industrie zur Prozessüberwachung, in der Meteorologie, in der Medizin und in der wissenschaftlichen Forschung weit verbreitet verwendet.
Ein Thermistor ist eine Art Temperatursensor, dessen Widerstand stark temperaturabhängig ist und er hat zwei Typen: Negativer Temperaturkoeffizient (NTC) und Positiver Temperaturkoeffizient (PTC), auch bekannt als NTC und PTC. Der Widerstand des PTC-Thermistors steigt mit der Temperatur, während der Zustand des NTC dem des PTC entgegengesetzt ist.
In diesem Experiment verwenden wir einen NTC-Thermistor, um ein Thermometer zu bauen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Jeder Thermistor hat einen normalen Widerstand. Hier beträgt er 10k Ohm, gemessen bei 25 Grad Celsius.
Wenn die Temperatur steigt, verringert sich der Widerstand des Thermistors. Dann werden die Spannungsdaten vom A/D-Wandler in digitale Werte umgewandelt.
Die Temperatur in Celsius oder Fahrenheit wird mittels Programmierung ausgegeben.
Hier ist die Beziehung zwischen Widerstand und Temperatur:
RT =RN expB(1/TK – 1/TN)
RT ist der Widerstand des NTC-Thermistors bei der Temperatur TK.
RN ist der Widerstand des NTC-Thermistors bei der Nenn-Temperatur TN. Hier beträgt der Wert von RN 10k.
TK ist eine Kelvin-Temperatur und die Einheit ist K. Der Wert von TK beträgt hier
273,15 + Grad Celsius
.TN ist eine bewertete Kelvin-Temperatur; die Einheit ist auch K. Hier beträgt der Wert von TN
273,15+25
.Und B(beta), die Materialkonstante des NTC-Thermistors, wird auch als Wärmeempfindlichkeitsindex bezeichnet und hat einen Wert von
3950
.exp steht für Exponentialfunktion, und die Basiszahl
e
ist eine natürliche Zahl und beträgt ungefähr 2,7.Wandeln Sie diese Formel
TK=1/(ln(RT/RN)/B+1/TN)
um, um die Kelvin-Temperatur zu erhalten, die minus 273,15 Grad Celsius entspricht.Diese Beziehung ist eine empirische Formel. Sie ist nur dann genau, wenn Temperatur und Widerstand im effektiven Bereich liegen.
Verkabelung
Bemerkung
Der Thermistor ist schwarz oder grün und mit 103 gekennzeichnet.

Code
Bemerkung
Sie können die Datei
4.5_thermometer.ino
im Pfadeuler-kit/arduino/4.5_thermometer
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Vergessen Sie nicht, das Raspberry Pi Pico Board und den richtigen Port auszuwählen, bevor Sie auf den Upload-Button klicken.
Nach erfolgreichem Hochladen des Codes wird der Serial Monitor die Temperaturen in Celsius und Fahrenheit ausgeben.
5. Weitere Syntax¶
In diesem Kapitel finden Sie einige Beispiele, die die grundlegende Logik veranschaulichen, wie die meisten Programme mit der Realität interagieren. Dies wird Ihnen helfen, sich mit der Arduino-Programmierung vertraut zu machen. Wenn Sie eine kreative Idee im Kopf haben, wird die Programmierung für Sie kein Hindernis mehr sein.
5.1 If else¶
Normalerweise nutzen wir bedingte Beurteilungen, um die einfachsten Interaktionsprojekte mit der Realität abzuschließen. Hier erstellen wir ein Türerkennungssystem mit einem Reed-Kontakt und einer LED, um diese Logik zu zeigen.
Befestigen Sie den Magneten auf einer Seite der Tür und den Reed-Kontakt (mit Schaltung) auf der anderen Seite der Tür. Wenn die Tür geschlossen ist, ist der Magnet dem Reed-Kontakt nahe und schaltet diesen ein.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltplan

Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
5.1.if_else.ino
unter dem Pfad3in1-kit\basic_project\5.1.if_else
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde und wenn Sie die Tür nicht schließen, leuchtet die LED auf und fordert Sie auf, die Tür zu schließen.
Übrigens, wenn wir den entgegengesetzten Effekt möchten (LED leuchtet, wenn die Tür geschlossen ist), müssen wir nur die Bedingung im if
ändern.
-
Das
if else
ermöglicht eine bessere Kontrolle über den Code-Fluss als die grundlegende if-Anweisung, indem mehrere Tests gruppiert werden können.
5.2 Schwellenwert¶
In vielen Projekten werden Sie auf solch ein Bedürfnis stoßen. „Wenn xxx ein bestimmtes Level erreicht, dann…“
Zum Beispiel in einem Smart Home: Wenn die Lichtintensität unter 50 Lux fällt, schalte das Licht ein; Ein weiteres Beispiel ist auf dem Computer-Motherboard: Wenn die Betriebstemperatur des CPUs über 65 Grad Celsius steigt, schalte den Lüfter ein, und so weiter.
In diesen Anforderungen spiegelt sich das Schlüsselwort „Schwellenwert“ wider.
Wir können den Wert des Schwellenwerts anpassen, um den Schaltkreis besser an individuelle Bedürfnisse anzupassen. Zum Beispiel: Wenn ich eine hellere Wohnatmosphäre bevorzuge, kann ich den Schwellenwert für das automatische Licht im Smart Home auf 80 Lux erhöhen. Ein weiteres Beispiel: Das Lüftungsumfeld meines Studios ist nicht sehr gut und der Kühlbedarf höher, dann kann der Schwellenwert für das automatische Lüftereinschalten auf 50 Grad Celsius angepasst werden.
Hier verwenden wir einen Bodenfeuchtigkeitssensor und 2 LEDs, um einen Pflanzentopf-Monitor zu erstellen. Wenn der Boden zu trocken ist, leuchtet die rote LED; wenn der Boden feucht genug ist, leuchtet die grüne LED. Sie müssen die Schwellenwerte manuell anpassen, um die Trockenheit und Feuchtigkeit des Bodens zu bestimmen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
5.2.threshold.ino
unter dem Pfad3in1-kit\basic_project\5.2.threshold
.Oder kopieren Sie diesen Code in die Arduino IDE.
Nachdem der Code erfolgreich hochgeladen wurde, und wenn Ihr Schwellenwert richtig eingestellt ist, wird die rote LED aufleuchten, wenn der Boden trocken ist, um Sie daran zu erinnern, dass Sie gießen müssen; nach dem Gießen wird die grüne LED aufleuchten.
Wie funktioniert das?
...
void loop() {
int sensorValue = analogRead(soilMoisture);
Serial.println(sensorValue);
if (sensorValue > threshold) {
digitalWrite(redPin, HIGH); // Rote LED einschalten
digitalWrite(greenPin, LOW); // Grün ausschalten
} else {
digitalWrite(greenPin, HIGH); // Grüne LED einschalten
digitalWrite(redPin, LOW); // Rot ausschalten
}
}
...
Zunächst setzen Sie einen Schwellenwert
und lesen dann den Wert des Bodenfeuchtigkeitsmoduls aus, dessen Wert mit steigendem Feuchtigkeitsgrad abnimmt. Wenn der aktuell gelesene Wert größer als der gesetzte Schwellenwert
ist, lassen Sie die rote LED leuchten, andernfalls schalten Sie die grüne LED ein.
Dieser Schwellenwert
muss je nach tatsächlicher Situation angepasst werden. Sie können zuerst den Code hochladen, dann den seriellen Monitor öffnen, um den Wert zu überprüfen, den Wert in feuchten und trockenen Zuständen aufzeichnen und dann einen Mittelwert als Schwellenwert
wählen.
5.3 Zustandswechsel-Erkennung¶
Wenn der Knopf andere Geräte steuert, kann er nicht nur bei Betätigung arbeiten und bei Loslassen stoppen. Es ist auch möglich, bei jedem Tastendruck den Arbeitszustand zu wechseln.
Um diesen Effekt zu erzielen, müssen Sie wissen, wie Sie den Arbeitszustand beim Drücken des Knopfes zwischen aus und an wechseln können. Das nennt man „Zustandswechsel-Erkennung“.
In diesem Projekt verwenden wir den Knopf, um den Motor zu steuern.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltplan

Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
5.3.state_change_detection.ino
im Pfad3in1-kit\basic_project\5.3.state_change_detection
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, drücken Sie den Knopf und der Motor wird sich drehen; bis Sie den Knopf erneut drücken, wird der Motor stoppen.
Wie funktioniert das?
Variablen erstellen und Pins für den Motor und den Knopf definieren.
... int detectionState = 0; int buttonState = 0; int lastButtonState = 0;
detectionState
ist ein Flag, dessen Wert bei jedem Tastendruck geändert wird, z.B. 0 dieses Mal, 1 beim nächsten Mal, und so weiter im Wechsel.buttonState
undlastButtonState
werden verwendet, um den aktuellen und den letzten Zustand des Knopfes zu speichern, um zu vergleichen, ob der Knopf gedrückt oder losgelassen wurde.
Jeden Pin initialisieren und die Baudrate des seriellen Monitors festlegen.
void setup() { pinMode(buttonPin, INPUT); Serial.begin(9600); pinMode(motorPinA,OUTPUT); pinMode(motorPinB,OUTPUT); }
Zuerst den Zustand des Knopfes lesen, und wenn der Knopf gedrückt wird, wechselt die Variable
detectionState
ihren Wert von 0 auf 1 oder von 1 auf 0. WenndetectionState
1 ist, wird der Motor eingeschaltet. Das hat den Effekt, dass der Motor beim ersten Drücken des Knopfes startet, beim nächsten Drücken stoppt und so weiter im Wechsel.void loop() { // Toggle the detectionState each time the button is pressed buttonState = digitalRead(buttonPin); if (buttonState != lastButtonState) { if (buttonState == HIGH) { detectionState=(detectionState+1)%2; Serial.print("The detection state is: "); Serial.println(detectionState); } delay(50); } lastButtonState = buttonState; // According to the detectionState, start the motor if(detectionState==1){ digitalWrite(B_1A,HIGH); digitalWrite(B_1B,LOW); }else{ digitalWrite(B_1A,LOW); digitalWrite(B_1B,LOW); } }
Der gesamte Arbeitsablauf ist wie folgt.
Den Knopfwert lesen.
buttonState = digitalRead(buttonPin);
Wenn
buttonState
undlastButtonState
nicht gleich sind, bedeutet dies, dass sich der Knopfzustand geändert hat. Fahren Sie mit der nächsten Beurteilung fort und speichern Sie den Knopfzustand zu diesem Zeitpunkt in der VariablelastButtonState
.delay(50)
wird verwendet, um Jitter zu eliminieren.
if (buttonState != lastButtonState) { ... delay(50); } lastButtonState = buttonState;
Wenn der Knopf gedrückt wird, ist sein Wert HIGH. Hier, wenn der Knopf gedrückt wird, wird der Wert der Variable
detectionState
geändert, z.B. nach einer Operation von 0 auf 1.
if (buttonState == HIGH) { detectionState=(detectionState+1)%2; Serial.print("The detection state is: "); Serial.println(detectionState); }
Wenn die Variable
detectionState
1 ist, lässt den Motor drehen, ansonsten stoppen.
if(detectionState==1){ digitalWrite(motorPinA,HIGH); digitalWrite(motorPinB,LOW); }else{ digitalWrite(motorPinA,LOW); digitalWrite(motorPinB,LOW); }
5.4 Intervall¶
Manchmal müssen Sie zwei Dinge gleichzeitig tun. Zum Beispiel möchten Sie
vielleicht eine LED blinken lassen, während Sie einen Tastendruck lesen. In diesem Fall können Sie
nicht delay()
verwenden, weil Arduino Ihr Programm während des delay()
anhält. Wenn
die Taste gedrückt wird, während Arduino auf das Ende des delay()
wartet, wird Ihr Programm den Tastendruck übersehen.
Ein Vergleich wäre, eine Pizza in Ihrer Mikrowelle aufzuwärmen und gleichzeitig
auf eine wichtige E-Mail zu warten. Sie legen die Pizza in die Mikrowelle und stellen
sie auf 10 Minuten. Das Analogon zur Verwendung von delay()
wäre, vor der Mikrowelle zu sitzen und den Timer von 10 Minuten herunterzählen zu sehen, bis
der Timer null erreicht. Wenn die wichtige E-Mail in dieser Zeit ankommt,
werden Sie sie verpassen.
Was Sie im wirklichen Leben tun würden, wäre die Pizza einzuschalten, dann Ihre E-Mails zu überprüfen und dann vielleicht etwas anderes zu tun (das nicht zu lange dauert!) und von Zeit zu Zeit würden Sie zur Mikrowelle zurückkommen, um zu sehen, ob der Timer null erreicht hat, was bedeutet, dass Ihre Pizza fertig ist.
Dieses Sketch zeigt, wie man einen Summer ohne Verwendung von delay()
tönt.
Es schaltet den Summer ein und notiert dann die Zeit. Dann überprüft es bei jedem Durchlauf durch loop()
, ob das gewünschte Intervall vergangen ist.
Wenn dies der Fall ist, tönt es den Summer und notiert die neue Zeit.
Auf diese Weise tönt der Summer kontinuierlich, während die Sketch-Ausführung nie
an einer einzigen Anweisung hängen bleibt.
Aufgrund dieses Zustands können wir den Code der Taste hinzufügen, um die LED zu steuern, sie wird nicht durch den Summer, der Musik spielt, gestört.
Erforderliche Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.4.interval.ino
unter dem Pfad3in1-kit\basic_project\5.4.interval
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, wird der Summer Musik abspielen; jedes Mal, wenn Sie den Knopf drücken, leuchtet die LED auf. Die Funktion von LED und Summer stört sich nicht gegenseitig.
Wie funktioniert es?
Initialisieren Sie eine Variable namens previousMillis
, um die vorherige Betriebszeit des Mikrocontrollers zu speichern.
unsigned long previousMillis = 0;
Markieren Sie, welche Note gespielt wird.
int thisNote=0;
Das Intervall jeder Note.
long interval = 1000;
In loop()
, deklarieren Sie currentMillis
, um die aktuelle Zeit zu speichern.
unsigned long currentMillis = millis();
Wenn das Intervall zwischen der aktuellen Betriebszeit und der letzten Aktualisierungszeit größer als 1000ms ist, werden bestimmte Funktionen ausgelöst. Aktualisieren Sie gleichzeitig die previousMillis auf die aktuelle Zeit für das nächste Auslösen, das 1 Sekunde später erfolgen soll.
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;// speichern Sie die letzte Zeit des letzten Tons
//...
}
Spielen Sie die Noten der Melodie nacheinander ab.
tone(buzzerPin,melody[thisNote],100);
interval=1000/noteDurations[thisNote]; // Intervall zum Tönen
thisNote=(thisNote+1)%(sizeof(melody)/2); // Iterieren über die Noten der Melodie
Der Knopf steuert die LED.
// Knopf & LED steuern
digitalWrite(ledPin,digitalRead(buttonPin));
5.5 Interne Bibliothek verwenden¶
In der Arduino IDE können Sie viele eingebaute Bibliotheken nutzen, indem Sie die entsprechende .h
Datei direkt in Ihren Code einfügen.
In diesem Projekt wird die Servo
Bibliothek verwendet, um das Servo anzusteuern, damit es sich zwischen 0° und 180° drehen kann.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

In diesem Projekt verwenden wir den PWM-Pin 9, um das Servo anzusteuern. Das orangefarbene Kabel des Servos wird mit dem PWM-Pin 9 verbunden, das rote mit 5V und das braune mit GND.
Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.5.use_internal_library.ino
unter dem Pfad3in1-kit\basic_project\5.5.use_internal_library
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem Sie die Codes auf das R3-Board hochgeladen haben, können Sie sehen, wie der Servoarm sich im Bereich von 0° bis 180° dreht.
Wie funktioniert das?
Durch den Aufruf der Bibliothek Servo.h
können Sie das Servo einfach steuern.
#include <Servo.h>
Bibliotheksfunktionen:
Servo
Erstellen Sie ein Servo Objekt, um ein Servo zu steuern.
uint8_t attach(int pin);
Rufen Sie pinMode()
auf, um einen Pin zu einem Servotreiber zu machen und geben Sie 0 bei Fehlern zurück.
void detach();
Geben Sie einen Pin vom Servo-Antrieb frei.
void write(int value);
Stellen Sie den Winkel des Servos in Grad ein, von 0 bis 180.
int read();
Geben Sie den mit dem letzten write()
gesetzten Wert zurück.
bool attached();
Gibt 1 zurück, wenn das Servo aktuell angeschlossen ist.
5.6 Karte (Map)¶
Wenn Sie genau hinsehen, werden Sie feststellen, dass viele Werte in der Programmierung unterschiedliche Bereiche haben. Zum Beispiel liegt der Wertebereich für analoge Eingänge bei (0~1023). Der Wertebereich für den analogen Ausgang liegt bei (0~255). Der Ausgabewinkel des Servos liegt bei (0~180).
Das bedeutet, wenn wir das Potentiometer verwenden möchten, um die Helligkeit der LED oder den Winkel des Servos zu steuern, müssen wir eine Zuordnungsoperation durchführen.
Lassen Sie uns nun sehen, wie das erreicht werden kann.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENEINFÜHRUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.6.map.ino
im Pfad3in1-kit\basic_project\5.6.map
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, können Sie das Potentiometer hin und her drehen, und die Ausgangswelle des Servos wird hin und her drehen.
Wie funktioniert das?
map(value, fromLow, fromHigh, toLow, toHigh)
: Ordne eine Zahl von einem Bereich einem anderen zu.
Das heißt, ein fromLow-Wert wird zu toLow zugeordnet und ein fromHigh-Wert zu toHigh.
- Syntax
map(value, fromLow, fromHigh, toLow, toHigh)
- Parameter
value
: die zuzuordnende Zahl.
fromLow
: die untere Grenze des aktuellen Wertebereichs.
fromHigh
: die obere Grenze des aktuellen Wertebereichs.
toLow
: die untere Grenze des Zielwertebereichs.
toHigh
: die obere Grenze des Zielwertebereichs.
Wenn das Potentiometer die LED steuert, können Sie auch die Zuordnung verwenden, um die Aufgabe zu erfüllen.
int x = analogRead(knob);
int y = map(x,0,1023,0,255);
analogWrite(led,y);
Anmerkungen und Warnungen
Die „untere Grenze“ beider Bereiche kann größer oder kleiner als die „obere Grenze“ sein, was bedeutet, dass die
map()
Funktion verwendet werden kann, um einen Zahlenbereich umzukehren.y = map(x,0,180,180,0);
Die Zuordnung funktioniert auch gut für negative Zahlen.
y = map(x,0,1023,-90,90);
Die Zuordnung verwendet Ganzzahlen und die Dezimalstellen von Fließkommazahlen werden verworfen.
5.7 Tone()
oder noTone()
¶
Tone()
wird verwendet, um eine Rechteckwelle der angegebenen Frequenz (und 50% Tastverhältnis) an einem Pin zu erzeugen. Es kann eine Dauer angegeben werden, ansonsten wird die Welle fortgesetzt, bis ein Aufruf von noTone()
erfolgt.
In diesem Projekt verwenden Sie diese beiden Funktionen, um den passiven Summer zum Schwingen und somit zum Tönen zu bringen. Wie der aktive Summer nutzt auch der passive Summer das Phänomen der elektromagnetischen Induktion für seine Funktion. Der Unterschied besteht darin, dass ein passiver Summer keine Oszillationsquelle besitzt, weshalb er bei Verwendung von Gleichstromsignalen nicht piepst. Dies ermöglicht es jedoch dem passiven Summer, seine eigene Oszillationsfrequenz anzupassen und verschiedene Töne wie „doh, re, mi, fa, sol, la, ti“ auszugeben.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verbinden Sie die Kathode des Summers mit GND und die Anode mit dem digitalen Pin 9.
Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
5.7.tone_notone.ino
im Pfad3in1-kit\basic_project\5.7.tone_notone
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Wenn Sie den Code erfolgreich auf das R3-Board hochgeladen haben, können Sie eine Melodie aus sieben Tönen hören.
Wie funktioniert das?
Es gibt zwei Punkte, die Sie beachten sollten:
tone()
&noTone()
: Diese Funktion wird verwendet, um den Ton des passiven Summers direkt zu steuern. Der Prototyp lautet:
- Syntax
void tone(int pin, unsigned int frequency)
void tone(int pin, unsigned int frequency, unsigned long duration)
- Parameter
pin
: Der Arduino-Pin, an dem der Ton erzeugt wird.frequency
: Die Frequenz des Tons in Hertz.duration
: Die Dauer des Tons in Millisekunden (optional)
Erzeugt eine Rechteckwelle der angegebenen Frequenz (und 50% Tastverhältnis) an einem Pin, damit der passive Summer klingt. Die Welle geht weiter, bis ein Aufruf von noTone()
erfolgt.
Der Pin kann mit einem Piezo-Summer oder einem anderen Lautsprecher verbunden werden, um Töne zu erzeugen.
Es kann nur ein Ton gleichzeitig erzeugt werden. Wenn bereits ein Ton auf einem anderen Pin abgespielt wird, hat der Aufruf von tone()
keinen Effekt. Wenn der Ton auf demselben Pin abgespielt wird, wird seine Frequenz eingestellt.
Die Verwendung der tone()
-Funktion beeinträchtigt die PWM-Ausgabe an den Pins 3 und 11.
Es ist nicht möglich, Töne unter 31Hz zu erzeugen.
- Syntax
void noTone(int pin)
- Parameter
pin
: Der Arduino-Pin, an dem der Ton erzeugt wird.
Stoppt die Erzeugung einer durch tone()
ausgelösten Rechteckwelle. Hat keinen Effekt, wenn kein Ton erzeugt wird.
Nachdem Sie die beiden Funktionen kennen, sollten Sie den Code verstehen können. Die Installation der Arrays melody[]
und noteDurations[]
bereitet die anschließenden Aufrufe der Funktion tone()
und die Änderung von Ton und Dauer in der Schleife für einen besseren Musikeffekt vor.
pitches.h
: Der Code verwendet eine zusätzliche Datei namenspitches.h
. Diese Datei enthält alle Tonwerte für typische Noten. Zum Beispiel entspricht NOTE_C4 dem mittleren C. NOTE_FS4 ist Fis und so weiter. Diese Notentabelle wurde ursprünglich von Brett Hagman verfasst, auf dessen Arbeit der Befehltone()
basiert. Sie könnte nützlich sein, wenn Sie musikalische Noten erzeugen möchten.
#include "pitches.h"
Bemerkung
In diesem Beispielprogramm gibt es bereits eine Datei pitches.h
. Wenn Sie sie zusammen mit dem Hauptcode in einem Ordner ablegen, können die nachfolgenden Schritte zur Installation von pitches.h
weggelassen werden.

Wenn Sie die Code-Datei öffnen und die pitches.h
Datei nicht öffnen können, können Sie sie manuell erstellen. Die Schritte sind wie folgt:
Um die Datei pitches.h
zu erstellen, klicken Sie entweder auf die Schaltfläche direkt unter dem Symbol für den seriellen Monitor und wählen Neuer Tab oder verwenden Sie Ctrl+Shift+N.

Dann fügen Sie den folgenden Code ein und speichern ihn als pitches.h
:
/*****************
Public Constants
*****************/
#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 49
5.8 Benutzerdefinierte Funktion¶
In C können wir ein großes Programm in die grundlegenden Bausteine unterteilen, die als Funktion bekannt sind. Die Funktion enthält eine Menge von Programmieranweisungen, die von {} eingeschlossen sind. Eine Funktion kann mehrmals aufgerufen werden, um Wiederverwendbarkeit und Modularität im C-Programm zu ermöglichen. Mit anderen Worten, eine Sammlung von Funktionen bildet ein Programm. In anderen Programmiersprachen ist die Funktion auch als Prozedur oder Unterprogramm bekannt.
Die folgenden Vorteile ergeben sich durch die Nutzung von Funktionen:
Mit Funktionen können wir vermeiden, dieselbe Logik/den gleichen Code in einem Programm immer wieder neu zu schreiben.
Wir können C-Funktionen beliebig oft und von überall in einem Programm aufrufen.
Ein großes C-Programm lässt sich leichter verfolgen, wenn es in mehrere Funktionen unterteilt ist.
Wiederverwendbarkeit ist das Hauptziel von C-Funktionen.
Dennoch stellt der Aufruf von Funktionen immer eine Belastung in einem C-Programm dar.
In der C-Programmierung gibt es zwei Arten von Funktionen:
Bibliotheksfunktionen: Funktionen, die in den C-Headerdateien deklariert sind.
Benutzerdefinierte Funktionen: Funktionen, die vom C-Programmierer erstellt werden, so dass er/sie sie mehrmals verwenden kann. Dies reduziert die Komplexität eines großen Programms und optimiert den Code.
In diesem Projekt definieren wir eine Funktion, um den Wert des Ultraschallmoduls auszulesen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Die Komponenten können auch einzeln über die folgenden Links erworben werden:
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.8.user_function.ino
im Pfad3in1-kit\basic_project\5.8.user_function
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nach erfolgreichem Hochladen des Codes wird der serielle Monitor die Entfernung zwischen dem Ultraschallsensor und dem Hindernis vor ihm anzeigen.
Wie funktioniert das?
Zur Anwendung des Ultraschallsensors können wir direkt die Unterfunktion überprüfen.
float readSensorData(){// ...}
Das trigPin
des Ultraschallmoduls sendet alle 2us ein 10us Quadratsignal.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
Das echoPin
empfängt ein High-Level-Signal, wenn sich ein Hindernis im Bereich befindet, und verwendet die Funktion pulseIn()
um die Zeit vom Senden bis zum Empfangen aufzuzeichnen.
microsecond=pulseIn(echoPin, HIGH);
Die Schallgeschwindigkeit beträgt 340 m/s oder 29 Mikrosekunden pro Zentimeter.
Das ergibt die vom Quadratsignal zurückgelegte Entfernung, sowohl hin als auch zurück, daher teilen wir durch 2, um die Entfernung des Hindernisses zu ermitteln.
float distance = microsecond / 29.00 / 2;
Beachten Sie, dass der Ultraschallsensor das Programm anhält, wenn er arbeitet, was bei komplexen Projekten zu Verzögerungen führen kann.
5.9 ShiftOut(LED)¶
shiftOut()
lässt 74HC595 8 digitale Signale ausgeben. Das letzte Bit der Binärzahl wird an Q0 und das erste Bit an Q7 ausgegeben. In anderen Worten, wenn man die Binärzahl „00000001“ schreibt, wird Q0 auf hohem Niveau ausgegeben und Q1~Q7 auf niedrigem Niveau.
In diesem Projekt lernen Sie, wie man den 74HC595 verwendet. 74HC595 besteht aus einem 8-Bit-Schieberegister und einem Speicherregister mit dreizuständigen parallelen Ausgängen. Er wandelt serielle Eingaben in parallele Ausgaben um, sodass Sie IO-Ports eines MCU sparen können.
Insbesondere kann der 74hc595 durch Schreiben einer 8-Bit-Binärzahl 8 Pins für die digitale Signalabgabe ersetzen.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENEINFÜHRUNG |
KAUF-LINK |
---|---|
Schaltplan

Wenn MR (Pin10) auf hohem Niveau und OE (Pin13) auf niedrigem Niveau ist, wird Daten im ansteigenden Flanken von SHcp eingegeben und gelangt durch den ansteigenden Flanken von SHcp ins Speicherregister.
Wenn die beiden Uhren miteinander verbunden sind, ist das Schieberegister immer einen Puls vor dem Speicherregister.
Im Speicherregister gibt es einen seriellen Shift-Eingangspin (Ds), einen seriellen Ausgangspin (Q) und einen asynchronen Reset-Button (niedriges Niveau).
Das Speicherregister gibt einen Bus mit einem parallelen 8-Bit und in drei Zuständen aus.
Wenn OE aktiviert ist (niedriges Niveau), werden die Daten im Speicherregister auf den Bus (Q0 ~ Q7) ausgegeben.
Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.9.shiftout_led.ino
im Pfad3in1-kit\basic_project\5.9.shiftout_led
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem Sie den Code erfolgreich auf das R3-Board hochgeladen haben, sehen Sie, dass die LEDs nacheinander leuchten.
Wie funktioniert das?
Deklarieren Sie ein Array und speichern Sie mehrere 8-Bit-Binärzahlen, die verwendet werden, um den Arbeitszustand der acht von 74HC595 gesteuerten LEDs zu ändern.
int datArray[] = {B00000000, B00000001, B00000011, B00000111, B00001111, B00011111, B00111111, B01111111, B11111111};
Zuerst STcp
auf niedriges Niveau setzen und dann auf hohes Niveau.
Dies erzeugt eine ansteigende Flanke von STcp.
digitalWrite(STcp,LOW);
shiftOut()
wird verwendet, um ein Byte Daten bitweise auszugeben.
Das bedeutet, ein Byte Daten in datArray[num]
mit dem DS
-Pin in das Schieberegister zu verschieben. MSBFIRST bedeutet, von den hohen Bits zu verschieben.
shiftOut(DS,SHcp,MSBFIRST,datArray[num]);
Nach digitalWrite(STcp,HIGH)
wird STcp
im ansteigenden Takt sein.
Zu diesem Zeitpunkt werden die Daten im Schieberegister ins Speicherregister verschoben.
digitalWrite(STcp,HIGH);
Ein Byte Daten wird nach 8 Mal in das Speicherregister übertragen.
Dann werden die Daten des Speicherregisters auf den Bus (Q0-Q7) ausgegeben.
Zum Beispiel wird B00000001
die von Q0 gesteuerte LED einschalten und die von Q1~Q7 gesteuerten LEDs ausschalten.
5.10 ShiftOut(Segmentanzeige)¶
In einem früheren Beispiel haben wir die Funktion shiftout()
verwendet, um acht LEDs zu beleuchten. Hier verwenden wir sie, um die Zahlen 0-9 auf der 7-Segment-Anzeige darzustellen.
Die 7-Segment-Anzeige ist im Grunde ein Gerät, das aus 8 LEDs besteht. 7 davon sind streifenförmige LEDs, die eine „8“ formen, und es gibt eine etwas kleinere LED als Dezimalpunkt. Diese LEDs sind als a, b, c, d, e, f, g und dp markiert. Sie verfügen über eigene Anoden-Pins und teilen sich Kathoden. Ihre Pin-Positionen sind in der untenstehenden Abbildung dargestellt.

Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Bauteile.
Es ist durchaus praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die folgenden Links erwerben.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung
74HC595 |
LED Segmentanzeige |
---|---|
Q0 |
a |
Q1 |
b |
Q2 |
c |
Q3 |
d |
Q4 |
e |
Q5 |
f |
Q6 |
g |
Q7 |
dp |

Code
Bemerkung
Öffnen Sie die Datei
5.10.shiftout_segment.ino
im Pfad3in1-kit\basic_project\5.10.shiftout_segment
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, können Sie beobachten, wie die LED Segmentanzeige die Zahlen 0~9 nacheinander anzeigt.
Wie funktioniert das?
shiftOut()
lässt den 74HC595 8 digitale Signale ausgeben.
Es gibt das letzte Bit der Binärzahl an Q0 aus
und das erste Bit an Q7. Das bedeutet,
dass das Schreiben der Binärzahl „00000001“ dazu führt, dass Q0 ein hohes Signal und Q1~Q7 ein niedriges Signal ausgibt.
Angenommen, die 7-Segment-Anzeige zeigt die Zahl „2“ an, wir müssen ein hohes Signal für a, b, d, e und g schreiben und ein niedriges Signal für c, f und dp. Das bedeutet, die Binärzahl „01011011“ muss geschrieben werden. Zur besseren Lesbarkeit verwenden wir die hexadezimale Notation als „0x5b“.

Ebenso können wir die 7-Segment-Anzeige auf die gleiche Weise andere Zahlen anzeigen lassen. Die folgende Tabelle zeigt die Codes, die diesen Zahlen entsprechen.
Zahlen |
Binär Code |
Hex Code |
---|---|---|
0 |
00111111 |
0x3f |
1 |
00000110 |
0x06 |
2 |
01011011 |
0x5b |
3 |
01001111 |
0x4f |
4 |
01100110 |
0x66 |
5 |
01101101 |
0x6d |
6 |
01111101 |
0x7d |
7 |
00000111 |
0x07 |
8 |
01111111 |
0x7f |
9 |
01101111 |
0x6f |
Geben Sie diese Codes in shiftOut()
ein, um die LED Segmentanzeige die entsprechenden Zahlen anzeigen zu lassen.
5.11 Externe Bibliotheken installieren¶
Eine Bibliothek ist eine Sammlung von vorgeschriebenem Code oder Funktionen, die die Fähigkeiten der Arduino IDE erweitern. Bibliotheken bieten sofort einsatzbereiten Code für verschiedene Funktionen und ermöglichen es Ihnen, Zeit und Aufwand beim Programmieren komplexer Features zu sparen.
Es gibt zwei Hauptwege, Bibliotheken zu installieren:
Viele Bibliotheken sind direkt über den Arduino Library Manager verfügbar. Sie können den Library Manager mit den folgenden Schritten aufrufen:
Im Library Manager können Sie nach der gewünschten Bibliothek suchen, indem Sie den Namen eingeben oder durch verschiedene Kategorien blättern.
Bemerkung
In Projekten, bei denen die Installation von Bibliotheken erforderlich ist, gibt es Hinweise, welche Bibliotheken zu installieren sind. Befolgen Sie die bereitgestellten Anweisungen, wie zum Beispiel „Die
DHT-Sensor-Bibliothek
wird hier verwendet, Sie können sie aus dem Library Manager installieren.“ Installieren Sie einfach die empfohlenen Bibliotheken wie angegeben.Sobald Sie die zu installierende Bibliothek gefunden haben, klicken Sie darauf und anschließend auf den Install-Button.
Die Arduino IDE wird die Bibliothek automatisch für Sie herunterladen und installieren.
Verwandte Komponenten
Im Folgenden finden Sie die verwandten Komponenten. Sie können darauf klicken, um zu erfahren, wie Sie diese verwenden.
5.11.1 Flüssigkristallanzeige¶
Ein I2C LCD1602 setzt sich aus einem LCD1602 und einem I2C-Modul zusammen. Das LCD1602 kann zur Anzeige von Zeichen, Zahlen usw. verwendet werden, benötigt jedoch viele Pins des Hauptcontrollers. Nach der Konfiguration eines I2C-Moduls sind nur noch 2 I/O-Pins erforderlich, um dieses LCD1602 anzusteuern.
Sehen wir uns nun an, wie dieses I2C LCD1602 funktioniert.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten:
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Bemerkung
Die SDA- und SCL-Pins des R3-Boards entsprechen den Pins A4 und A5.
Code
Bemerkung
Öffnen Sie die Datei
5.11.liquid_crystal_display.ino
unter dem Pfad3in1-kit\basic_project\5.11.liquid_crystal_display
.Oder kopieren Sie diesen Code in die Arduino IDE.
Hier wird die
LiquidCrystal I2C
-Bibliothek verwendet, die Sie aus dem Library Manager installieren können.
Nach erfolgreichem Hochladen des Codes werden Sie „SunFounder“, „Hallo Welt“ auf dem I2C LCD1602 sehen.
Bemerkung
Wenn der Code und die Verdrahtung korrekt sind, das LCD aber dennoch nichts anzeigt, können Sie das Potentiometer auf der Rückseite drehen.
Wie funktioniert das?
Durch den Aufruf der Bibliothek LiquidCrystal_I2C.h
können Sie das LCD einfach ansteuern.
#include "LiquidCrystal_I2C.h"
Bibliotheksfunktionen:
LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows)
Erstellt eine neue Instanz der Klasse LiquidCrystal_I2C
, die ein bestimmtes LCD repräsentiert, das an Ihr Arduino-Board angeschlossen ist.
lcd_AddR
: Die Adresse des LCD ist standardmäßig auf 0x27 eingestellt.lcd_cols
: Das LCD1602 verfügt über 16 Spalten.lcd_rows
: Das LCD1602 verfügt über 2 Zeilen.
void init()
Initialisiert das LCD.
void backlight()
Schaltet die (optionale) Hintergrundbeleuchtung ein.
void nobacklight()
Schaltet die (optionale) Hintergrundbeleuchtung aus.
void display()
Schaltet das LCD-Display ein.
void nodisplay()
Schaltet das LCD-Display schnell aus.
void clear()
Löscht die Anzeige und setzt die Cursorposition auf Null.
void setCursor(uint8_t col,uint8_t row)
Setzt die Cursorposition auf col,row.
void print(data,BASE)
Gibt Text auf dem LCD aus.
data
: Die auszugebenden Daten (char, byte, int, long oder string).BASE (optional)
: Die Basis, in der Zahlen gedruckt werden sollen: BIN für binär (Basis 2), DEC für dezimal (Basis 10), OCT für oktal (Basis 8), HEX für hexadezimal (Basis 16).
5.11.2 IR-Empfänger¶
In diesem Projekt lernen Sie, wie Sie einen IR-Empfänger verwenden.
Ein Infrarot-Empfänger ist eine Komponente, die Infrarotsignale empfängt. Er kann Infrarotstrahlen eigenständig empfangen und Signale ausgeben, die mit dem TTL-Level kompatibel sind. Er ähnelt von der Größe her einem normal verpackten Transistor und eignet sich für alle Arten von Infrarot-Fernbedienungen und Infrarotübertragungen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltplan

Verkabelung
In diesem Beispiel verbinden wir den linken Pin des IR-Empfängers mit Pin 11, den mittleren Pin mit GND und den rechten Pin mit 5V.

Code
Bemerkung
Öffnen Sie die Datei
5.11.ir_receiver.ino
unter dem Pfad3in1-kit\basic_project\5.11.ir_receiver
.Oder kopieren Sie diesen Code in die Arduino IDE.
Hier wird die Bibliothek
IRremote
verwendet. Sie können sie über den Library Manager installieren.
Nachdem Sie die Codes auf das R3-Board hochgeladen haben, können Sie den aktuellen Wert der gedrückten Taste der IR-Fernbedienung auf dem Seriellen Monitor anzeigen lassen.
Wie funktioniert das?
Dieser Code ist für die Verwendung mit einer Infrarot (IR) Fernbedienung und der IRremote
Bibliothek entwickelt. Hier ist die Erklärung:
Einbindung von Bibliotheken: Dies beinhaltet die
IRremote
Bibliothek, welche Funktionen zur Arbeit mit IR-Fernbedienungen bereitstellt.#include <IRremote.h>
Definiert den Arduino-Pin, an den der Signal-Pin des IR-Sensors angeschlossen ist.
const int IR_RECEIVE_PIN = 11; // Pinnummer für den IR-Sensor definieren
Initialisiert die serielle Kommunikation mit einer Baudrate von 9600. Initialisiert den IR-Empfänger am angegebenen Pin (
IR_RECEIVE_PIN
) und aktiviert die LED-Rückmeldung (falls zutreffend).void setup() { Serial.begin(9600); // Serielle Kommunikation mit 9600 Baudrate starten IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // IR-Empfänger starten
Die Schleife läuft kontinuierlich, um eingehende IR-Fernbedienungssignale zu verarbeiten.
void loop() { if (IrReceiver.decode()) { String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command); if (decodedValue != "ERROR") { Serial.println(decodedValue); delay(100); } IrReceiver.resume(); // Enable receiving of the next value } }
Überprüft, ob ein IR-Signal empfangen und erfolgreich decodiert wurde.
Decodiert den IR-Befehl und speichert ihn in
decodedValue
mit einer benutzerdefinierten FunktiondecodeKeyValue()
.Überprüft, ob der decodierte Wert kein Fehler ist.
Gibt den decodierten IR-Wert auf dem seriellen Monitor aus.
Setzt den IR-Signalempfang für das nächste Signal fort.
5.11.3 Temperatur - Luftfeuchtigkeit¶
Temperatur und Luftfeuchtigkeit sind sowohl von der physikalischen Größe her als auch im täglichen Leben der Menschen eng miteinander verbunden. Die Temperatur und Luftfeuchtigkeit unserer Umgebung beeinflusst direkt die thermoregulatorische Funktion und den Wärmeübertragungseffekt des menschlichen Körpers. Dies kann weiterhin die Denkaktivität und den mentalen Zustand beeinflussen und somit unsere Lern- und Arbeitsleistung beeinträchtigen.
Die Temperatur ist eine der sieben grundlegenden physikalischen Größen im Internationalen Einheitensystem und dient zur Messung des Wärmezustands eines Objekts. Das Grad Celsius ist eine der weltweit am häufigsten verwendeten Temperaturskalen und wird durch das Symbol „℃“ ausgedrückt.
Die Luftfeuchtigkeit gibt die Konzentration des in der Luft enthaltenen Wasserdampfs an. Die relative Luftfeuchtigkeit, häufig im Alltag verwendet, wird in %RH ausgedrückt. Sie hängt eng mit der Temperatur zusammen. Für ein bestimmtes Volumen eingeschlossenen Gases gilt: Je höher die Temperatur, desto niedriger die relative Luftfeuchtigkeit und umgekehrt.

Das im Kit enthaltene dht11 ist ein digitaler Temperatur- und Luftfeuchtigkeitssensor. Er nutzt einen kapazitiven Feuchtigkeitssensor und einen Thermistor, um die Umgebungsluft zu messen und gibt ein digitales Signal am Datenpin aus.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltplan

Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.11.temperature_humidity.ino
im Pfad3in1-kit\basic_project\5.11.temperature_humidity
.Oder kopieren Sie diesen Code in die Arduino IDE.
Hier wird die
DHT Sensorbibliothek
verwendet, die Sie im Library Manager installieren können.
Nachdem der Code erfolgreich hochgeladen wurde, werden Sie sehen, dass der Serielle Monitor kontinuierlich Temperatur und Luftfeuchtigkeit ausgibt. Mit fortschreitender Laufzeit des Programms werden diese Werte immer genauer.
Wie funktioniert das?
Fügt die
DHT.h
-Bibliothek hinzu, die Funktionen zur Interaktion mit den DHT-Sensoren bereitstellt. Anschließend legen Sie den Pin und den Typ für den DHT-Sensor fest.#include "DHT.h" #define DHTPIN 11 // Legt den mit dem DHT11-Datenpin verbundenen Pin fest #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE);
Initialisiert die serielle Kommunikation mit einer Baudrate von 115200 und initialisiert den DHT-Sensor.
void setup() { Serial.begin(115200); Serial.println("DHT11 Test!"); dht.begin(); }
In der Funktion
loop()
werden die Temperatur- und Luftfeuchtigkeitswerte vom DHT11-Sensor gelesen und auf dem seriellen Monitor ausgegeben.void loop() { // Wait a few seconds between measurements. delay(2000); // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor) float humidity = dht.readHumidity(); // Read temperature as Celsius (the default) float temperture = dht.readTemperature(); // Check if any reads failed and exit early (to try again). if (isnan(humidity) || isnan(temperture)) { Serial.println("Failed to read from DHT sensor!"); return; } // Print the humidity and temperature Serial.print("Humidity: "); Serial.print(humidity); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(temperture); Serial.println(" *C"); }
Die Funktion
dht.readHumidity()
wird aufgerufen, um den Luftfeuchtigkeitswert vom DHT-Sensor zu lesen.Die Funktion
dht.readTemperature()
wird aufgerufen, um den Temperaturwert vom DHT-Sensor zu lesen.Die Funktion
isnan()
wird verwendet, um zu überprüfen, ob die Messwerte gültig sind. Wenn entweder der Luftfeuchtigkeits- oder Temperaturwert NaN (keine Zahl) ist, zeigt dies ein fehlerhaftes Lesen des Sensors an, und eine Fehlermeldung wird ausgegeben.
5.12 Serielle Lektüre¶
Vielleicht haben Sie dies bemerkt, als Sie die Funktion Serial.print()
verwendet haben.
Da es eine Ausgabe gibt, gibt es auch eine Eingabe? Wofür ist das Textfeld im Seriellen Monitor?
Ja, Sie haben richtig geraten. Es gibt Möglichkeiten, Programme und Schaltungen durch Eingabe von Informationen über das Textfeld des seriellen Monitors zu steuern.
In diesem Projekt verwenden wir das I2C LCD1602, um den im Seriellen Monitor eingegebenen Text anzuzeigen und die Verwendung von Serial.read()
kennenzulernen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.12.serial_read.ino
unter dem Pfad3in1-kit\basic_project\5.12.serial_read
.Oder kopieren Sie diesen Code in die Arduino IDE.
Hier wird die Bibliothek
LiquidCrystal I2C
verwendet. Sie können sie aus dem Library Manager installieren.
Nachdem der Code erfolgreich hochgeladen wurde, können Sie Text in das Textfeld des seriellen Monitors eingeben, und das LCD zeigt die Informationen an.
Wie funktioniert das?
void loop() { // wenn Zeichen über die serielle Schnittstelle ankommen... if (Serial.available()) { // warten Sie kurz, damit die gesamte Nachricht ankommt delay(100); // den Bildschirm leeren lcd.clear(); // lesen Sie alle verfügbaren Zeichen while (Serial.available() > 0) { // zeigt jedes Zeichen auf dem LCD an lcd.write(Serial.read()); } } }
Serial.available()
kann die Anzahl der Zeichen in dem eingehenden Stream erhalten, wenn Sie etwas aus dem Textfeld eingeben. Da es in der Eingabe zwei Abschlusszeichen gibt, haben Sie tatsächlich 3 Zeichen, wenn SieA
eingeben und 4 Zeichen, wenn SieAB
eingeben.Serial.read()
nimmt das erste Zeichen aus dem eingehenden Stream. Wenn Sie zum BeispielAB
eingeben undSerial.read()
nur einmal aufrufen, erhalten Sie das ZeichenA
; Beim zweiten Aufruf erhalten SieB
; beim dritten und vierten Anruf erhalten Sie zwei Endsymbole; das Aufrufen dieser Funktion, wenn keine Zeichen im Eingabestream verfügbar sind, führt zu einem Fehler.
Zusammenfassend ist es üblich, die beiden oben genannten Funktionen zu kombinieren und mit einer while
-Schleife alle bei jedem Eingabevorgang eingegebenen Zeichen zu lesen.
while (Serial.available() > 0) { Serial.print(Serial.read()); }
Übrigens, wenn Sie Serial.read()
nicht verwenden, um Zeichen aus dem eingehenden Stream zu erhalten, werden die Zeichen des eingehenden Streams aufgestapelt. Zum Beispiel, wenn Sie A
gefolgt von AB
eingeben, wird der eingehende Stream 7 Zeichen anhäufen.
5.13 Unterbrechung¶
Wenn Sie in einem Projekt, das Sensoren verwendet, einige delay()
-Befehle nutzen, werden Sie vielleicht feststellen, dass bei Aktivierung dieser Sensoren das Programm eventuell keine Wirkung zeigt.
Dies liegt daran, dass die Verzögerungsanweisung das Programm anhält und das Programm das vom Sensor an die Hauptsteuerplatine gesendete Signal nicht erfassen kann.
In diesem Fall kann eine Unterbrechung (Interrupt) verwendet werden. Ein Interrupt stellt sicher, dass das Programm keinen Impuls verpasst.
In diesem Kapitel verwenden wir den aktiven Summer und Tasten, um den Prozess der Verwendung von Unterbrechungen zu erleben.
In der loop()
-Funktion wird delay(1000)
verwendet, um Sekunden zu zählen.
Legen Sie den Knopf, um den Summer zu steuern, in den ISR, sodass er nicht durch die Verzögerung gestört wird und die Aufgabe reibungslos ausgeführt werden kann.
Bemerkung
ISRs sind spezielle Funktionen mit einigen einzigartigen Einschränkungen, die die meisten anderen Funktionen nicht haben. Ein ISR kann keine Parameter haben und sollte nichts zurückgeben. Im Allgemeinen sollte ein ISR so kurz und schnell wie möglich sein. Wenn Ihr Skript mehrere ISRs verwendet, kann immer nur einer gleichzeitig ausgeführt werden. Andere Unterbrechungen werden nach Beendigung des aktuellen in einer Reihenfolge ausgeführt, die von ihrer Priorität abhängt.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF LINK |
---|---|
- |
Schaltplan

Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
5.13.interrupt.ino
im Pfad3in1-kit\basic_project\5.13.interrupt
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, schalten Sie den Serial Monitor ein und Sie werden sehen, dass jede Sekunde eine automatisch hochzählende Zahl ausgegeben wird. Wenn Sie den Knopf drücken, gibt der Summer einen Ton aus. Die Knopf-gesteuerte Summerfunktion und die Zeitfunktion beeinflussen einander nicht.
Wie funktioniert das?
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
: Fügt einen Interrupt hinzu.- Syntax
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode)
- Parameter
pin
: Die Arduino-Pinnummer. Sie solltendigitalPinToInterrupt(pin)
verwenden, um den eigentlichen Digitalpin in eine spezifische Interrupt-Nummer umzuwandeln. Wenn Sie zum Beispiel an Pin 3 anschließen, verwenden SiedigitalPinToInterrupt(3)
als ersten Parameter.ISR
: Der ISR, der aufgerufen wird, wenn der Interrupt auftritt; diese Funktion darf keine Parameter haben und nichts zurückgeben. Diese Funktion wird manchmal als Unterbrechungsbehandlungsroutine bezeichnet.mode
: definiert, wann der Interrupt ausgelöst werden soll. Vier Konstanten sind als gültige Werte vordefiniert:LOW
um den Interrupt auszulösen, wenn der Pin niedrig ist.CHANGE
um den Interrupt auszulösen, wenn sich der Pinwert ändert.RISING
um ihn auszulösen, wenn der Pin von niedrig zu hoch wechselt.FALLING
um ihn auszulösen, wenn der Pin von hoch zu niedrig wechselt.
Bemerkung
Verschiedene Hauptsteuerkarten können Interrupt-Pins unterschiedlich verwenden. Auf der R3-Platine können nur Pin 2 und Pin 3 Unterbrechungen verwenden.
5.14 Kalibrierung¶
Wenn Sie analoge Eingangskomponenten wie Fotowiderstände, Bodenfeuchtigkeitssensoren usw. verwenden, stellen Sie möglicherweise fest, dass ihr Messbereich nicht 0 bis 1023 beträgt, sondern eher Bereiche wie 0 bis 800 oder 600 bis 1000, da es bei normalem Gebrauch unmöglich ist, die Grenzen dieser Geräte zu erreichen.
In solchen Fällen kann eine Technik zur Kalibrierung der Sensoreingänge angewendet werden. Beim Start sollte das Steuerbrett die Sensorwerte für fünf Sekunden messen und die höchsten und niedrigsten Werte aufzeichnen. Dieser fünfsekündige Messwert definiert die erwarteten Mindest- und Höchstwerte der Messwerte während des Zyklus.
In diesem Projekt verwenden wir einen Fotowiderstand und einen passiven Summer, um ein Spiel ähnlich dem Theremin unter Verwendung der oben beschriebenen Kalibrierungstechnik zu implementieren.
Bemerkung
Das Theremin ist ein elektronisches Musikinstrument, das keinen physischen Kontakt erfordert. Es erzeugt unterschiedliche Töne, indem es die Position der Hände des Spielers erfasst.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die folgenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltbild

Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.14.calibration.ino
im Pfad3in1-kit\basic_project\5.14.calibration
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nach erfolgreichem Hochladen des Codes leuchtet die LED auf und wir haben 5 Sekunden Zeit, um den Erfassungsbereich des Fotowiderstands zu kalibrieren. Dies liegt daran, dass wir uns jedes Mal in einer anderen Lichtumgebung befinden könnten, wenn wir ihn verwenden (z.B. unterscheidet sich die Lichtintensität zwischen Mittag und Dämmerung).
In dieser Zeit sollten wir unsere Hände über dem Fotowiderstand auf und ab bewegen, und der Bewegungsbereich der Hand wird auf den Spielbereich dieses Instruments kalibriert.
Nach 5 Sekunden erlischt die LED und wir können mit unseren Händen über dem Fotowiderstand schwingen, um zu spielen.
Wie funktioniert das?
Legen Sie die Anfangswerte und Pins aller Komponenten fest.
const int buzzerPin = 9; const int ledPin = 8; const int photocellPin = A0; // Fotowiderstand ist an A2 angeschlossen int lightLow = 1023; int lightHigh = 0; int sensorValue = 0; // vom Sensor gelesener Wert int pitch = 0; // Sensorwert in LED-'Balken' umgewandelt unsigned long previousMillis = 0; const long interval = 5000;
Richten Sie einen Kalibrierungsprozess in
setup()
ein.void setup() { pinMode(buzzerPin, OUTPUT); // machen Sie alle LED-Pins zu Outputs pinMode(ledPin, OUTPUT); // Den LED-Pin-Ausgang erstellen /* kalibriere die Maximal- und Minimalwerte des Fotowiderstands */ previousMillis = millis(); digitalWrite(ledPin, HIGH); while (millis() - previousMillis <= interval) { sensorValue = analogRead(photocellPin); if (sensorValue > lightHigh) { lightHigh = sensorValue; } if (sensorValue < lightLow) { lightLow = sensorValue; } } digitalWrite(ledPin, LOW); }
Der Arbeitsablauf ist wie folgt:
Verwendung von
millis()
für die Zeitmessung mit einem Intervall von 5000 ms.
previousMillis = millis(); ... while (millis() - previousMillis <= interval) { ... }
Während dieser fünf Sekunden, bewegen Sie Ihre Hand um den Fotowiderstand. Die maximalen und minimalen Werte des erkannten Lichts werden erfasst und den Variablen
lightHigh
undlightLow
entsprechend zugewiesen.
sensorValue = analogRead(photocellPin); if (sensorValue > lightHigh) { lightHigh = sensorValue; } if (sensorValue < lightLow) { lightLow = sensorValue; }
Jetzt können Sie dieses Theremin spielen. Lesen Sie den Wert des Fotowiderstands in
sensorValue
und übertragen Sie ihn von einem kleinen Bereich in einen großen Bereich, um ihn als Frequenz des Buzzers zu verwenden.void loop() { /* spielen */ sensorValue = analogRead(photocellPin); // Wert von A0 lesen pitch = map(sensorValue, lightLow, lightHigh, 50, 6000); // auf die Buzzer-Frequenz abbilden if (pitch > 50) { tone(buzzerPin, pitch, 20); } delay(10); }
5.15 EEPROM¶
EEPROM ist ein Speicher, dessen Daten nicht gelöscht werden, wenn das Hauptsteuerungsboard ausgeschaltet wird. Sie können es verwenden, um einige Daten zu speichern und diese beim nächsten Einschalten wieder abzurufen.
Als Beispiel könnten Sie einen Sportzähler erstellen, der verfolgt, wie oft Sie täglich Seil springen.
Sie können auch in einem Programm Daten darauf schreiben und in einem anderen Programm daraus lesen. Wenn Sie beispielsweise an einem Autoprojekt arbeiten und die Geschwindigkeiten der beiden Motoren nicht übereinstimmen, können Sie ein Kalibrierungsprogramm schreiben, um den Kompensationswert der Motorgeschwindigkeit zu speichern.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die folgenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Code
Bemerkung
Öffnen Sie die Datei
5.15.eeproom.ino
im Pfad3in1-kit\basic_project\5.15.eeproom
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Um diese Schaltung zu verwenden, drücken Sie einfach den Knopf, um die Aufnahme zu starten, und geben die gewünschten Informationen über ein Potentiometer ein. Nun wird das Board Ihre Aktionen endlos wiederholen (und bei jeder Iteration blinkt eine LED), bis Sie den Knopf erneut drücken, um neue Aktionen aufzunehmen. Sie können auch die Aufnahmezeit variieren, indem Sie die Werte von Auflösung und Aufnahmezeit ändern.
Wie funktioniert das?
Importieren Sie die Bibliothek
EEPROM.h
und initialisieren Sie den EEPROM-Speicher.... #include <EEPROM.h>//wird verwendet, um aufgezeichnete Werte zu speichern ... float resolution = 1000;//MUSS kleiner sein als EEPROM.length() float recordTime = 5; //Verzögerungszeit bool recording = false; ...
Beachten Sie, dass
/MUST kleiner sein als EEPROM.length()
, insetup()
wird der Speicher Ihres Boards EEPROM angezeigt, welcher für das SunFounder R3 Board 1024 sein sollte. Wenn Sie ein anderes Board verwenden, können Sie den Wert der Variableresolution
anpassen.Zeigen Sie den EEPROM-Speicher Ihres Boards an.
void setup() { ... Serial.begin(9600); //Serial.println(EEPROM.length()); }
Um die Größe des EEPROM-Speichers Ihres Boards zu ermitteln, kommentieren Sie die Zeile
Serial.println(EEPROM.read(i))
aus. Dies wird die Größe des EEPROM im seriellen Monitor anzeigen, und Sie können den Wert der Variableresolution
entsprechend ändern.Sobald ein Tastendruck erkannt wird, beginnt die Aufzeichnung und die erforderlichen Informationen werden über ein Potentiometer eingegeben. Jetzt wiederholt das Board Ihre Aktion endlos (und eine LED blinkt bei jeder Wiederholung), bis Sie die Taste erneut drücken und eine neue Aktion aufzeichnen.
void loop() { if (recording == true) {//aufzeichnen for (int i = 1; i <= resolution; i++) { digitalWrite(ledPin, HIGH); //Lichtstatus-LED int val = map(analogRead(A0), 0, 1023, 0, 180); EEPROM.write(i, val); //Serial.println(EEPROM.read(i)); myServo.write(val); delay(recordTime); } digitalWrite(ledPin, LOW); //Status-LED ausschalten delay(1000);//Zeit für den Menschen geben recording = false; } else { for (int i = 1; i <= resolution; i++) {//Wiedergabe if (digitalRead(buttonPin) == 0) {//Stoppen Sie die Wiedergabe und zeichnen Sie neue Werte auf recording = true; break; } int readval = EEPROM.read(i); myServo.write(readval); //Serial.println(readval); delay(recordTime); } digitalWrite(ledPin, HIGH); //eine neue Wiederholung anzeigen delay(100); digitalWrite(ledPin, LOW); } }
Setzen Sie die Variable
recording
auf true, wenn die Taste gedrückt wird.Wenn die Variable
recording
true ist, beginnen Sie mit der Aufzeichnung der Aktion im Speicherbereich.Lesen Sie den Wert des Potentiometers und mappen Sie ihn auf 0-180, um ihn im EEPROM zu speichern und die Drehung des Servos zu steuern.
Die LED leuchtet zu Beginn der Aufzeichnung und erlischt am Ende.
Wiederholen Sie die aufgezeichnete Aktion mit einem kurzen Aufleuchten der LED, um Sie an eine neue Wiederholung zu erinnern.
Über die
EEPROM
-Bibliothek.Hier sind einige ihrer Funktionen.
write(address,value)
: Schreibt ein Byte in das EEPROM.address
: die Adresse, an die geschrieben werden soll, beginnend bei 0 (int)value
: der zu schreibende Wert, von 0 bis 255 (byte)Ein EEPROM-Schreibvorgang dauert 3,3 ms. Der EEPROM-Speicher hat eine angegebene Lebensdauer von 100.000 Schreib-/Löschzyklen, daher sollten Sie vorsichtig sein, wie oft Sie darauf schreiben.
Read(address)
: Liest ein Byte aus dem EEPROM. Orte, die noch nie beschrieben wurden, haben den Wert 255.update(address,value)
: Schreibt ein Byte in das EEPROM. Der Wert wird nur geschrieben, wenn er sich von dem bereits an derselben Adresse gespeicherten unterscheidet.Ein EEPROM-Schreibvorgang dauert 3,3 ms. Der EEPROM-Speicher hat eine angegebene Lebensdauer von 100.000 Schreib-/Löschzyklen, daher kann die Verwendung dieser Funktion anstelle von write() Zyklen sparen, wenn die geschriebenen Daten sich nicht oft ändern.
EEPROM.put(address, data)
: Schreibt jeden Datentyp oder jedes Objekt in das EEPROM.address
: die Adresse, von der gelesen werden soll, beginnend bei 0 (int).data
: die zu lesenden Daten, können ein primitiver Typ (z. B. float) oder eine benutzerdefinierte Struktur sein.Diese Funktion verwendet EEPROM.update(), um den Schreibvorgang auszuführen, schreibt also den Wert nicht erneut, wenn er sich nicht geändert hat.
EEPROM.get(address, data)
: Liest jeden Datentyp oder jedes Objekt aus dem EEPROM.address
: die Adresse, von der gelesen werden soll, beginnend bei 0 (int).data
: die zu lesenden Daten, können ein primitiver Typ (z. B. float) oder eine benutzerdefinierte Struktur sein.
6. Lustiges Projekt¶
In diesem Kapitel finden Sie einige Beispiele, die die grundlegende Logik veranschaulichen, wie die meisten Programme mit der Realität interagieren. Dies wird Ihnen helfen, sich mit der Arduino-Programmierung vertraut zu machen. Wenn Sie eine kreative Idee im Kopf haben, wird die Programmierung für Sie kein Hindernis mehr sein.
6.1 Lichtgesteuerte fließende LEDs¶
Ein Fotowiderstand oder Fotodiode ist ein lichtgesteuerter variabler Widerstand. Der Widerstand eines Fotowiderstandes nimmt mit zunehmender einfallender Lichtintensität ab; anders ausgedrückt, zeigt er Photoleitfähigkeit. Ein Fotowiderstand kann in lichtempfindlichen Detektorschaltungen und licht- und dunkelaktivierten Schaltkreisen eingesetzt werden.
Der Widerstand eines Fotowiderstandes ändert sich mit der einfallenden Lichtintensität. Wenn die Lichtintensität steigt, nimmt der Widerstand ab; sinkt sie, steigt der Widerstand. In diesem Experiment verwenden wir acht LEDs, um die Lichtintensität darzustellen. Je höher die Lichtintensität ist, desto mehr LEDs leuchten auf. Bei ausreichend hoher Lichtintensität leuchten alle LEDs. Bei Dunkelheit erlöschen alle LEDs.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM SET |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die folgenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
6.1.light_control_led.ino
im Pfad3in1-kit\basic_project\6.1.light_control_led
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Jetzt leuchten Sie mit einer Lichtquelle auf den Fotowiderstand, und Sie werden sehen, dass mehrere LEDs aufleuchten. Bei noch mehr Licht leuchten noch mehr LEDs. In einer dunklen Umgebung erlöschen alle LEDs.
Wie funktioniert das?
void loop()
{
sensorValue = analogRead(photocellPin); //liest den Wert von A0 aus
ledLevel = map(sensorValue, 300, 1023, 0, NbrLEDs); // mappt auf die Anzahl der LEDs
for (int led = 0; led < NbrLEDs; led++)//
{
if (led < ledLevel ) //Wenn led kleiner als ledLevel ist, wird der folgende Code ausgeführt.
{
digitalWrite(ledPins[led], HIGH); // schaltet Pins unterhalb des Levels ein
}
else
{
digitalWrite(ledPins[led],LOW); // schaltet Pins oberhalb aus
}
}
}
Mit der Funktion map()
können Sie den Wert des Fotowiderstands auf die 8 LEDs abbilden, zum Beispiel, wenn sensorValue 560 ist, dann ist ledLevel 4, also sollten in diesem Moment ledPins[0] bis ledPins[4] leuchten und ledPins[5] bis ledPins[7] aus sein.
6.2 Elektronischer Würfel¶
Hier verwenden wir einen Knopf, eine 7-Segment-Anzeige und den 74hc595, um einen elektronischen Würfel zu erstellen. Jedes Mal, wenn der Knopf gedrückt wird, wird eine zufällige Zahl zwischen 1 und 6 generiert und auf der 7-Segment-Anzeige dargestellt.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
Schaltplan

Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
6.2.electronic_dice.ino
im Pfad3in1-kit\basic_project\6.2.electronic_dice
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nach erfolgreichem Hochladen des Codes zeigt die 7-Segment-Anzeige schnell die Zahlen 0-7 an. Wenn Sie den Knopf drücken, zeigt sie eine zufällige Zahl an und stoppt das Scrollen. Das Scrollen beginnt erneut, wenn Sie den Knopf wieder drücken.
Wie funktioniert das?
Dieses Projekt basiert auf 5.10 ShiftOut(Segmentanzeige) mit einem Knopf, um das Scrollen auf der 7-Segment-Anzeige zu starten/pausieren.
Initialisieren Sie jeden Pin und lesen Sie den Wert des Knopfes.
void setup () { ... attachInterrupt(digitalPinToInterrupt(buttonPin), rollDice, FALLING); }
Der Interrupt wird hier verwendet, um den Zustand des Knopfes zu lesen. Der Standardwert von
buttonPin
ist niedrig und ändert sich von niedrig zu hoch, wenn der Knopf gedrückt wird.rollDice
stellt die Funktion dar, die aufgerufen wird, wenn der Interrupt ausgelöst wird. Sie dient zum Umschalten des Werts der Variablenstate
.FALLING
bedeutet, dass der Interrupt ausgelöst wird, wenn derbuttonPin
von niedrig zu hoch geht.
Wenn die Variable
state
0 ist, wird die FunktionshowNumber()
aufgerufen, um die 7-Segment-Anzeige eine zufällige Zahl zwischen 1 und 7 anzuzeigen.void loop() { if (state == 0) { showNumber((int)random(1, 7)); delay(50); } }
Über die Funktion
rollDice()
.void rollDice() { state = !state; }
Wenn diese Funktion aufgerufen wird, wechselt sie den Wert von state, zum Beispiel von 1 beim letzten Mal zu 0 dieses Mal.
Über die Funktion
showNumber()
.void showNumber(int num) { digitalWrite(STcp, LOW); //ST_CP erden und solange niedrig halten, wie Daten übertragen werden shiftOut(DS, SHcp, MSBFIRST, datArray[num]); //setzen Sie den Latch-Pin zurück, um dem Chip zu signalisieren, dass er //nicht mehr auf Informationen hören muss digitalWrite(STcp, HIGH); //ST_CPST_CP hochziehen, um die Daten zu speichern }
Dies ist der Code innerhalb von
loop()
im Projekt 5.10 ShiftOut(Segmentanzeige) in der FunktionshowNumber()
.
6.3 Hochtemperaturalarm¶
Als Nächstes werden wir mithilfe von Thermistor, Druckknopf, Potentiometer und LCD ein Hochtemperaturalarmgerät bauen. Das LCD1602 zeigt die vom Thermistor erfasste Temperatur sowie den Hochtemperaturschwellenwert an, der mit einem Potentiometer eingestellt werden kann. Der Schwellenwert wird gleichzeitig auf dem EEPROM gespeichert. Überschreitet die aktuelle Temperatur den Schwellenwert, ertönt der Summer.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM SET |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltplan

Verdrahtung

Code
Bemerkung
Sie können die Datei
6.3.high_tem_alarm.ino
direkt im Pfad3in1-kit\basic_project\6.3.high_tem_alarm
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE 1/2.
Hier wird die Bibliothek
LiquidCrystal I2C
verwendet. Sie können sie aus dem Library Manager installieren.
Nachdem der Code erfolgreich hochgeladen wurde, zeigt das LCD1602 die vom Thermistor erfasste Temperatur sowie den Hochtemperaturschwellenwert an, der mit einem Potentiometer eingestellt werden kann. Der Schwellenwert wird gleichzeitig auf dem EEPROM gespeichert. Überschreitet die aktuelle Temperatur den Schwellenwert, ertönt der Summer.
Bemerkung
Wenn der Code und die Verkabelung korrekt sind, das LCD jedoch immer noch keinen Inhalt anzeigt, können Sie das Potentiometer auf der Rückseite drehen.
Wie funktioniert das?
Initialisieren Sie den Knopf, den Summer und das I2C LCD1602 und lesen Sie die EEPROM-Werte aus. Hier wird auch ein Interrupt verwendet, um den Status des Knopfes zu lesen.
void setup() { pinMode(buzzerPin, OUTPUT); pinMode(buttonPin, INPUT); lcd.init(); lcd.backlight(); upperTem = EEPROM.read(0); delay(1000); attachInterrupt(digitalPinToInterrupt(buttonPin), buttonState, FALLING); }
Der Interrupt wird hier verwendet, um den Zustand des Knopfes zu lesen. Wenn der Knopf gedrückt wird, wechselt
buttonPin
von niedrig auf hoch.Die Funktion buttonState wird aufgerufen, wenn der Interrupt ausgelöst wird, und sie wechselt den Wert der Variable state.
FALLING
bedeutet, dass der Interrupt auftritt, wennbuttonPin
von niedrig auf hoch geht.
Um den Hochtemperaturschwellenwert festzulegen, wird die Funktion
upperTemSetting()
aufgerufen, wenn state 1 ist (state wechselt zwischen 0 und 1 bei Knopfdruck) im Hauptprogramm, ansonsten wirdmonitoringTemp()
aufgerufen, um die aktuelle Temperatur und den eingestellten Schwellenwert anzuzeigen.void loop() { if (state == 1) { upperTemSetting(); } else { monitoringTemp(); } }
Über die Funktion
upperTemSetting()
.void upperTemSetting() { int setTem = 0; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Adjusting..."); lcd.setCursor(0, 1); lcd.print("Upper Tem: "); while (1) { lcd.setCursor(11, 1); setTem = map(analogRead(potPin), 0, 1023, 0, 100); lcd.print(setTem); if (state == 0) { EEPROM.write(0, setTem); upperTem = setTem; lcd.clear(); return; } } }
Mit dieser Funktion kann ein Schwellenwert festgelegt werden. Betreten Sie diese Funktion, zeigt das LCD1602 den aktuellen Schwellenwert an, der mit dem Potentiometer geändert werden kann. Dieser Schwellenwert wird im EEPROM gespeichert und beim erneuten Drücken des Knopfes verlassen.
Über die Funktion
monitoringTemp()
.void monitoringTemp() { long a = analogRead(temPin); float tempC = beta / (log((1025.0 * 10 / a - 10) / 10) + beta / 298.0) - 273.0; float tempF = 1.8 * tempC + 32.0; lcd.setCursor(0, 0); lcd.print("Temp: "); lcd.print(tempC); lcd.print(char(223)); lcd.print("C "); lcd.setCursor(0, 1); lcd.print("Upper: "); lcd.print(upperTem); lcd.print(char(223)); lcd.print("C "); delay(300); if (tempC >= upperTem) { digitalWrite(buzzerPin, HIGH); delay(50); digitalWrite(buzzerPin, LOW); delay(10); } else { digitalWrite(buzzerPin, LOW); } }
Mit dieser Funktion können Sie die Temperatur anzeigen und einen Alarm einstellen.
Der Wert des Thermistors wird gelesen und dann mittels der Formel in die Celsius-Temperatur umgerechnet und auf dem LCD1602 angezeigt.
Der eingestellte Schwellenwert wird ebenfalls auf dem LCD angezeigt.
Wenn die aktuelle Temperatur höher als der Schwellenwert ist, gibt der Summer einen Alarm aus.
6.4 Einparkhilfe¶
Mit der Entwicklung von Wissenschaft und Technik wurden viele High-Tech-Produkte in Autos eingebaut, unter denen das Einparkhilfesystem eines der bekanntesten ist. In diesem Projekt nutzen wir ein Ultraschallmodul, LCD, LED und Buzzer, um ein einfaches Ultraschall-Einparkhilfesystem zu erstellen.
Benötigte Bauteile
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Code
Bemerkung
Sie können die Datei
6.4_reversingAid.ino
direkt im Pfad3in1-kit\basic_project\6.4_reversingAid
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE 1/2.
Hier wird die Bibliothek
LiquidCrystal I2C
verwendet. Sie können sie aus dem Library Manager installieren.
Nachdem der Code erfolgreich hochgeladen wurde, wird die aktuell erkannte Entfernung auf dem LCD angezeigt. Der Buzzer wird dann die Klangfrequenz je nach Entfernung ändern.
Bemerkung
Wenn der Code und die Verdrahtung korrekt sind, aber das LCD dennoch keinen Inhalt anzeigt, können Sie das Potentiometer auf der Rückseite drehen.
Wie funktioniert das?
Dieser Code hilft uns, ein einfaches Entfernungsmessgerät zu erstellen, das die Entfernung zwischen Objekten messen kann und Feedback über ein LCD-Display und einen Summer liefert.
Die Funktion loop()
enthält die Hauptlogik des Programms und läuft kontinuierlich. Schauen wir uns die Funktion loop()
genauer an.
Schleife zum Auslesen der Entfernung und Aktualisieren von Parametern
In der
loop
liest der Code zuerst die vom Ultraschallmodul gemessene Entfernung aus und aktualisiert den Intervall-Parameter basierend auf dieser Entfernung.// Entfernung aktualisieren distance = readDistance(); // Intervalle basierend auf der Entfernung aktualisieren if (distance <= 10) { intervals = 300; } else if (distance <= 20) { intervals = 500; } else if (distance <= 50) { intervals = 1000; } else { intervals = 2000; }
Überprüfen, ob es Zeit für einen Signalton ist
Der Code berechnet die Differenz zwischen der aktuellen Zeit und der letzten Signalton-Zeit. Wenn die Differenz größer oder gleich der Intervallzeit ist, löst er den Summer aus und aktualisiert die letzte Signalton-Zeit.
unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= intervals) { Serial.println("Beeping!"); beep(); previousMillis = currentMillis; }
LCD-Anzeige aktualisieren
Der Code löscht das LCD-Display und zeigt dann „Dis:“ und die aktuelle Entfernung in Zentimetern in der ersten Zeile an.
lcd.clear(); lcd.setCursor(0, 0); lcd.print("Dis: "); lcd.print(distance); lcd.print(" cm"); delay(100);
6.5 Reaktionsspiel¶
Unser Körper hat viele Reaktionszeiten, wie zum Beispiel auditive RT, visuelle RT, taktile RT usw.
Reaktionszeiten haben viele Auswirkungen auf unser tägliches Leben. Ein langsamer als normaler Reaktionszeit beim Fahren kann beispielsweise zu schwerwiegenden Folgen führen.
In diesem Projekt verwenden wir 3 Tasten und 2 LEDs, um unsere visuelle Reaktionszeit zu messen.
Der serielle Monitor des Arduino zeigt die Nachricht „Warten…“ an. Nach dem Drücken der „Bereit“-Taste muss eine der beiden LEDs nach einem zufälligen Zeitintervall zufällig aufleuchten. Es ist wichtig, dass der Proband den entsprechenden Knopf so schnell wie möglich drückt. Der Arduino erfasst die Zeitdifferenz zwischen dem Aufleuchten der LED und dem Drücken des entsprechenden Knopfes durch die Person und gibt die gemessene Reaktionszeit auf dem Arduino-Seriellen-Monitor aus.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein gesamtes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltplan

Verdrahtung

Code
Bemerkung
Sie können die Datei
6.5_reaction_time.ino
direkt im Pfad3in1-kit\basic_project\6.5_reversingAid
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE 1/2.
Stellen Sie bitte sicher, dass Sie die
LiquidCrystal_I2C
Bibliothek hinzugefügt haben. Detaillierte Anleitungen finden Sie unter 5.11 Externe Bibliotheken installieren.
Wie funktioniert das?
Initialisierung der Tasten und LEDs. Hier werden 2 Interrupts verwendet, um den Status der Tasten auszulesen.
void setup() { ... attachInterrupt(digitalPinToInterrupt(buttonPin1), pressed1, FALLING); attachInterrupt(digitalPinToInterrupt(buttonPin2), pressed2, FALLING); ... }
Wenn die
rstBtn
Taste gedrückt wird, startet das Spiel erneut. Nach einer zufälligen Zeit zwischen 2 und 5ms leuchtet eine der LEDs auf.void loop() { if (flag == -1 && digitalRead(rstBtn) == LOW) { digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, LOW); Serial.println("Waiting..."); int randomTime = random(2000, 5000); delay(randomTime); timer = millis(); flag = randomTime % 2; Serial.println("Light!"); if (flag == 0) { digitalWrite(ledPin1, HIGH); } else if (flag == 1) { digitalWrite(ledPin2, HIGH); } } delay(200); }
Wenn flag -1 ist und die
rstBtn
Taste gedrückt wird, wird dierandom()
Funktion verwendet, um eine zufällige Zeit zwischen 2-5s zu generieren.Diese Zeit wird dann verwendet, um das Leuchten der LEDs zu steuern.
Auch das Leuchten der 2 LEDs wird zufällig durch
randomTime % 2
mit 0 und 1 generiert. Wenn flag 0 ist, dann leuchtet LED1; wenn 1, dann leuchtet LED2.
Über die
pressed1()
Funktionvoid pressed1() { if (flag == -1) { return; } if (flag == 0) { int currentTime = millis(); Serial.print("Correct! Your reaction time is: "); Serial.print(currentTime - timer); Serial.println(" ms"); } else if (flag == 1) { Serial.println("Wrong Click!"); } flag = -1; }
Diese Funktion wird ausgelöst, wenn Taste 1 gedrückt wird. Wird Taste 1 gedrückt und flag ist zu diesem Zeitpunkt 0, wird die Reaktionszeit angezeigt. Andernfalls wird ein Druckfehler angezeigt.
Über die
pressed2()
Funktionvoid pressed2() { if (flag == -1) { return; } if (flag == 1) { int currentTime = millis(); Serial.print("Correct! Your reaction time is: "); Serial.print(currentTime - timer); Serial.println(" ms"); } else if (flag == 0) { Serial.println("Wrong Click!"); } flag = -1; }
Diese Funktion wird ausgelöst, wenn Taste 2 gedrückt wird. Wird Taste 2 gedrückt und flag ist zu diesem Zeitpunkt 1, wird die Reaktionszeit angezeigt. Andernfalls wird ein Druckfehler angezeigt.
6.6 Zahl erraten¶
Das Erraten von Zahlen ist ein unterhaltsames Partyspiel, bei dem Sie und Ihre Freunde abwechselnd eine Zahl (0~99) eingeben. Der Bereich wird mit der Eingabe der Zahl kleiner, bis ein Spieler das Rätsel richtig beantwortet. Dann wird der Spieler besiegt und bestraft. Zum Beispiel, wenn die Glückszahl 51 ist, die die Spieler nicht sehen können, und Spieler 1 gibt 50 ein, ändert sich der Nummernbereich zu 50~99; wenn Spieler 2 70 eingibt, kann der Nummernbereich 50~70 sein; wenn Spieler 3 51 eingibt, ist er oder sie der Pechvogel. Hier verwenden wir die IR-Fernbedienung zur Eingabe von Zahlen und das LCD zur Ausgabe von Ergebnissen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltplan
In diesem Beispiel erfolgt die Verdrahtung des LCD1602 und des Infrarot-Empfangsmoduls wie folgt.

Verdrahtung

Code
Bemerkung
Sie können die Datei
6.6.guess_number.ino
direkt unter dem Pfad3in1-kit\basic_project\6.6.guess_number
öffnen.Oder kopieren Sie diesen Code in die Arduino IDE 1/2.
Die Bibliotheken
LiquidCrystal I2C
undIRremote
werden hier verwendet. Sie können sie aus dem Library Manager installieren.
Nach erfolgreichem Hochladen des Codes erscheinen die Willkommenszeichen auf dem LCD1602. Drücken Sie nun die Nummer entsprechend dem Bereichshinweis auf dem Bildschirm. Die Anzeige wird immer kleiner, es sei denn, Sie erraten die Glückszahl.
Bemerkung
Wenn der Code und die Verdrahtung in Ordnung sind, das LCD aber trotzdem keinen Inhalt anzeigt, können Sie das Potentiometer auf der Rückseite drehen, um den Kontrast zu erhöhen.
Wie funktioniert das?
Um das Zahlerraten-Spiel lebendig und lustig zu gestalten, müssen wir die folgenden Funktionen umsetzen:
Die Glückszahl wird angezeigt, wenn wir das Spiel starten und zurücksetzen, und der Nummernbereichshinweis wird auf 0 ~ 99 zurückgesetzt.
Das LCD zeigt die eingegebene Zahl und den Nummernbereichshinweis an.
Nach Eingabe von zwei Ziffern erscheint automatisch ein Ergebnisurteil.
Wenn Sie eine einzelne Ziffer eingeben, können Sie die CYCLE-Taste (die Taste in der Mitte der Fernbedienung) drücken, um das Ergebnisurteil zu starten.
Wenn die Antwort nicht erraten wird, wird der neue Nummernbereichshinweis angezeigt (wenn die Glückszahl 51 ist und Sie 50 eingeben, ändert sich der Nummernbereichshinweis zu 50~99).
Das Spiel wird automatisch zurückgesetzt, nachdem die Glückszahl erraten wurde, sodass der Spieler eine neue Runde spielen kann.
Das Spiel kann durch direktes Drücken der POWER-Taste (die Taste in der oberen linken Ecke) zurückgesetzt werden.
Zusammenfassend zeigt der Ablauf des Projekts der Ablaufdiagramm.

Auto-Projekte¶
Ich gehe davon aus, dass Sie bereits viele verschiedene intelligente Roboter-Autos gesehen haben. Ihre Grundfunktionen ähneln sich: Basisbewegungen, Hindernisvermeidung, Linienverfolgung, Verfolgen und Steuern per Fernbedienung usw.
Hier verwenden wir die einfachste Struktur, um ein intelligentes Roboter-Auto zu bauen, das ebenfalls alle oben genannten Funktionen erfüllt. Zusätzlich können Sie es mit Ihrem Handy steuern. Bitte beachten Sie dazu das Tutorial unter 8. IoT Auto.
Montageanleitung
Auto zusammenbauen¶
Bitte befolgen Sie die nachstehenden Schritte, um die Montage des Autos abzuschließen.
Entfernen Sie die Schutzfolie vom Acryl.
Legen Sie das Board so auf den Tisch, wie es auf dem Bild gezeigt ist. Die Seite, die dasselbe Loch wie das R3-Board hat, nennen wir A; die Rückseite ist B. Das hilft Ihnen, Fehler während des Zusammenbaus zu vermeiden.
Drehen Sie auf die B-Seite und verwenden Sie M3x30mm Schrauben sowie M3 Muttern, um den TT-Motor zu befestigen. Zwei Details: 1 - die Ausgangswelle zeigt zur fledermausförmigen Seite; 2 - das Motorkabel zeigt nach innen.
Montieren Sie einen weiteren TT-Motor. Achten Sie ebenso auf die Richtung der Ausgangswelle und die Ausrichtung des Kabels.
Verwenden Sie M3x6mm Schrauben, um den M3x12mm Abstandshalter wie unten gezeigt zu montieren.
Verwenden Sie M3x6mm Schrauben, um das Universalrad zu montieren.
Montieren Sie die 2 Räder und die Grundstruktur des Autos ist fertig.
Befestigen Sie den M3x12mm Halter mit M3x6mm Schrauben an der Rückseite des Autos.
Montieren Sie das L298N-Modul mit M3x6mm Schrauben.
Montieren Sie den M3x24mm Abstandshalter mit M3x6mm Schrauben wie unten gezeigt.
Montieren Sie das R3-Board mit M3x6mm Schrauben.
Montieren Sie die beiden IR-Hindernismodule mit M3x10mm Schrauben und M3 Muttern.
Drehen Sie zu Seite B und befestigen Sie das Line-Track-Modul mit vier M3x6mm Schrauben und zwei M3x24mm Abstandshaltern.
Kleben Sie den Klettverschluss auf die 9V-Batterie und setzen Sie die Batterieklemme auf.
Befestigen Sie den anderen Teil des Klettverschlusses am Auto, um die Batterie zu sichern.
Drehen Sie zu Seite A und befestigen Sie das Steckbrett vorne am Auto. Danach können Sie je nach Projektanforderung verschiedene Komponenten (z. B. Ultraschallmodul) auf das Steckbrett setzen.
Um das Auto zum Laufen zu bringen, müssen Sie es auch verkabeln und einen Code schreiben, was in den folgenden Abschnitten erläutert wird.
Projekte
Hier sind einige Projekte für das Auto, programmiert in C mit der Arduino IDE. Wenn Sie noch nicht besonders versiert im Umgang mit Arduino sind, können Sie sich an Einstieg in Arduino wenden.
Die folgenden Projekte sind in Reihenfolge der Programmierschwierigkeit geschrieben, es wird empfohlen, diese Bücher in dieser Reihenfolge zu lesen.
Wenn Sie ein Auto mit Scratch programmieren möchten, werfen Sie bitte einen Blick auf: Mit Scratch spielen.
1. Bewegung¶

Bevor wir mit dem Programmieren beginnen, sollten wir uns das Funktionsprinzip des L298N nochmals vor Augen führen.
IN1~IN4 sind die Eingänge des L298N-Moduls und OUT1~OUT4 sind die Ausgänge.
Eine einfache Nutzung wäre: Gibt man IN1 ein hohes Signal, wird OUT1 ebenfalls ein hohes Signal ausgeben; bei einem niedrigen Signal an IN1 gibt OUT1 ein niedriges Signal aus. Wenn man die beiden Enden des Motors an OUT1 und OUT2 anschließt und gegenläufige Signale an IN1 und IN2 sendet, wird der Motor sich drehen. OUT3 und OUT4 funktionieren auf die gleiche Weise.
Die Funktionsbeziehung zwischen ENA und IN1, IN2 ist wie folgt:
ENA |
IN1 |
IN2 |
Zustand des rechten Motors(A) |
---|---|---|---|
0 |
X |
X |
Stopp |
1 |
0 |
0 |
Bremsen |
1 |
0 |
1 |
Drehung im Uhrzeigersinn |
1 |
1 |
0 |
Drehung gegen den Uhrzeigersinn |
1 |
1 |
1 |
Bremsen |
Die Funktionsbeziehung zwischen ENB und IN3, IN4 ist wie folgt:
ENB |
IN3 |
IN4 |
Zustand des linken Motors(B) |
---|---|---|---|
0 |
X |
X |
Stopp |
1 |
0 |
0 |
Bremsen |
1 |
0 |
1 |
Drehung im Uhrzeigersinn |
1 |
1 |
0 |
Drehung gegen den Uhrzeigersinn |
1 |
1 |
1 |
Bremsen |
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein komplettes Set zu kaufen. Hier ist der Link dazu:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen:
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Vorwärts
Nun verbinden wir den Eingang des L298N-Moduls direkt mit 12V und GND, damit das Auto sich bewegt.
Verbinden Sie das R3-Board, das L298N-Modul und die 2 Motoren.
L298N |
R3-Board |
Motor |
---|---|---|
12V |
5V |
|
GND |
GND |
|
OUT1 |
Schwarzes Kabel des rechten Motors |
|
OUT2 |
Rotes Kabel des rechten Motors |
|
OUT3 |
Schwarzes Kabel des linken Motors |
|
OUT4 |
Rotes Kabel des linken Motors |

Verbinden Sie IN2 und IN3 mit 12V und IN1 und IN4 mit GND. Das Auto sollte sich nun vorwärts bewegen.

Wenn nicht beide Motoren vorwärts drehen, sondern folgende Situationen auftreten, müssen Sie die Verkabelung der beiden Motoren neu einstellen:
Wenn beide Motoren gleichzeitig rückwärts drehen (linker Motor dreht im Uhrzeigersinn, rechter Motor gegen den Uhrzeigersinn), tauschen Sie die Verkabelung der linken und rechten Motoren gleichzeitig. Tauschen Sie OUT1 und OUT2, sowie OUT3 und OUT4.
Dreht sich der linke Motor rückwärts (im Uhrzeigersinn), tauschen Sie die Verkabelung von OUT3 und OUT4 des linken Motors.
Dreht sich der rechte Motor rückwärts (gegen den Uhrzeigersinn), tauschen Sie die Verkabelung von OUT1 und OUT1 des rechten Motors.
Rückwärts
Verbinden Sie IN2 und IN3 mit GND und IN1 und IN4 mit 12V. Das Auto sollte sich nun rückwärts bewegen.

Links abbiegen
Wenn Sie möchten, dass das Auto nach links abbiegt, d.h. beide Motoren im Uhrzeigersinn drehen, verbinden Sie IN1 und IN3 mit GND und IN2 und IN4 mit 12V.

Rechts abbiegen
Umgekehrt, wenn Sie möchten, dass das Auto nach rechts abbiegt, d.h. beide Motoren gegen den Uhrzeigersinn drehen, verbinden Sie IN1 und IN3 mit 12V und IN2 und IN4 mit GND.

Stopp
Um den Motor zu stoppen, verbinden Sie die Eingänge derselben Seite gleichzeitig mit 12V oder GND, z.B. verbinden Sie IN1 und IN2 gleichzeitig mit 12V oder 5V, ebenso IN3 und IN4.
Dies ist natürlich theoretisch und wird später beim Steuern mit Code benötigt. Hier kann das Entfernen der Stromversorgung des Autos es stoppen.
2. Steuerung durch Code¶
Im vorherigen Projekt haben wir versucht, den Motor durch verschiedene Pegelsignale am Eingang des L298N zu steuern.
Wenn wir die Pegelsignale über das Programm ändern, können wir die Bewegung des Autos flexibel steuern. Hier verbinden wir die Pins IN1~IN4 des L298N der Reihe nach mit den Pins 5, 6, 9 und 10 auf dem R3-Board.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Verdrahtung
Das L298N-Motortreibermodul ist ein leistungsstarkes Treibermodul für DC- und Schrittmotoren. Das L298N-Modul kann bis zu 4 Gleichstrommotoren steuern oder 2 Gleichstrommotoren mit Richtungs- und Geschwindigkeitssteuerung.
Verbinden Sie die Drähte zwischen dem L298N-Modul und dem R3-Board gemäß dem untenstehenden Diagramm.
L298N |
R3 Board |
Motor |
---|---|---|
IN1 |
5 |
|
IN2 |
6 |
|
IN3 |
9 |
|
IN4 |
10 |
|
OUT1 |
Schwarzes Kabel des rechten Motors |
|
OUT2 |
Rotes Kabel des rechten Motors |
|
OUT3 |
Schwarzes Kabel des linken Motors |
|
OUT4 |
Rotes Kabel des linken Motors |

Code
Bemerkung
Öffnen Sie die Datei
2.move.ino
im Pfad3in1-kit\car_project\2.move
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code hochgeladen wurde, wird das Auto jeweils zwei Sekunden lang vorwärts, rückwärts, links und rechts fahren.
Wie funktioniert das?
Dieses Projekt entspricht im Wesentlichen dem vorherigen. Es soll das Auto durch Ausgabe verschiedener Pegel von IN1 bis IN4 vorwärts, rückwärts, links, rechts fahren und anhalten lassen.
Initialisieren Sie die Pin-Verdrahtung von IN1~IN4.
const int in1 = 5; const int in2 = 6; const int in3 = 9; const int in4 = 10; void setup() { pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); }
Setzen Sie IN1~IN4 auf verschiedene hohe oder niedrige Pegel, um die Rotation der linken und rechten Motoren zu steuern, und kapseln Sie sie dann in einzelne Funktionen.
void moveForward() { digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, HIGH); digitalWrite(in4, LOW); } void moveBackward() { digitalWrite(in1, HIGH); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); } ...
Rufen Sie diese Funktionen in
loop()
auf.void loop() { moveForward(); delay(2000); stopMove(); delay(500); moveBackward(); delay(2000); stopMove(); delay(500); ...
-
pin
: die Arduino-Pinnummer.value
: HIGH oder LOW.
Schreibt einen HIGH- oder LOW-Wert auf einen digitalen Pin. Wenn der Pin mit
pinMode()
alsOUTPUT
konfiguriert wurde, wird seine Spannung auf den entsprechenden Wert gesetzt: 5V (oder 3,3V bei 3,3V-Platinen) für HIGH, 0V (Masse) für LOW. -
pin
: die Arduino-Pinnummer, für die der Modus eingestellt werden soll.mode
: INPUT, OUTPUT oder INPUT_PULLUP.
Konfiguriert den angegebenen Pin, um entweder als Eingang oder als Ausgang zu fungieren.
-
ms
: die Anzahl der Millisekunden zur Pause. Zulässige Datentypen: unsigned long.
Unterbricht das Programm für die als Parameter angegebene Zeit (in Millisekunden). (Eine Sekunde enthält 1000 Millisekunden.)
3. Geschwindigkeit erhöhen¶
Zusätzlich zum digitalen Signal (HIGH/LOW) kann der Eingang von L298N auch ein PWM-Signal empfangen, um die Geschwindigkeit des Ausgangs zu steuern.
Mit anderen Worten, wir können AnalogWrite()
verwenden, um die Bewegungsgeschwindigkeit des Autos zu steuern.
In diesem Projekt lassen wir das Auto seine Vorwärtsgeschwindigkeit allmählich ändern, zuerst beschleunigend und dann verlangsamend.
Verdrahtung
Die Verdrahtung dieses Projekts entspricht 2. Steuerung durch Code.
Code
Bemerkung
Öffnen Sie die Datei
3.speed_up.ino
im Pfad3in1-kit\car_project\3.speed_up
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem das Programm ausgeführt wurde, wird das Auto allmählich beschleunigen und dann allmählich verlangsamen.
Wie funktioniert das?
Das Ziel dieses Projekts ist es, verschiedene PWM-Werte an IN1~IN4 zu schreiben, um die Vorwärtsgeschwindigkeit des Autos zu steuern.
Verwenden Sie die
for()
-Anweisung, umspeed
in Schritten von 5 zu geben, schreiben Sie Werte von 0 bis 255, damit Sie die Änderung in der Vorwärtsgeschwindigkeit des Autos sehen können.void loop() { for(int i=0;i<=255;i+=5){ moveForward(i); delay(500); } for(int i=255;i>=0;i-=5){ moveForward(i); delay(500); } }
Über die Funktion
moveForward()
.Im Gegensatz zu 2. Steuerung durch Code, das direkt hohe/niedrige Pegel an IN1~IN4 gibt, übergeben wir hier einen Parameter
speed
dorthin, wo wir hohe Pegel geben müssen.void moveForward(int speed) { analogWrite(in1, 0); analogWrite(in2, speed); analogWrite(in3, speed); analogWrite(in4, 0); }
Die for
-Anweisung wird verwendet, um einen Block von Anweisungen in geschweiften Klammern zu wiederholen. Ein Inkrementzähler wird normalerweise verwendet, um die Schleife zu inkrementieren und zu beenden.
for (initialization; condition; increment) { // statement(s); }
initialization
: geschieht zuerst und genau einmal.
condition
: Bei jedem Durchlauf der Schleife wird die Bedingung geprüft; wenn sie wahr ist, wird der Anweisungsblock und das Inkrement ausgeführt, dann wird die Bedingung erneut geprüft. Wenn die Bedingung falsch wird, endet die Schleife.
increment
: wird bei jedem Durchlauf der Schleife ausgeführt, wenn die Bedingung wahr ist.
4. Der Linie folgen¶
Das Auto ist mit einem Linienverfolgungsmodul ausgestattet, mit dem das Auto der schwarzen Linie folgen kann.
Wenn das Linienverfolgungsmodul die schwarze Linie erkennt, dreht sich der rechte Motor, während der linke Motor stillsteht, sodass das Auto einen Schritt nach links vorne macht. Während sich das Auto bewegt, wird das Linienmodul von der Linie weg bewegt. Dann dreht sich der linke Motor und der rechte Motor nicht. Das Auto wird einen Schritt nach rechts machen, um zur Linie zurückzukehren. Wiederholen Sie die obigen beiden Schritte, kann das Auto entlang der schwarzen Linie fahren.
Bevor Sie mit dem Projekt beginnen, müssen Sie eine Kurvenkarte mit schwarzem Linienband erstellen. Die empfohlene Linienbreite liegt zwischen 0,8-1,5 cm und der Winkel der Kurve sollte nicht weniger als 90 Grad betragen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM SET |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENEINFÜHRUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung
Dies ist ein digitales Linienverfolgungsmodul. Bei Erkennung einer schwarzen Linie gibt es den Wert 1 aus; bei Erkennung einer weißen Linie gibt es den Wert 0 aus. Außerdem können Sie seinen Erfassungsabstand über das Potentiometer auf dem Modul einstellen.
Bauen Sie den Schaltkreis gemäß dem folgenden Diagramm auf.
Linienverfolgungsmodul |
R3 Board |
---|---|
S |
2 |
V+ |
5V |
G |
GND |

Das Modul einstellen
Bevor Sie mit dem Projekt beginnen, müssen Sie die Empfindlichkeit des Moduls einstellen.
Verkabeln Sie gemäß dem obigen Diagramm und schalten Sie dann das R3-Board ein (entweder direkt über das USB-Kabel oder das 9V-Batteriekabel), ohne den Code hochzuladen.
Kleben Sie ein schwarzes Isolierband auf den Tisch und stellen Sie den Wagen darauf.
Beobachten Sie die Signal-LED auf dem Modul, um sicherzustellen, dass sie auf dem weißen Tisch leuchtet und auf dem schwarzen Band erlischt.
Wenn nicht, müssen Sie das Potentiometer auf dem Modul einstellen, damit es den oben beschriebenen Effekt erzielt.
Code
Bemerkung
Öffnen Sie die Datei
4.follow_the_line.ino
im Verzeichnis3in1-kit\car_project\4.follow_the_line
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem Sie den Code auf das R3-Board hochgeladen haben, richten Sie das Linienverfolgungsmodul unter dem Auto auf die schwarze Linie aus. Anschließend wird das Auto der Linie folgen.
Wie funktioniert das?
In diesem Code werden die beiden Motoren je nach Wert des Linienverfolgungsmoduls mikro-rotiert, so dass das Auto der schwarzen Linie folgen kann.
Fügen Sie die Pin-Definition für das Linienverfolgungsmodul hinzu, hier wird es auf
INPUT
gesetzt. Initialisieren Sie auch den Seriellen Monitor und stellen Sie die Baudrate auf 9600bps ein.... const int lineTrack = 2; Serial.begin(9600); void setup() { ... pinMode(lineTrack, INPUT); }
Lesen Sie den Wert des Linienverfolgungsmoduls aus. Ist er 1, soll das Auto nach links vorfahren; ansonsten nach rechts vorfahren. Sie können auch den Seriellen Monitor öffnen, indem Sie auf das Lupensymbol in der oberen rechten Ecke klicken, um den Wert des Linienverfolgungsmoduls auf der schwarz-weißen Linie vor dem Herausziehen des USB-Kabels zu sehen.
void loop() { int speed = 150; int lineColor = digitalRead(lineTrack); // 0:weiß 1:schwarz Serial.println(lineColor); if (lineColor) { moveLeft(speed); } else { moveRight(speed); } }
Über die Funktionen
moveLeft()
undmoveRight()
.Im Gegensatz zur Links-Rechts-Drehfunktion im Projekt 2. Steuerung durch Code sind hier nur kleine Links-Rechts-Drehungen erforderlich. Daher müssen Sie nur den Wert von IN2 oder IN3 jeweils anpassen. Zum Beispiel, wenn Sie nach vorne links fahren (
moveLeft()
), müssen Sie die Geschwindigkeit nur für IN2 setzen und alle anderen auf 0, damit der rechte Motor im Uhrzeigersinn dreht und der linke Motor nicht bewegt wird.void moveLeft(int speed) { analogWrite(in1, 0); analogWrite(in2, speed); analogWrite(in3, 0); analogWrite(in4, 0); } void moveRight(int speed) { analogWrite(in1, 0); analogWrite(in2, 0); analogWrite(in3, speed); analogWrite(in4, 0); }
-
Wird für die Kommunikation zwischen dem Arduino-Board und einem Computer oder anderen Geräten verwendet.
Serial.begin()
: Legt die Datenrate in Bits pro Sekunde (Baud) für die serielle Datenübertragung fest.Serial.println()
: Gibt Daten als menschenlesbaren ASCII-Text, gefolgt von einem Car-Return-Zeichen (ASCII 13 oder ‚r‘) und einem Newline-Zeichen (ASCII 10 oder ‚n‘), an den seriellen Port aus.
-
Das
if else
ermöglicht im Vergleich zur einfachen if-Anweisung eine größere Kontrolle über den Codeablauf, da mehrere Tests gruppiert werden können.
5. Spielen mit dem Hindernisvermeidungsmodul¶
Zwei Infrarot-Hindernisvermeidungsmodule sind an der Vorderseite des Autos montiert und können dazu verwendet werden, nahegelegene Hindernisse zu erkennen.
In diesem Projekt darf sich das Auto frei vorwärts bewegen. Wenn es auf ein Hindernis trifft, kann es dieses vermeiden und in andere Richtungen weiterfahren.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung
Das Hindernisvermeidungsmodul ist ein abstandseinstellbarer Infrarot-Näherungssensor, dessen Ausgang normalerweise hoch ist und auf niedrig schaltet, wenn ein Hindernis erkannt wird.
Bauen Sie nun den Schaltkreis gemäß dem untenstehenden Diagramm.
Linkes IR-Modul |
R3-Board |
---|---|
OUT |
8 |
GND |
GND |
VCC |
5V |
Rechtes IR-Modul |
R3-Board |
---|---|
OUT |
7 |
GND |
GND |
VCC |
5V |

Modul einstellen
Bevor Sie mit dem Projekt beginnen, müssen Sie die Erkennungsentfernung des Moduls einstellen.
Verkabeln Sie entsprechend dem obigen Diagramm, schalten Sie das R3-Board ein (entweder durch direktes Einstecken des USB-Kabels oder durch Anschließen des 9V-Batteriekabels), ohne den Code hochzuladen.
Stellen Sie ein Notebook oder ein anderes flaches Objekt etwa 5 cm vor das IR-Hindernisvermeidungsmodul.
Drehen Sie dann mit einem Schraubendreher das Potentiometer am Modul, bis die Signalleuchte am Modul gerade aufleuchtet, um seine maximale Erkennungsentfernung von 5 cm einzustellen.
Verfahren Sie auf die gleiche Weise, um ein weiteres Infrarotmodul einzustellen.

Code
Bemerkung
Öffnen Sie die Datei
5.obstacle_avoidance_module.ino
im Pfad3in1-kit\car_project\5.obstacle_avoidance_module
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Das Auto wird sich vorwärts bewegen, sobald der Code erfolgreich hochgeladen wurde. Wenn das linke Infrarotmodul ein Hindernis erkennt, wird es nach links rückwärts fahren; wenn das rechte Infrarotmodul ein Hindernis erkennt, wird es nach rechts rückwärts fahren; wenn beide Seiten ein Hindernis erkennen, wird es gerade rückwärts fahren.
Wie funktioniert das?
Dieses Projekt basiert auf den Werten der linken und rechten Infrarot-Hindernisvermeidungsmodule, um dem Auto die entsprechende Aktion zu ermöglichen.
Fügen Sie die Pin-Definition für die 2 Hindernisvermeidungsmodule hinzu, hier sind sie als
INPUT
eingestellt.... const int rightIR = 7; const int leftIR = 8; void setup() { ... //IR-Hindernisvermeidung pinMode(leftIR, INPUT); pinMode(rightIR, INPUT); }
Lesen Sie die Werte der linken und rechten Infrarotmodule aus und lassen Sie das Auto die entsprechende Aktion durchführen.
void loop() { int left = digitalRead(leftIR); // 0: Blockiert 1: Frei int right = digitalRead(rightIR); int speed = 150; if (!left && right) { backLeft(speed); } else if (left && !right) { backRight(speed); } else if (!left && !right) { moveBackward(speed); } else { moveForward(speed); } }
Wenn das linke IR-Modul 0 ist (Hindernis erkannt) und das rechte IR-Modul 1, soll das Auto nach links zurücksetzen.
Wenn das rechte IR-Modul 0 ist (Hindernis erkannt), soll das Auto nach rechts zurücksetzen.
Wenn beide IR-Module gleichzeitig ein Hindernis erkennen, wird das Auto rückwärts fahren.
Andernfalls wird das Auto weiter vorwärts fahren.
Über die Funktion
backLeft()
.Wenn der rechte Motor gegen den Uhrzeigersinn dreht und der linke Motor nicht dreht, wird das Auto nach links zurückfahren.
void backLeft(int speed) { analogWrite(in1, speed); analogWrite(in2, 0); analogWrite(in3, 0); analogWrite(in4, 0); }
Über die Funktion
backLeft()
.Wenn der linke Motor im Uhrzeigersinn dreht und der rechte Motor nicht dreht, wird das Auto nach rechts zurückfahren.
void backRight(int speed) { analogWrite(in1, 0); analogWrite(in2, 0); analogWrite(in3, 0); analogWrite(in4, speed); }
6. Spiel mit dem Ultraschallmodul¶
Im Projekt 5. Spielen mit dem Hindernisvermeidungsmodul werden die 2 Infrarot-Hindernisvermeidungsmodule für die Hindernisvermeidung verwendet. Allerdings ist die Erkennungsreichweite des IR-Hindernisvermeidungsmoduls kurz, was dazu führen kann, dass das Auto zu spät reagiert, um Hindernissen auszuweichen.
In diesem Projekt verwenden wir ein Ultraschallmodul für Erkennungen über längere Distanzen, damit das Auto Hindernisse aus weiterer Entfernung wahrnehmen und entsprechend reagieren kann.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein gesamtes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung
Ein Ultraschallsensormodul ist ein Instrument, das mithilfe von Ultraschallwellen die Entfernung zu einem Objekt misst. Es verfügt über zwei Sonden. Eine sendet Ultraschallwellen, die andere empfängt diese Wellen und wandelt die Zeit zwischen Senden und Empfangen in eine Entfernung um, wodurch die Entfernung zwischen dem Gerät und einem Hindernis erkannt wird.
Bauen Sie die Schaltung gemäß dem folgenden Diagramm auf.
Ultraschallmodul |
R3-Board |
---|---|
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |

Code
Bemerkung
Öffnen Sie die Datei
6.ultrasonic_module.ino
im Pfad3in1-kit\car_project\6.ultrasonic_module
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Nachdem der Code erfolgreich hochgeladen wurde, richten Sie das Auto auf eine Wand aus. Wenn der Abstand zu groß ist, fährt es vorwärts; ist er zu gering, fährt es rückwärts; befindet es sich in sicherem Abstand, hält es an.
Wie funktioniert das?
Dieses Projekt basiert auf der vom Ultraschallmodul gelesenen Entfernung, um das Auto entsprechend zu steuern.
Fügen Sie die Pin-Definition für das Ultraschallmodul hinzu.
trigPin
dient zum Senden von Ultraschallwellen und wird daher aufOUTPUT
gesetzt;echoPin
wird aufINPUT
gesetzt, um Ultraschallwellen zu empfangen.... const int trigPin = 3; const int echoPin = 4; void setup() { ... // Ultraschall pinMode(echoPin, INPUT); pinMode(trigPin, OUTPUT); }
Lesen Sie zuerst den vom Ultraschallmodul ermittelten Entfernungswert. Wenn die Entfernung größer als 25 ist, soll das Auto vorwärts fahren; wenn die Entfernung zwischen 2-10cm liegt, soll das Auto rückwärts fahren, sonst (zwischen 10~25) stoppen.
void loop() { float distance = readSensorData(); if (distance > 25) { moveForward(200); } else if (distance < 10 && distance > 2) { moveBackward(200); } else { stopMove(); } }
Über die Funktion
readSensorData()
:Der Sender des Ultraschallmoduls sendet alle 2us ein 10us Quadratwellensignal, und der Empfänger erhält ein High-Level-Signal, wenn sich ein Hindernis im Bereich befindet. Mit der Funktion
pulseIn()
wird die Zeit vom Senden bis zum Empfangen aufgezeichnet, durch die Schallgeschwindigkeit von 340m/s geteilt und dann durch 2 dividiert. Das Ergebnis ist der Abstand zwischen diesem Modul und dem Hindernis in Einheiten: cm.float readSensorData() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); float distance = pulseIn(echoPin, HIGH) / 58.00; //Entspricht (340m/s*1us)/2 return distance; }
-
pin
: Die Nummer des Arduino-Pins, an dem Sie den Impuls lesen möchten. Zulässige Datentypen: int.value
: Art des zu lesenden Pulses: entweder HIGH oder LOW. Zulässige Datentypen: int.
Liest einen Impuls (entweder HIGH oder LOW) an einem Pin. Wenn zum Beispiel der Wert HIGH ist, wartet
pulseIn()
darauf, dass der Pin von LOW auf HIGH wechselt, beginnt mit der Zeitmessung und wartet dann darauf, dass der Pin auf LOW geht und stoppt die Zeitmessung.
7. Folge Deiner Hand¶
Stellen Sie sich dieses Auto hier als Ihr Haustier vor. Wenn Sie es herbeiwinken, kommt es zu Ihnen gelaufen.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist sicherlich praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung
Schließen Sie das Ultraschallmodul und die beiden IR-Hindernisvermeidungsmodule gleichzeitig an.
Verdrahten Sie das Ultraschallmodul wie folgt an das R3-Board.
Ultraschallmodul |
R3 Board |
---|---|
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |
Die Verkabelung der beiden IR-Hindernisvermeidungsmodule an das R3-Board erfolgt wie folgt.
Linkes IR-Modul |
R3 Board |
---|---|
OUT |
8 |
GND |
GND |
VCC |
5V |
Rechtes IR-Modul |
R3 Board |
---|---|
OUT |
7 |
GND |
GND |
VCC |
5V |

Code
Bemerkung
Öffnen Sie die Datei
7.follow_your_hand.ino
im Pfad3in1-kit\car_project\7.follow_your_hand
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Stellen Sie das Auto nach erfolgreichem Hochladen des Codes auf den Boden. Halten Sie Ihre Hand in einem Abstand von 5*10cm vor das Auto, und es wird Ihrer Hand folgen. Wenn Sie Ihre Hand nahe am IR-Hindernisvermeidungsmodul auf beiden Seiten halten, wird es auch in die entsprechende Richtung drehen.
Wie funktioniert das?
Dieses Projekt ist eine Kombination der beiden vorherigen Projekte 6. Spiel mit dem Ultraschallmodul und 5. Spielen mit dem Hindernisvermeidungsmodul, jedoch mit einem anderen Effekt. Die vorherigen 2 Projekte erkennen ein Hindernis rückwärts, hier jedoch wird erkannt, ob Ihre Hand vorwärts geht oder in welche Richtung sie dreht. Der Ablauf dieses Projekts ist wie folgt.
Lesen Sie die vom Ultraschallmodul erfasste Entfernung und den Wert beider Infrarotmodule.
Wenn die Entfernung zwischen 5~10cm liegt, lassen Sie das Auto Ihrer Hand folgen.
Wenn das linke IR-Modul Ihre Hand erkennt, drehen Sie nach links.
Wenn das rechte IR-Modul Ihre Hand erkennt, drehen Sie nach rechts.
Wenn weder das Infrarotmodul noch das Ultraschallmodul Ihre Hand erkennen, lassen Sie das Auto anhalten.
void loop() {
float distance = readSensorData();
int left = digitalRead(leftIR); // 0: Verstopft 1: Leer
int right = digitalRead(rightIR);
int speed = 150;
if (distance>5 && distance<10){
moveForward(speed);
}
if(!left&&right){
turnLeft(speed);
}else if(left&&!right){
turnRight(speed);
}else{
stopMove();
}
}
8. Selbstfahrendes Auto¶
Dieses Projekt kombiniert die beiden Projekte 6. Spiel mit dem Ultraschallmodul und 5. Spielen mit dem Hindernisvermeidungsmodul. 2 Infrarot-Hindernisvermeidungsmodule führen die Kurzstrecken- oder Randdetektion durch, und Ultraschallmodule übernehmen die Langstreckendetektion, um sicherzustellen, dass das Auto während des freien Fahrens kein Hindernis trifft.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Verdrahtung
Verbinden Sie das Ultraschallmodul und die 2 IR-Hindernisvermeidungsmodule gleichzeitig.
Verdrahten Sie das Ultraschallmodul wie folgt an das R3-Board.
Ultraschallmodul |
R3-Board |
---|---|
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |
Die Verdrahtung der 2 IR-Hindernisvermeidungsmodule an das R3-Board ist wie folgt.
Linkes IR-Modul |
R3-Board |
---|---|
OUT |
8 |
GND |
GND |
VCC |
5V |
Rechtes IR-Modul |
R3-Board |
---|---|
OUT |
7 |
GND |
GND |
VCC |
5V |

Code
Bemerkung
Öffnen Sie die Datei
8.self_driving_car.ino
im Pfad3in1-kit\car_project\8.self_driving_car
.Oder kopieren Sie diesen Code in die Arduino IDE.
Oder laden Sie den Code über den Arduino Web Editor hoch.
Das Auto fährt von alleine, sobald der Code erfolgreich hochgeladen wurde. Wenn das IR-Hindernismodul auf beiden Seiten ein Hindernis erkennt, wird es zur Notausweichung in die entgegengesetzte Richtung fahren; befindet sich ein Hindernis direkt vor dem Auto im Abstand von 2~10 cm, wird es nach links zurücksetzen, seine Richtung korrigieren und dann vorwärts fahren.
Wie funktioniert das?
Der Arbeitsablauf dieses Projekts ist wie folgt.
Priorität beim Lesen des Wertes des linken und rechten IR-Hindernisvermeidungsmoduls.
Wenn das linke IR-Modul 0 ist (Hindernis erkannt) und das rechte IR-Modul 1, lässt das Auto nach links zurücksetzen.
Wenn das rechte IR-Modul 0 ist (Hindernis erkannt), lässt das Auto nach rechts zurücksetzen.
Wenn beide IR-Module gleichzeitig ein Hindernis erkennen, wird das Auto zurücksetzen.
Andernfalls lesen Sie die vom Ultraschallmodul erkannte Entfernung.
Ist die Entfernung größer als 50 cm, lässt das Auto vorwärts fahren.
Liegt die Entfernung zwischen 2-10 cm, lässt das Auto zurücksetzen, bevor es sich dreht.
Ist die Entfernung zwischen 10-50 cm, lässt das Auto mit niedriger Geschwindigkeit vorwärts fahren.
void loop() {
int left = digitalRead(leftIR); // 0: Verstopft 1: Leer
int right = digitalRead(rightIR);
if (!left && right) {
backLeft(150);
} else if (left && !right) {
backRight(150);
} else if (!left && !right) {
moveBackward(150);
} else {
float distance = readSensorData();
Serial.println(distance);
if (distance > 50) { // Safe
moveForward(200);
} else if (distance < 10 && distance > 2) { // Aufmerksamkeit
moveBackward(200);
delay(1000);
backLeft(150);
delay(500);
} else {
moveForward(150);
}
}
}
9. Fernsteuerung¶
Dieses Set wird mit einem IR-Empfänger geliefert, der es ermöglicht, das Fahrzeug mit einer IR-Fernbedienung zu steuern.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
- |
Verdrahtung
Bauen Sie den Schaltkreis nun gemäß dem untenstehenden Diagramm.
IR-Empfänger |
R3-Board |
---|---|
OUT |
12 |
GND |
GND |
VCC |
5V |
LED |
R3-Board |
---|---|
Anode(Der längere Pin) |
13 |
Kathode |
GND |

Code
Bemerkung
Öffnen Sie die Datei
9.remote_control.ino
im Pfad3in1-kit\car_project\9.remote_control
.Oder kopieren Sie diesen Code in die Arduino IDE.
Die Bibliothek
IRremote
wird hier verwendet. Sie können sie über den Library Manager installieren.
Nachdem der Code erfolgreich hochgeladen wurde, drücken Sie eine Taste auf der Fernbedienung. Die LED blinkt einmal, um anzuzeigen, dass das Signal empfangen wurde, und das Auto bewegt sich entsprechend der gedrückten Taste. Sie können die folgenden Tasten verwenden, um das Auto zu steuern:
+: Beschleunigen
-: Verlangsamen
1: Vorwärts links
2: Vorwärts
3: Vorwärts rechts
4: Nach links drehen
6: Nach rechts drehen
7: Rückwärts links
8: Rückwärts
9: Rückwärts rechts
Wie funktioniert das?
Das Ziel dieses Projekts ist es, das Auto durch Lesen des Schlüsselwerts der IR-Fernbedienung zu bewegen. Zusätzlich wird die LED an Pin 13 blinken, um den erfolgreichen Empfang des IR-Signals anzuzeigen.
Importieren Sie die
IRremote
-Bibliothek. Sie können sie über den Library Manager installieren.#include <IRremote.h> const int IR_RECEIVE_PIN = 12; // Definiere die Pin-Nummer für den IR-Sensor
Initialisiert die serielle Kommunikation mit einer Baudrate von 9600. Initialisiert den IR-Empfänger am angegebenen Pin (
IR_RECEIVE_PIN
) und aktiviert die LED-Rückmeldung (falls zutreffend).... void setup() { ... //IR-Fernbedienung IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); // Starten Sie den IR-Empfänger Serial.println("REMOTE CONTROL START"); }
Wenn Sie die Tasten auf der Fernbedienung drücken, der Infrarot-Empfänger erkennt, welche Taste gedrückt wurde. Anschließend bewegt sich das Auto entsprechend dem zugehörigen Schlüsselwert.
void loop() { if (IrReceiver.decode()) { // Serial.println(results.value,HEX); String key = decodeKeyValue(IrReceiver.decodedIRData.command); if (key != "ERROR") { Serial.println(key); if (key == "+") { speed += 50; } else if (key == "-") { speed -= 50; } else if (key == "2") { moveForward(speed); delay(1000); ... } IrReceiver.resume(); // Empfang des nächsten Werts ermöglichen } }
Überprüft, ob ein IR-Signal empfangen und erfolgreich dekodiert wurde.
Dekodiert den IR-Befehl und speichert ihn in
key
mit einer benutzerdefinierten FunktiondecodeKeyValue()
.Überprüft, ob der dekodierte Wert kein Fehler ist.
Gibt den dekodierten IR-Wert auf dem seriellen Monitor aus.
Setzt den IR-Signalempfang für das nächste Signal fort.
10. One-Touch-Start¶
In diesem Projekt haben wir die vorherigen Projekte - Linienverfolgung, Verfolgung, Hindernisvermeidung, autonomes Fahren usw. zusammengeführt. Sie können mit den Tasten der Fernbedienung umgeschaltet werden, sodass Sie das Auto starten und alle Funktionen auf einmal erleben können.
Verkabelung

Code
Bemerkung
Öffnen Sie die Datei
10.one_touch_start.ino
unter dem Pfad3in1-kit\car_project\10.one_touch_start
.Oder kopieren Sie diesen Code in die Arduino IDE.
Die
IRremote
-Bibliothek wird hier verwendet, Sie können sie aus dem Library Manager installieren.
Nach erfolgreichem Hochladen des Codes wird die LED bei jedem vom IR-Empfänger empfangenen Signal der Fernbedienung 3 Mal schnell blinken. Sie können die folgenden Tasten drücken, um den Wagen zu steuern.
+: Beschleunigen
-: Verlangsamen
1: Nach links vorne bewegen
2: Vorwärts
3: Nach rechts bewegen
4: Links abbiegen
6: Rechts abbiegen
7: Rückwärts nach links
8: Rückwärts
9: Rückwärts nach rechts
CYCLE: Der Linie folgen
U/SD: Autonomes Fahren
▷▷|: Hindernisvermeidung mit Ultraschallmodul
|◁◁: Hindernisvermeidung mit IR-Hindernismodul
EQ: Der Hand folgen
0: Stoppen
11. Geschwindigkeitskalibrierung¶
Wenn Sie versuchen, das Auto vorwärts zu bewegen, stellen Sie möglicherweise fest, dass es nicht geradeaus fährt. Dies liegt daran, dass die beiden Motoren ab Werk möglicherweise nicht dieselbe Geschwindigkeit haben. Wir können jedoch einen Offset für die beiden Motoren schreiben, damit ihre Drehgeschwindigkeiten konvergieren.
In diesem Projekt lernen wir, den Offset im EEPROM zu speichern. Der Vorteil davon ist, dass nach jeder Kalibrierung alle Projekte den Offsetwert direkt aus dem EEPROM abrufen können, sodass das Auto reibungslos geradeaus fahren kann.
Verdrahtung
Die Verkabelung dieses Projekts entspricht 2. Steuerung durch Code.
Wie spielt man das?
Öffnen Sie die Datei
11.speed_calibration.ino
im Pfad3in1-kit\car_project\11.speed_calibration
oder kopieren Sie diesen Code in die Arduino IDE.
Nachdem der Code erfolgreich hochgeladen wurde, verbinden Sie das Auto mit einer 9V-Batterie, setzen Sie es auf den Boden und lassen Sie es vorwärts fahren, um zu sehen, zu welcher Seite es versetzt ist.
Wenn das Auto nach links vorne fährt, bedeutet das, dass die Geschwindigkeit des rechten Motors zu hoch ist und reduziert werden muss.
EEPROM.write(1, 100) // 1 steht für den rechten Motor, 100 bedeutet 100% Geschwindigkeit. Dies kann je nach tatsächlicher Situation auf 90, 95 usw. eingestellt werden.
Wenn das Auto nach rechts fährt, bedeutet das, dass die Geschwindigkeit des linken Motors zu hoch ist und reduziert werden muss.
EEPROM.write(0, 100) // 0 steht für den linken Motor, 100 bedeutet 100% Geschwindigkeit. Dies kann je nach tatsächlicher Situation auf 90, 95 usw. eingestellt werden.
Nachdem Sie den Code geändert haben, laden Sie den Code auf das R3-Board hoch, um den Effekt zu sehen. Wiederholen Sie die obigen Schritte, bis das Auto fast gerade fährt.
Dieser Offset wird im EEPROM gespeichert. Sie müssen diesen Offset nur lesen, wenn Sie ihn in anderen Projekten verwenden, zum Beispiel in 5. Spielen mit dem Hindernisvermeidungsmodul.
#include <EEPROM.h>
float leftOffset = 1.0;
float rightOffset = 1.0;
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
const int rightIR = 7;
const int leftIR = 8;
void setup() {
Serial.begin(9600);
//Motor
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
//IR-Hindernis
pinMode(leftIR, INPUT);
pinMode(rightIR, INPUT);
leftOffset = EEPROM.read(0) * 0.01; // Offset des linken Motors lesen
rightOffset = EEPROM.read(1) * 0.01; // Offset des rechten Motors lesen
}
void loop() {
int left = digitalRead(leftIR); // 0: Blockiert 1: Frei
int right = digitalRead(rightIR);
int speed = 150;
if (!left && right) {
backLeft(speed);
} else if (left && !right) {
backRight(speed);
} else if (!left && !right) {
moveBackward(speed);
} else {
moveForward(speed);
}
}
void moveForward(int speed) {
analogWrite(in1, 0);
analogWrite(in2, int(speed * leftOffset));
analogWrite(in3, int(speed * rightOffset));
analogWrite(in4, 0);
}
void moveBackward(int speed) {
analogWrite(in1, speed);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, speed);
}
void backLeft(int speed) {
analogWrite(in1, speed);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, 0);
}
void backRight(int speed) {
analogWrite(in1, 0);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, speed);
}
IoT-Projekte¶
Dieses Set enthält das ESP8266 Wifi-Modul, mit dem Arduino eine Verbindung zum Internet für IoT-Experimente herstellen kann.
Hier zeigen wir Ihnen, wie Sie Arduino mithilfe des ESP8266 Wifi-Moduls eine Verbindung zur BLYNK-Plattform herstellen können, um spannende IoT-Projekte zu realisieren. Außerdem können Sie die Blynk-App auf Ihrem Handy verwenden, um das Smart Car zu steuern.
Blynk ist eine umfassende Softwarelösung, die erforderlich ist, um verbundene elektronische Geräte in jeder Größenordnung zu prototypisieren, zu implementieren und aus der Ferne zu verwalten: von persönlichen IoT-Projekten bis hin zu Millionen von kommerziellen verbundenen Produkten. Mit Blynk kann jeder seine Hardware mit der Cloud verbinden und ohne Code iOS-, Android- und Web-Anwendungen erstellen, um Echtzeit- und historische Daten von Geräten zu analysieren, sie von überall auf der Welt aus fernzusteuern, wichtige Benachrichtigungen zu erhalten und vieles mehr…

1. Erste Schritte mit Blynk¶
Um das R3-Board mit Blynk kommunizieren zu lassen, sind einige Konfigurationen erforderlich, wenn Sie Blynk zum ersten Mal verwenden.
Befolgen Sie die unten aufgeführten Schritte und beachten Sie, dass Sie sie in der angegebenen Reihenfolge durchführen und keine Kapitel überspringen dürfen.
1.1 Konfiguration des ESP8266¶
Das ESP8266-Modul, das im Kit enthalten ist, ist bereits mit der AT-Firmware vorgebrannt. Sie müssen jedoch seine Konfiguration ändern, indem Sie den untenstehenden Schritten folgen.
Bauen Sie den Schaltkreis.
Öffnen Sie die Datei
1.set_software_serial.ino
im Pfad3in1-kit\iot_project\1.set_software_serial
. Oder kopieren Sie diesen Code in die Arduino IDE.#include <SoftwareSerial.h> SoftwareSerial espSerial(2, 3); //Rx,Tx void setup() { // Setzen Sie hier Ihren Setup-Code ein, der einmal ausgeführt wird: Serial.begin(115200); espSerial.begin(115200); } void loop() { if (espSerial.available()) { Serial.write(espSerial.read()); } if (Serial.available()) { espSerial.write(Serial.read()); } }
Klicken Sie auf das Lupen-Symbol (Serial Monitor) in der oberen rechten Ecke und setzen Sie die Baudrate auf 115200. (Es kann sein, dass Sie einige Informationen wie ich erhalten, oder auch nicht. Das spielt keine Rolle, gehen Sie einfach zum nächsten Schritt weiter.)
Warnung
Wenn
ready
nicht erscheint, können Sie versuchen, das ESP8266-Modul zurückzusetzen (RST mit GND verbinden) und den Serial Monitor erneut zu öffnen.Zudem, wenn das Ergebnis
OK
lautet, müssen Sie möglicherweise die Firmware erneut brennen. Bitte schauen Sie unter Wie kann die Firmware für das ESP8266-Modul neu geflasht werden? nach Details. Wenn Sie das Problem immer noch nicht lösen können, machen Sie bitte einen Screenshot vom Serial Monitor und senden Sie ihn an sevice@sunfounder.com. Wir werden Ihnen so schnell wie möglich helfen.
Klicken Sie auf NEWLINE DROPDOWN BOX, wählen Sie im Dropdown-Menü
both NL & CR
aus und geben SieAT
ein. Wenn OK zurückgegeben wird, bedeutet dies, dass der ESP8266 erfolgreich eine Verbindung zum R3-Board hergestellt hat.Geben Sie
AT+CWMODE=3
ein und der verwaltete Modus wird auf Station und AP Koexistenz geändert.Um später die Software-Seriennummer verwenden zu können, müssen Sie
AT+UART=9600,8,1,0,0
eingeben, um die Baudrate des ESP8266 auf 9600 zu ändern.
1.2 Blynk konfigurieren¶
Besuchen Sie die BLYNK-Seite und klicken Sie auf START FREE.
Geben Sie Ihre E-Mail-Adresse ein, um ein Konto zu registrieren.
Überprüfen Sie Ihre E-Mail, um die Konto-Registrierung abzuschließen.
Danach erscheint die Blynk Tour. Sie können sie lesen, um grundlegende Informationen über Blynk zu erhalten.
Als nächstes müssen wir mit diesem Quick Start eine Vorlage und ein Gerät erstellen. Klicken Sie auf Let’s go.
Wählen Sie die Hardware und den Verbindungstyp aus.
Ihnen wird mitgeteilt, welche IDE Sie benötigen. Wir empfehlen die Arduino IDE.
Hier ist die benötigte Bibliothek aufgeführt. Die hier empfohlene Bibliothek ist jedoch etwas problematisch. Wir müssen andere Bibliotheken manuell hinzufügen (dazu später mehr). Klicken Sie hier auf Next und eine neue Vorlage sowie ein Gerät werden erstellt.
Die nächsten Schritte wären, den relevanten Code hochzuladen und Ihr Board mit Blynk zu verbinden. Da es jedoch ein Problem mit der zuvor bereitgestellten Bibliothek gibt, müssen Sie erneut andere Bibliotheken hinzufügen. Klicken Sie also hier auf Cancel, um den Quick Start zu beenden.
Klicken Sie auf den Search-Button und Sie sehen das Gerät, das Sie gerade erstellt haben.
Gehen Sie zu diesem Quickstart Device und auf der Device info-Seite sehen Sie
TEMPLATE_ID
,DEVICE_NAME
undAUTH_TOKEN
. Diese Informationen werden Sie später benötigen und müssen sie kopieren.
1.3 Die benötigten Bibliotheken hinzufügen¶
Um Blynk in der Arduino IDE zu nutzen, müssen Sie die richtigen Bibliotheken hinzufügen.
Klicken Sie HIER, scrollen Sie bis zum Ende der Seite und laden Sie die erste
.zip
Datei herunter.Entpacken Sie diese Datei und Sie sehen die folgenden Ordner.
Kopieren Sie alle und fügen Sie sie in das Standard-Bibliotheksverzeichnis der Arduino IDE ein, welches normalerweise unter
C:\Users\xxx\Documents\Arduino\libraries
zu finden ist.Falls Ihr Bibliotheksverzeichnis anders ist, können Sie es überprüfen, indem Sie zu File -> Preferences navigieren.
1.4 Verbindung des R3-Boards mit Blynk herstellen¶
Verbinden Sie das ESP8266-Modul erneut mit dem R3-Board. Hier wird die Software-Serienschnittstelle verwendet, sodass TX und RX mit den Pins 2 und 3 des R3-Boards verbunden werden.
Bemerkung
Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie daher sicher, dass die 9V-Batterie angeschlossen ist.
Öffnen Sie die Datei
1.connect.ino
im Pfad3in1-kit\iot_project\1.connect
oder kopieren Sie diesen Code in die Arduino IDE.Ersetzen Sie die folgenden drei Codezeilen, die Sie von der Device info-Seite Ihres Kontos kopieren können. Diese drei Zeilen ermöglichen es Ihrem R3-Board, Ihr Blynk-Konto zu finden.
#define BLYNK_TEMPLATE_ID "TMPLxxxxxx" #define BLYNK_DEVICE_NAME "Device" #define BLYNK_AUTH_TOKEN "YourAuthToken"
Geben Sie die
ssid
und daspassword
des von Ihnen verwendeten WLANs ein.char ssid[] = "ssid"; char pass[] = "password";
Laden Sie den Code auf das R3-Board, öffnen Sie dann den seriellen Monitor und stellen Sie die Baudrate auf 115200 ein. Wenn das R3-Board erfolgreich mit Blynk kommuniziert, zeigt der serielle Monitor das Zeichen
ready
an.Bemerkung
Wenn die Meldung
ESP antwortet nicht
erscheint, befolgen Sie bitte diese Schritte:Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST für 1 Sekunde mit GND verbinden und dann trennen.
Drücken Sie die Reset-Taste auf dem R3-Board.
Manchmal müssen Sie den obigen Vorgang 3-5 Mal wiederholen. Bitte haben Sie Geduld.
Der Status von Blynk ändert sich von offline zu online.
2. Daten von Blynk abrufen¶
In diesem Kapitel erfahren Sie, wie Sie den Schaltkreis mit Blynk steuern können. Lassen Sie uns die LEDs über das Internet leuchten!
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
1. Schaltkreis aufbauen
Bemerkung
Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie daher sicher, dass die 9V-Batterie angeschlossen ist.

2. Dashboard bearbeiten
Gehen Sie zum Quickstart Device, das Sie zuvor erstellt haben, klicken Sie auf das Menüsymbol in der oberen rechten Ecke und wählen Sie edit dashboard.
Datastreams ermöglichen es den Widgets auf Blynk und dem Code auf dem R3-Board, sich gegenseitig zu erkennen. Um den vollständigen Konfigurationsprozess zu erleben, entfernen Sie alle Datastreams von der Datastreams-Seite.
Bitte lesen Sie die Warnung sorgfältig durch und bestätigen Sie vor dem Löschen der Datastreams, dass sie korrekt ist.
Erstellen Sie einen Datastream des Typs Virtual Pin, der zum Steuern der LED mit Blynks Schalter verwendet wird.
Konfigurieren Sie den Virtual Pin. Da der Knopf und die LED nur EIN und AUS sein müssen, setzen Sie DEN DATENTYP auf
Integer
und MIN und MAX auf0
und1
.Gehen Sie zur Web Dashboard-Seite und löschen Sie die vorhandenen Widgets.
Ziehen Sie ein switch-Widget aus dem Widget Box links in den Arbeitsbereich.
Nun geht es an die Einrichtung.
Wählen Sie Datastream wie zuvor eingestellt.
Nach Auswahl von Datastream sehen Sie einige benutzerdefinierte Einstellungen. Drücken Sie dann auf Speichern.
Klicken Sie abschließend auf Save And Apply.
3. Den Code ausführen
Öffnen Sie die Datei
2.get_data_from_blynk.ino
unter dem Pfad3in1-kit\iot_project\2.get_data_from_blynk
, oder kopieren Sie diesen Code in die Arduino IDE.Ersetzen Sie die
Template ID
,Device Name
undAuth Token
durch Ihre eigenen. Geben Sie auch diessid
und daspassword
Ihres WiFi ein. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.Wählen Sie das richtige Board und den richtigen Port aus und klicken Sie auf den Upoad-Button.
Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Aufforderung, z.B. eine erfolgreiche Verbindung.
Bemerkung
Wenn beim Verbinden die Meldung
ESP antwortet nicht
erscheint, befolgen Sie bitte diese Schritte.Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST für 1 Sekunde auf GND legen und dann wieder entfernen.
Drücken Sie den Reset-Button auf dem R3-Board.
Manchmal müssen Sie den obigen Vorgang 3-5 Mal wiederholen, bitte haben Sie Geduld.
Zurück bei Blynk sehen Sie, dass der Status auf online geändert wurde und Sie können nun das Schalter-Widget auf Blynk verwenden, um die an das R3-Board angeschlossene LED zu steuern.
Wenn Sie Blynk auf mobilen Geräten verwenden möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem mobilen Gerät?.
Wie funktioniert das?
Der Unterschied zwischen dem Code in diesem Projekt und dem Code im vorherigen Kapitel 1.4 Verbindung des R3-Boards mit Blynk herstellen sind die folgenden Zeilen.
const int ledPin=6;
BLYNK_WRITE(V0)
{
int pinValue = param.asInt();// Zuweisen des eingehenden Werts von Pin V0 zu einer Variablen
// Sie können auch Folgendes verwenden:
// String i = param.asStr();
// double d = param.asDouble();
digitalWrite(ledPin,pinValue);
}
void setup()
{
pinMode(ledPin,OUTPUT);
}
Bezüglich der pinMode
und digitalWrite
des ledPin bin ich sicher, dass Sie bereits damit vertraut sind, deshalb werde ich sie nicht noch einmal erklären. Worauf Sie sich konzentrieren müssen, ist die Funktion BLYNK_WRITE(V0)
.
Was sie macht ist, dass, wenn der Wert von Blynks V0
sich ändert, Blynk.Cloud Ihrem Gerät mitteilt „Ich schreibe auf den Virtual Pin V0“, und Ihr Gerät wird in der Lage sein, etwas auszuführen, sobald es diese Information erhält.
Wir haben im vorherigen Schritt den V0 Datastream erstellt und ihn dem Switch-Widget zugewiesen.
Das bedeutet, dass jedes Mal, wenn wir das Switch-Widget bedienen, BLYNK_WRITE(V0)
ausgelöst wird.
Wir schreiben zwei Anweisungen in dieser Funktion.
int pinValue = param.asInt();
Holen Sie sich den Wert von V0 und weisen Sie ihn der Variable pinValue
zu.
digitalWrite(ledPin,pinValue);
Schreiben Sie den erhaltenen Wert von V0 auf den ledPin, sodass das Schalter-Widget auf Blynk die LED steuern kann.
3. Daten an Blynk senden¶
In diesem Kapitel zeigen wir Ihnen, wie Sie Daten an Blynk senden können.
Wir erstellen hier ein Tür- und Fenstererkennungsgerät. Die Schaltung mit dem Reed-Schalter wird neben der Tür und dem Fenster platziert und der Magnet wird am Rand der Tür und des Fensters angebracht. Wenn die Tür oder das Fenster geschlossen sind, wird der Reed-Schalter durch die magnetische Kraft eingeschaltet und der entsprechende Pinwert auf dem R3-Board ändert sich. Blynk.cloud erhält diesen Wert, sodass Sie sehen können, ob die Türen und Fenster Ihres Hauses geschlossen sind, auch wenn Sie nicht zu Hause sind.
Jetzt werden wir ein LED-Widget in Blynk verwenden, um anzuzeigen, ob Ihre Fenster und Türen geschlossen sind (d.h. ob der Reed-Schalter ein- oder ausgeschaltet ist).
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
1. Die Schaltung aufbauen
Bemerkung
Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie daher sicher, dass die 9V-Batterie angeschlossen ist.

2. Dashboard bearbeiten
Erstellen Sie einen Datastream vom Typ Virtual Pin auf der Datastream-Seite, um den Wert des Reed-Schalters abzurufen. Stellen Sie den DATENTYP auf Integer und MIN und MAX auf 0 und 1.
Ziehen Sie ein LED widget auf die Wed Dashboard-Seite. Bei einem Wert von 1 leuchtet es (farbig), ansonsten ist es weiß.
Auf der Einstellungsseite des LED widget wählen Sie Datastream als Reed(V1) und speichern es.
3. Den Code ausführen
Öffnen Sie die Datei
3.push_data_to_blynk.ino
unter dem Pfad3in1-kit\iot_project\3.push_data_to_blynk
oder kopieren Sie diesen Code in die Arduino IDE.Ersetzen Sie die
Template ID
,Device Name
undAuth Token
durch Ihre eigenen Werte. Geben Sie außerdem diessid
und daspassword
Ihres WLANs ein. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.Nachdem Sie das richtige Board und den Port ausgewählt haben, klicken Sie auf die Schaltfläche Upoad.
Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie, bis eine Meldung wie eine erfolgreiche Verbindung angezeigt wird.
Bemerkung
Wenn die Meldung
ESP antwortet nicht
erscheint, wenn Sie sich verbinden, befolgen Sie bitte diese Schritte:Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den RST-Pin 1 Sekunde lang auf GND setzen und dann entfernen.
Drücken Sie die Reset-Taste auf dem R3-Board.
Manchmal müssen Sie den obigen Vorgang 3-5 Mal wiederholen. Bitte haben Sie Geduld.
Jetzt zeigt Blynk den Status Ihrer Türen und Fenster an. Wenn Ihre Türen und Fenster geschlossen sind, wird das LED-Widget grün sein, ansonsten grau.
Wenn Sie Blynk auf mobilen Geräten verwenden möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem mobilen Gerät?.
Wie funktioniert das?
In diesem Beispiel sollten Sie sich auf die folgenden Zeilen konzentrieren. „Daten jede Sekunde an den Blynk Cloud’s V1 Datastream senden“ wird durch diese Zeilen definiert.
BlynkTimer timer;
void myTimerEvent()
{
Blynk.virtualWrite(V1, pinValue);
}
void setup()
{
timer.setInterval(1000L, myTimerEvent);
}
void loop()
{
timer.run(); // Initiiert BlynkTimer
}
Die Blynk-Bibliothek bietet einen eingebauten Timer; zuerst erstellen wir ein Timer-Objekt.
BlynkTimer timer;
Legen Sie das Timer-Intervall in setup()
fest. Hier setzen wir es so, dass die Funktion myTimerEvent()
alle 1000ms ausgeführt wird.
timer.setInterval(1000L, myTimerEvent);
Führen Sie BlynkTimer in loop()
aus.
timer.run();
Bearbeiten Sie die benutzerdefinierte Funktion myTimerEvent()
. Der Code Blynk.virtualWrite(V1, pinValue)
wird verwendet, um den Datenpin-Wert für V1 zu schreiben.
void myTimerEvent()
{
Blynk.virtualWrite(V1, pinValue);
}
4. Cloud-Musikplayer¶
Das Ziel dieses Projekts ist es, einen Musikplayer mit Blynk zu erstellen. Die Musik wird genauso abgespielt wie in 5.7 Tone() oder noTone(), indem man das Lied im Programm schreibt und es mit einem passiven Buzzer abspielt. In diesem Beispiel können wir jedoch den Schalter klicken, um die Wiedergabe zu starten/anhalten und den Schieberegler verschieben, um den Wiedergabefortschritt zu ändern.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
1. Schaltung aufbauen
Bemerkung
Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie daher sicher, dass die 9V-Batterie angeschlossen ist.

2. Dashboard bearbeiten
Erstellen Sie einen Datastream des Typs Virtual Pin auf der Datastream-Seite als den später vom Slider-Widget oder Code geänderten Wert. Setzen Sie den DATENTYP auf Integer und MIN und MAX auf 0 und 30.
Erstellen Sie auch einen weiteren Datastream des Typs Virtual Pin, um den Musiknamen anzuzeigen, und setzen Sie den DATENTYP auf
String
.Gehen Sie zur Wed Dashboard-Seite, ziehen Sie ein Switch-Widget und setzen Sie Datastream auf V0 (V0 ist bereits in 2. Daten von Blynk abrufen gesetzt); ziehen Sie ein Label-Widget und setzen Sie es auf V3; ziehen Sie ein Slider-Widget und setzen Sie es auf V2.
Bemerkung
Ihre virtuellen Pins könnten sich von meinen unterscheiden, Ihre gelten. Sie müssen jedoch die entsprechende Pinnummer im Code ändern.
3. Den Code ausführen
Öffnen Sie die Datei
4.cloud_music_player.ino
unter dem Pfad3in1-kit\iot_project\4.cloud_music_player
.Ersetzen Sie die
Template ID
, denDevice Name
und denAuth Token
durch Ihre eigenen Daten. Sie müssen auch diessid
und daspassword
Ihres verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen wir auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.Nachdem Sie das richtige Board und den Port ausgewählt haben, klicken Sie auf den Upoad-Button.
Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Meldung wie eine erfolgreiche Verbindung.
Bemerkung
Wenn die Nachricht
ESP reagiert nicht
beim Verbinden erscheint, folgen Sie bitte diesen Schritten.Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST für 1 Sekunde mit GND verbinden und dann trennen.
Drücken Sie den Reset-Button auf dem R3-Board.
Manchmal müssen Sie den obigen Vorgang 3-5 Mal wiederholen, bitte haben Sie Geduld.
Nun können Sie mit Blynks Button-Steuerwidget die Musik starten/anhalten und mit dem Schieberegler den Wiedergabefortschritt anpassen, und Sie sehen auch den Namen des Musikstücks.
Wenn Sie Blynk auf mobilen Geräten nutzen möchten, verweisen wir auf Wie verwendet man Blynk auf einem mobilen Gerät?.
Wie funktioniert es?
Der Datenstrom V0 wird verwendet, um den Status des Switch-Widgets zu erhalten und der Variablen musicPlayFlag zuzuweisen, die das Pausieren und Abspielen der Musik steuert.
int musicPlayFlag=0;
BLYNK_WRITE(V0)
{
musicPlayFlag = param.asInt(); // MUSIK STARTEN/PAUSIEREN
}
Der Datenstrom V2 wird verwendet, um den Wert des Schieberegler-Widgets zu erhalten und ihn der Variablen scrubBar zuzuweisen, wenn der Schieberegler verschoben wird.
int scrubBar=0;
BLYNK_WRITE(V2)
{
scrubBar=param.asInt();
}
Wenn das Gerät mit dem Blynk Cloud verbunden ist, schreiben Sie den Musiknamen für den V3 Datenstrom und zeigen Sie ihn dann mit dem Label-Widget an.
BLYNK_CONNECTED() {
String songName = "Ode an die Freude";
Blynk.virtualWrite(V3, songName);
}
Der Blynk Timer wird jede Sekunde ausgeführt. Die Musik wird abgespielt, wenn musicPlayFlag nicht 0 ist, d.h. das Switch-Widget ist EIN.
Sobald zwei Noten gespielt werden, wird die Fortschrittsbalkenvariable scrubBar
um 2 erhöht, und der Wert wird dann an die Blynk Cloud geschrieben, die den Wert des Slider-Widgets synchronisiert.
void myTimerEvent()
{
if(musicPlayFlag!=0)
{
tone(buzzerPin,melody[scrubBar],250);
scrubBar=(scrubBar+1)%(sizeof(melody)/sizeof(int));
delay(500);
tone(buzzerPin,melody[scrubBar],250);
scrubBar=(scrubBar+1)%(sizeof(melody)/sizeof(int));
Serial.println(scrubBar);
Blynk.virtualWrite(V2, scrubBar);
}
}
5. Überwachung des häuslichen Umfelds¶
In diesem Kapitel werden wir Blynk verwenden, um einen Monitor für die häusliche Umgebung zu erstellen. Mit dem DHT11 und dem Fotowiderstand können Sie die Temperatur, Luftfeuchtigkeit und Lichtintensität eines Raumes messen. Indem Sie diese Werte an Blynk senden, können Sie die Umgebung Ihres Zuhauses über das Internet überwachen.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktischer, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Alternativ können Sie diese auch über die untenstehenden Links einzeln erwerben.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
1. Den Schaltkreis aufbauen
Bemerkung
Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.

2. Dashboard bearbeiten
Für die Erfassung von Luftfeuchtigkeitswerten erstellen Sie einen Datastream vom Typ Virtual Pin auf der Datastream-Seite. Legen Sie den DATENTYP auf Double und MIN und MAX auf 0 und 100 fest. Setzen Sie auch die Einheiten auf Percentage, %.
Erstellen Sie anschließend einen Datastream vom Typ Virtual Pin zur Erfassung der Temperatur. Legen Sie den DATENTYP auf
Double
, MIN und MAX auf-30
und50
und die Einheiten auf Celsius, °C fest.Erstellen Sie zudem einen Datastream vom Typ Virtual Pin zur Erfassung der Lichtintensität. Nutzen Sie den Standarddatentyp - Integer mit den Werten MIN und MAX, die auf
0
und1024
festgelegt sind.Navigieren Sie zur Wed Dashboard-Seite, ziehen Sie zwei Label-Widgets und weisen Sie ihnen die Datenströme V4 und V5 zu. Ziehen Sie ein Gauge-Widget und setzen Sie den Datenstrom auf V6. In den Widget-Einstellungen können Sie Farbwechsel basierend auf Wert aktivieren und die passende Farbe wählen, um das Widget ansprechender und intuitiver zu gestalten.

3. Den Code ausführen
Öffnen Sie die Datei
5.home_environment_monitoring.ino
unter dem Pfad3in1-kit\iot_project\5.home_environment_monitoring
oder kopieren Sie diesen Code in die Arduino IDE.Bemerkung
Hier wird die
DHT sensor library
verwendet. Sie können sie über den Library Manager installieren.
Ersetzen Sie die
Template ID
,Device Name
undAuth Token
durch Ihre eigenen Angaben. Sie müssen auch dasssid
und daspassword
des von Ihnen verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.Nach Auswahl des richtigen Boards und Ports klicken Sie auf die Upoad-Taste.
Öffnen Sie den seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie, bis eine Meldung wie eine erfolgreiche Verbindung erscheint.
Bemerkung
Wenn beim Verbinden die Meldung
ESP antwortet nicht
erscheint, befolgen Sie bitte diese Schritte.Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den RST-Pin für 1 Sekunde auf GND setzen und dann trennen.
Drücken Sie die Reset-Taste auf dem R3-Board.
Manchmal müssen Sie den oben beschriebenen Vorgang 3-5 Mal wiederholen, bitte haben Sie Geduld.
Nun sehen Sie die aktuelle Umgebungstemperatur, Luftfeuchtigkeit und Lichtintensität auf Blynk.
Wenn Sie Blynk auf mobilen Geräten verwenden möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem mobilen Gerät?.
Wie funktioniert das?
Diese beiden Funktionen werden verwendet, um die Temperatur, Luftfeuchtigkeit und Lichtintensität des Raumes zu ermitteln.
int readLight(){
return analogRead(lightPin);
}
bool readDHT() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return false;
}
return true;
}
Mit dem Blynk Timer
werden die Umgebungstemperatur, Luftfeuchtigkeit und Lichtintensität jede Sekunde abgerufen und an den Datenstrom auf der Blynk Cloud gesendet, von wo aus die Widgets die Daten anzeigen.
void myTimerEvent()
{
bool chk = readDHT();
int light = readLight();
if(chk){
Blynk.virtualWrite(V4,humidity);
Blynk.virtualWrite(V5,temperature);
}
Blynk.virtualWrite(V6,light);
}
6. Pflanzenüberwachung¶
Das Ziel dieses Projekts ist es, ein intelligentes Bewässerungssystem zu erstellen, das die aktuelle Temperatur, Luftfeuchtigkeit, Lichtintensität und Bodenfeuchtigkeit erkennt und diese auf Blynk anzeigt.
Sobald Sie den Schalter in der Blynk Cloud umlegen, beginnt die Pumpe zu arbeiten und die Pflanzen werden bewässert.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM SET |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
- |
|
- |
1. Schaltung aufbauen
Bemerkung
Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten. Stellen Sie also sicher, dass die 9V-Batterie angeschlossen ist.

2. Dashboard bearbeiten
Die in den vorherigen Projekten erstellten Datenströme müssen gespeichert werden und werden auch in diesem Projekt verwendet.
Zur Aufzeichnung der Bodenfeuchtigkeit erstellen Sie einen weiteren Datastream vom Typ Virtual Pin auf der Datastream-Seite. Stellen Sie den DATENTYP auf
Integer
und MIN und MAX auf0
und1024
.Gehen Sie nun zur Wed Dashboard-Seite, ziehen Sie 2 Label-Widgets und setzen Sie ihre Datenströme auf V4 bzw. V5; ziehen Sie 2 Gauge-Widgets und setzen Sie ihre Datenströme auf V6 und V7; ziehen Sie zuletzt ein Switch-Widget und setzen Sie dessen Datenstrom auf V0.
3. Code ausführen
Öffnen Sie die Datei 6.plant_monitoring.ino
unter dem Pfad 3in1-kit\iot_project\6.plant_monitoring
oder kopieren Sie diesen Code in die Arduino IDE.
Bemerkung
Hier wird die
DHT sensor library
verwendet. Sie können sie über den Library Manager installieren.![]()
Ersetzen Sie die
Template ID
, denGerätenamen
und denAuth Token
durch Ihre eigenen Angaben. Geben Sie auch diessid
und dasPasswort
des von Ihnen verwendeten WLANs ein. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.Nach Auswahl des richtigen Boards und Ports klicken Sie auf die Schaltfläche Upoad.
Öffnen Sie den Serienmonitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Aufforderung, wie z.B. eine erfolgreiche Verbindung.
Bemerkung
Wenn die Meldung
ESP antwortet nicht
erscheint, wenn Sie sich verbinden, folgen Sie bitte diesen Schritten.Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST für 1 Sekunde mit GND verbinden und dann trennen.
Drücken Sie den Reset-Knopf auf dem R3-Board.
Manchmal müssen Sie die oben genannte Operation 3-5 Mal wiederholen. Bitte haben Sie Geduld.
Zurück zu Blynk, Sie sehen die aktuelle Temperatur, Luftfeuchtigkeit, Lichtintensität und Bodenfeuchtigkeit. Sie können die Pumpe die Pflanzen bewässern lassen, falls notwendig, indem Sie das Button Control-Widget anklicken.
Wenn Sie Blynk auf mobilen Geräten verwenden möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem mobilen Gerät?.
Wie funktioniert das?
Dieses BLYNK_WRITE
bewirkt, dass Blynks Switch-Widget die Pumpe startet, wenn es EIN ist und sie ausschaltet, wenn es AUS ist.
BLYNK_WRITE(V0)
{
if(param.asInt()==1){
digitalWrite(pumpA,HIGH);
}else{
digitalWrite(pumpA,LOW);
}
}
Diese drei Funktionen werden verwendet, um die aktuelle Umgebungstemperatur, Luftfeuchtigkeit, Lichtintensität und Bodenfeuchtigkeit zu erhalten.
int readMoisture(){
return analogRead(moisturePin);
}
int readLight(){
return analogRead(lightPin);
}
bool readDHT() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor)
humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return false;
}
return true;
}
Mit dem Blynk Timer
werden die Umgebungstemperatur, Luftfeuchtigkeit, Lichtintensität und Bodenfeuchtigkeit jede Sekunde abgerufen und an den Datenstrom auf der Blynk Cloud gesendet, von dem aus die Widgets die Daten anzeigen.
void myTimerEvent()
{
bool chk = readDHT();
int light = readLight();
int moisture = readMoisture();
if(chk){
Blynk.virtualWrite(V4,humidity);
Blynk.virtualWrite(V5,temperature);
}
Blynk.virtualWrite(V6,light);
Blynk.virtualWrite(V7,moisture);
}
7. Strombegrenzendes Tor¶
In manchen Situationen, wie zum Beispiel auf Parkplätzen, ist eine Mengensteuerung erforderlich.
Hier erstellen wir ein intelligentes Tor: Ein Servo dient als Tor und ein IR-Hinderniserkennungsdetektor wird davor platziert; wird ein Objekt (wie ein Auto) erkannt, öffnet sich das Tor und die Anzahl erhöht sich um 1. Die Anzahl wird auf einer 7-Segment-Anzeige dargestellt und auch auf die Blynk Cloud hochgeladen, damit Sie sie aus der Ferne einsehen können. Schließlich verfügt Blynk über ein Schalter-Widget, um dieses intelligente Torsystem zu aktivieren oder zu deaktivieren.
Benötigte Komponenten
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist sicherlich praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
1. Bauen Sie den Schaltkreis
Bemerkung
Das ESP8266-Modul benötigt einen hohen Strom, um eine stabile Betriebsumgebung zu gewährleisten, also stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.

2. Dashboard bearbeiten
Um die Anzahl aufzuzeichnen, erstellen Sie einen Datastream vom Typ Virtual Pin auf der Datastream-Seite. Setzen Sie den DATENTYP auf
Integer
und MIN und MAX auf0
und10
.Gehen Sie nun zur Wed Dashboard-Seite, ziehen Sie ein Switch-Widget, um dessen Datenstrom auf V0 und ein Label-Widget, um dessen Datenstrom auf V8 zu setzen.
3. Den Code ausführen
Öffnen Sie die Datei
7.current_limiting_gate.ino
unter dem Pfad3in1-kit\iot_project\7.current_limiting_gate
oder kopieren Sie diesen Code in die Arduino IDE.Ersetzen Sie die
Template ID
, denDevice Name
und denAuth Token
durch Ihre eigenen. Geben Sie auch diessid
und daspassword
des von Ihnen verwendeten WLANs ein. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.Nach Auswahl des richtigen Boards und Ports klicken Sie auf die Schaltfläche Upoad.
Öffnen Sie den Serienmonitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Aufforderung, wie z.B. eine erfolgreiche Verbindung.
Bemerkung
Wenn die Meldung
ESP antwortet nicht
erscheint, wenn Sie sich verbinden, folgen Sie bitte diesen Schritten.Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST für 1 Sekunde mit GND verbinden und dann trennen.
Drücken Sie die Reset-Taste auf dem R3-Board.
Manchmal müssen Sie die obige Operation 3-5 Mal wiederholen, bitte haben Sie Geduld.
Klicken Sie jetzt auf das Button Control-Widget in Blynk, um das intelligente Türsystem zu aktivieren. Wenn das IR-Hinderniserkennungsmodul ein Hindernis erkennt, öffnet sich das Tor und die 7-Segment-Anzeige sowie das Count-Widget in Blynk werden um 1 erhöht.
Wenn Sie Blynk auf mobilen Geräten verwenden möchten, beachten Sie bitte Wie verwendet man Blynk auf einem mobilen Gerät?.
Wie funktioniert das?
Die Funktion BLYNK_WRITE(V0)
erhält den Status des Switch-Widgets und weist ihn der Variablen doorFlag
zu, die verwendet wird, um zu bestimmen, ob das intelligente Torsystem aktiviert ist oder nicht.
BLYNK_WRITE(V0)
{
doorFlag = param.asInt(); // Aktiviere das Tor
}
Im Blynk-Timer wird doorFlag
jede Sekunde geprüft, und wenn es aktiviert ist, wird die Hauptfunktion des Tores ausgeführt.
void myTimerEvent()
{
if (doorFlag)
{
channelEntrance();
}
}
Die Hauptfunktion des Tores ist channelEntrance()
.
Wenn ein Objekt sich dem Tor nähert (der Sensor erkennt ein Hindernis), wird count
um 1 erhöht.
Schreiben Sie count
in den Datastream V8
der Blynk Cloud und die 7-Segment-Anzeige auf der Schaltung und öffnen Sie das Tor.
Wenn das Objekt von vorhanden zu nicht vorhanden wechselt, d.h. das Objekt hat das Tor betreten, schließen Sie das Tor.
void channelEntrance()
{
int currentState = digitalRead(irPin); // 0:Hindernis 1:kein Hindernis
if (currentState == 0 && lastState == 1) {
count=(count+1)%10;
Blynk.virtualWrite(V8, count);
showNumber(count);
operateGate(true);
} else if ((currentState == 1 && lastState == 0)) {
operateGate(false);
}
lastState = currentState;
}
Die Funktion showNumber(int num)
dient dazu, die 7-Segment-Anzeige den Wert anzeigen zu lassen.
void showNumber(int num)
{
digitalWrite(STcp, LOW); //ST_CP erden und so lange auf LOW halten, wie Daten übertragen werden
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
digitalWrite(STcp, HIGH); //ST_CP hochziehen, um die Daten zu speichern
}
Die Funktion operateGate(bool openGate)
öffnet das Tor langsam, wenn die Referenz True
ist, und schließt das Tor langsam, wenn die Referenz False
ist.
void operateGate(bool openGate) {
if (openGate == true)
{
// open gate
while (angle <= 90) {
angle++;
myservo.write(angle);
delay(5);
}
} else {
// close gate
while (angle >= 0){
angle--;
myservo.write(angle);
delay(5);
}
}
}
8. IoT Auto¶
Für dieses Projekt haben wir die Blynk-APP auf dem Handy verwendet, um das Auto zu steuern. Sie müssen jedoch Auto-Projekte konsultieren, um das Auto zusammenzubauen und ein grundlegendes Verständnis dafür zu erhalten. Im Zeitalter der Verbreitung des 5G-Netzwerks könnte dieser Modus zu einer der Hauptproduktionsmethoden in vielen Branchen werden. Lassen Sie uns also dieses Spiel im Voraus erleben.
1. Schaltkreis aufbauen

2. Dashboard bearbeiten
In Blynk auf dem Handy können keine Datastreams bearbeitet werden. Daher müssen wir diese Schritte immer noch auf der Web-Seite durchführen.
Erstellen Sie auf der Datastream-Seite einen Datastream vom Typ Virtual Pin, um den X-Achsen-Wert des Joysticks zu erfassen. Setzen Sie NAME auf
Xvalue
, DATENTYP aufInteger
und MIN und MAX auf-10
und10
.Erstellen Sie einen Datastream vom Typ Virtual Pin, um den Y-Achsen-Wert des Joysticks zu erfassen. Setzen Sie NAME auf
Yvalue
, DATENTYP aufInteger
, MIN und MAX auf-10
und10
.
Führen Sie dann die folgenden Schritte auf Ihrem Handy durch.
Suchen Sie in GOOGLE Play oder im APP Store nach „Blynk IoT“ (nicht Blynk(legacy)) und laden Sie es herunter.
Nach dem Öffnen der APP melden Sie sich an. Dieses Konto sollte mit dem Konto auf dem Web-Client übereinstimmen.
Gehen Sie dann zum Dashboard (wenn Sie keines haben, erstellen Sie eines), und Sie werden sehen, dass das Dashboard für Mobilgeräte und Web voneinander unabhängig sind.

Klicken Sie auf das Bearbeitungssymbol.
Klicken Sie auf den leeren Bereich.
Wählen Sie ein Joystick-Widget aus.

Jetzt sehen Sie ein Joystick-Widget im leeren Bereich, klicken Sie darauf.
Die Joystick-Einstellungen erscheinen, wählen Sie die von Ihnen in den Datastreams eingestellten Xvalue und Yvalue.
Kehren Sie zur Dashboard-Seite zurück, und Sie können den Joystick nach Belieben bedienen.

3. Code ausführen
Öffnen Sie die Datei
8.iot_car.ino
unter dem Pfad3in1-kit\iot_project\8.iot_car
oder kopieren Sie diesen Code in die Arduino IDE.Ersetzen Sie die
Template ID
,Device Name
undAuth Token
durch Ihre eigenen Angaben. Geben Sie auch diessid
und daspassword
des von Ihnen verwendeten WLANs ein. Für detaillierte Anleitungen konsultieren Sie bitte 1.4 Verbindung des R3-Boards mit Blynk herstellen.Wählen Sie das richtige Board und den Port aus und klicken Sie auf den Upoad-Button.
Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie, bis eine Meldung wie eine erfolgreiche Verbindung erscheint.
Bemerkung
Wenn die Meldung
ESP reagiert nicht
erscheint, wenn Sie sich verbinden, folgen Sie bitte diesen Schritten:Stellen Sie sicher, dass die 9V-Batterie angeschlossen ist.
Setzen Sie das ESP8266-Modul zurück, indem Sie den Pin RST 1 Sekunde lang auf GND verbinden und dann abziehen.
Drücken Sie die Reset-Taste auf dem R3-Board.
Manchmal müssen Sie die obige Operation 3-5 Mal wiederholen, bitte haben Sie Geduld.
Ziehen Sie jetzt das USB-Kabel ab und versorgen Sie den Wagen nur mit einer 9V-Batterie. Warten Sie, bis die LED aufleuchtet, was bedeutet, dass das Auto mit Blynk verbunden ist.
Öffnen Sie Blynk auf Ihrem Handy, und Sie können das Joystick-Widget verwenden, um die Bewegung des Autos zu steuern.
Wie funktioniert das?
Diese Funktionen dienen zur Steuerung der Bewegung des Autos.
void moveForward(int speed) {...}
void moveBackward(int speed) {...}
void turnRight(int speed) {...}
void turnLeft(int speed) {...}
void stopMove() {...}
Der IoT-Bereich liest die Werte des Joystick-Widgets aus und weist sie den Variablen Xvalue
und Yvalue
zu.
int Xvalue = 0;
int Yvalue = 0;
BLYNK_WRITE(V9)
{
Xvalue = param.asInt();
}
BLYNK_WRITE(V10)
{
Yvalue = param.asInt();
}
In loop()
lässt man das Auto verschiedene Aktionen basierend auf Xvalue
und Yvalue
ausführen.
if (Yvalue >= 5) {
moveForward(255);
} else if (Yvalue <= -5) {
moveBackward(255);
} else if (Xvalue >= 5) {
turnRight(150);
} else if (Xvalue <= -5) {
turnLeft(150);
} else {
stopMove();
}
Ebenso fügen Sie eine Netzwerkstatus-Bestimmung zu loop()
hinzu, um eine LED aufzuleuchten, wenn sie mit Blynk Cloud verbunden ist.
if (!Blynk.connected()) {
digitalWrite(ledPin, LOW);
Serial.print("offline!");
bool result = Blynk.connect();
Serial.println(result);
} else {
digitalWrite(ledPin, HIGH);
}
Mit Scratch spielen¶
Neben der Programmierung in der Arduino IDE können wir auch grafische Programmierung nutzen.
Wir empfehlen hier die Programmierung mit Scratch. Allerdings ist das offizielle Scratch derzeit nur mit Raspberry Pi kompatibel. Deshalb haben wir uns mit dem Unternehmen STEMPedia zusammengeschlossen, das eine auf Scratch 3 basierende grafische Programmiersoftware für Arduino-Platinen (Uno, Mega2560 und Nano) entwickelt hat: PictoBlox.

Es behält die Grundfunktionen von Scratch 3 bei, fügt aber auch Steuerplatinen hinzu, wie Arduino Uno, Mega, Nano, ESP32, Microbit und STEAMPedia-Eigenbau-Hauptplatinen. Damit können externe Sensoren und Roboter verwendet werden, um die Sprites auf der Bühne zu steuern, mit starken Hardware-Interaktionsfähigkeiten.
Darüber hinaus verfügt es über KI und maschinelles Lernen. Selbst wenn Sie nur wenig Programmiererfahrung haben, können Sie diese populären und hochmodernen Technologien erlernen und nutzen.
Sie müssen lediglich die Scratch-Programmierblöcke per Drag & Drop verschieben und coole Spiele, Animationen, interaktive Projekte erstellen und sogar Roboter nach Ihren Wünschen steuern!
Jetzt beginnen wir die Entdeckungsreise!
1. Einführung
1.1 PictoBlox installieren¶
Klicken Sie auf diesen Link: https://thestempedia.com/product/pictoblox/download-pictoblox/, wählen Sie das passende Betriebssystem (Windows, macOS, Linux) und folgen Sie den Anweisungen zur Installation.

1.2 Einführung in die Benutzeroberfläche¶

Sprites
Ein Sprite ist ein Objekt oder Charakter, der verschiedene Aktionen in einem Projekt ausführt. Es versteht und befolgt die ihm gegebenen Befehle. Jeder Sprite verfügt über spezifische Kostüme und Töne, die Sie ebenfalls anpassen können.
Bühne
Die Bühne ist der Bereich, in dem der Sprite Aktionen in Hintergründen gemäß Ihrem Programm ausführt.
Hintergründe
Hintergründe dienen zur Dekoration der Bühne. Sie können einen Hintergrund aus PictoBlox auswählen, selbst einen zeichnen oder ein Bild von Ihrem Computer hochladen.
Skriptbereich
Ein Skript ist ein Programm oder ein Code im PictoBlox/Scratch-Jargon. Es handelt sich um einen Satz von „Blöcken“, die in einer bestimmten Reihenfolge angeordnet sind, um eine Aufgabe oder eine Reihe von Aufgaben auszuführen. Sie können mehrere Skripte schreiben, die alle gleichzeitig laufen können. Skripte können Sie nur im zentralen Skriptbereich des Bildschirms schreiben.
Blöcke
Blöcke sind wie Teile eines Puzzles, die verwendet werden, um Programme zu schreiben, indem sie einfach im Skriptbereich zusammengestapelt werden. Die Verwendung von Blöcken zum Schreiben von Code kann die Programmierung erleichtern und die Wahrscheinlichkeit von Fehlern verringern.
Blockpaletten
Die Blockpaletten befinden sich im linken Bereich und sind nach ihren Funktionen benannt, wie Bewegung, Ton und Steuerung. Jede Palette enthält verschiedene Blöcke. Zum Beispiel steuern die Blöcke in der Bewegungspalette die Bewegung der Sprites, und die Blöcke in der Steuerungspalette steuern die Arbeit des Skripts unter bestimmten Bedingungen.
Es gibt andere Arten von Blockpaletten, die über die Schaltfläche Erweiterung hinzufügen unten links geladen werden können.
Modi
Im Gegensatz zu Scratch verfügt PictoBlox über zwei Modi:
Bühnenmodus: In diesem Modus können Sie Skripte für den Sprite und Platinen schreiben, um in Echtzeit mit Sprites zu interagieren. Wenn Sie die Platine von PictoBlox trennen, können Sie nicht mehr interagieren.
Hochlade-Modus: Dieser Modus ermöglicht es Ihnen, Skripte zu schreiben und auf die Platine hochzuladen, sodass Sie sie auch verwenden können, wenn sie nicht mit Ihrem Computer verbunden ist, beispielsweise, um ein Skript für sich bewegende Roboter hochzuladen.
Für weitere Informationen besuchen Sie bitte: https://thestempedia.com/tutorials/getting-started-pictoblox
1.3 Schnellanleitung zu PictoBlox¶
Lernen wir nun, wie man PictoBlox in zwei Modi verwendet.
Es gibt auch eine On-Board-LED, die an Pin 13 auf dem R3-Board angeschlossen ist. Wir werden lernen, wie man diese LED in 2 verschiedenen Modi blinken lässt.

Bühnenmodus¶
1. Verbindung mit dem Arduino-Board
Schließen Sie Ihr Arduino-Board mit einem USB-Kabel an den Computer an. In der Regel wird der Computer Ihr Board automatisch erkennen und schließlich einen COM-Port zuweisen.
Öffnen Sie PictoBlox. Die Python-Programmierschnittstelle wird standardmäßig geöffnet. Wir müssen zur Blocks-Schnittstelle wechseln.

Dann sehen Sie in der oberen rechten Ecke die Option zum Wechseln des Modus. Standardmäßig ist der Bühnenmodus aktiviert, auf dem Tobi auf der Bühne steht.

Klicken Sie in der oberen rechten Navigationsleiste auf Board, um das Board auszuwählen.

Wählen Sie zum Beispiel Arduino Uno.

Ein Verbindungsfenster wird geöffnet, in dem Sie den zu verbindenden Port auswählen können. Kehren Sie zur Startseite zurück, wenn die Verbindung hergestellt ist. Wenn Sie die Verbindung während des Gebrauchs unterbrechen, können Sie auch auf Connect klicken, um erneut eine Verbindung herzustellen.

Gleichzeitig erscheinen im Block Palette palettenbezogene Elemente, wie Arduino Uno, Aktuatoren usw.

2. Firmware hochladen
Da wir im Bühnenmodus arbeiten möchten, müssen wir die Firmware auf das Board hochladen. Dies gewährleistet die Echtzeitkommunikation zwischen dem Board und dem Computer. Das Hochladen der Firmware ist ein einmaliger Vorgang. Klicken Sie dazu auf die Schaltfläche Firmware hochladen.
Nach einer kurzen Wartezeit wird die Erfolgsmeldung zum Hochladen angezeigt.
Bemerkung
Wenn Sie dieses Arduino-Board zum ersten Mal in PictoBlox verwenden oder wenn dieses Arduino zuvor mit der Arduino IDE hochgeladen wurde, müssen Sie auf Upload Firmware tippen, bevor Sie es verwenden können.

3. Programmierung
Skript direkt öffnen und ausführen
Natürlich können Sie die Skripte direkt öffnen und ausführen, aber laden Sie sie bitte zuerst von github herunter.
Sie können auf File in der oberen rechten Ecke klicken und dann Open auswählen.

Wählen Sie Open from Computer.

Navigieren Sie dann zu 3in1-kit\scratch_project\code
und öffnen Sie 1. Stage Mode.sb3. Stellen Sie sicher, dass Sie den benötigten Code von github heruntergeladen haben.

Klicken Sie direkt auf das Skript, um es auszuführen. Bei manchen Projekten klicken Sie auf die grüne Flagge oder auf das Sprite.

Schritt-für-Schritt-Programmierung
Sie können das Skript auch Schritt für Schritt schreiben, indem Sie diesen Anweisungen folgen.
Klicken Sie auf die Arduino Uno-Palette.

Die LED auf dem Arduino-Board wird vom digitalen Pin 13 gesteuert (nur 2 Zustände, HIGH oder LOW). Ziehen Sie den Block [set digital pin out as] in den Skriptbereich.
Da der Standardzustand der LED leuchtet, setzen Sie jetzt Pin 13 auf LOW und klicken Sie auf diesen Block. Sie werden sehen, dass die LED erlischt.
[set digital pin out as]: Setzt die digitalen Pins (2~13) auf (HIGH/LOW) Level.

Um den Effekt der kontinuierlich blinkenden LED zu sehen, müssen Sie die Blöcke [Wait 1 seconds] und [forever] aus der Control-Palette verwenden. Wenn Sie auf diese Blöcke nach dem Schreiben klicken, zeigt ein gelber Halo, dass sie ausgeführt werden.
[Wait 1 seconds]: aus der Control-Palette, dient zum Festlegen des Zeitintervalls zwischen 2 Blöcken.
[forever]: aus der Control-Palette, ermöglicht es dem Skript, kontinuierlich zu laufen, es sei denn, es wird manuell pausiert.

Hochlade-Modus¶
1. Verbindung zum Arduino-Board herstellen
Verbinden Sie Ihr Arduino-Board über ein USB-Kabel mit dem Computer. In der Regel wird der Computer Ihr Board automatisch erkennen und schließlich einen COM-Port zuweisen.
Öffnen Sie PictoBlox und klicken Sie in der oberen rechten Navigationsleiste auf Board, um das Board auszuwählen.

Wählen Sie beispielsweise Arduino Uno.

Ein Verbindungsfenster wird geöffnet, in dem Sie den Port zum Verbinden auswählen können. Nach Abschluss der Verbindung kehren Sie zur Startseite zurück. Wenn die Verbindung während der Nutzung unterbrochen wird, können Sie auch auf Connect klicken, um sie wiederherzustellen.

Gleichzeitig werden im Block Palette Paletten in Bezug auf Arduino Uno, wie z.B. Arduino Uno, Aktuatoren usw., angezeigt.

Nach der Auswahl des Hochlade-Modus wird die Bühne zum ursprünglichen Arduino-Codebereich wechseln.

2. Programmierung
Skript direkt öffnen und ausführen
Sie können in der oberen rechten Ecke auf File klicken.

Wählen Sie Open from Computer.

Navigieren Sie dann zum Pfad 3in1-kit\scratch_project\code
und öffnen Sie 1. Upload Mode.sb3. Stellen Sie sicher, dass Sie den erforderlichen Code von github heruntergeladen haben.

Klicken Sie abschließend auf die Schaltfläche Upload Code.

Programmierung Schritt für Schritt
Sie können das Skript auch Schritt für Schritt schreiben, indem Sie diesen Anweisungen folgen.
Klicken Sie auf die Arduino Uno-Palette.

Ziehen Sie [when Arduino Uno starts up] in den Skriptbereich. Dies ist für jedes Skript erforderlich.

Die LED auf dem Arduino-Board wird durch den digitalen Pin13 gesteuert (nur 2 Zustände HIGH oder LOW). Ziehen Sie also den Block [set digital pin out as] in den Skriptbereich.
Da der Standardzustand der LED beleuchtet ist, stellen Sie Pin 13 jetzt auf LOW und klicken Sie auf diesen Block. Sie werden sehen, dass die LED erlischt.
[set digital pin out as]: Setzt den digitalen Pin (2~13) auf den (HIGH/LOW) Zustand.

An diesem Punkt wird der Arduino-Code auf der rechten Seite angezeigt. Wenn Sie diesen Code bearbeiten möchten, können Sie den Bearbeitungsmodus aktivieren.

Um den Effekt einer kontinuierlich blinkenden LED zu sehen, müssen Sie die [Wait 1 seconds] und [forever] Blöcke aus der Control-Palette verwenden. Klicken Sie nach dem Schreiben auf diese Blöcke. Ein gelber Halo bedeutet, dass sie ausgeführt werden.
[Wait 1 seconds]: aus der Control-Palette, um das Zeitintervall zwischen 2 Blöcken festzulegen.
[forever]: aus der Control-Palette, lässt das Skript laufen, es sei denn, die Stromversorgung wird unterbrochen.

Klicken Sie abschließend auf die Schaltfläche Upload Code.

2. Projekte
Die folgenden Projekte sind nach ihrer Programmierschwierigkeit geordnet. Es wird empfohlen, diese Bücher in der gegebenen Reihenfolge durchzugehen.
In jedem Projekt gibt es sehr detaillierte Schritte, die Ihnen beibringen, wie Sie den Schaltkreis aufbauen und wie Sie ihn Schritt für Schritt programmieren können, um das gewünschte Ergebnis zu erzielen.
Natürlich können Sie das Skript auch direkt ausführen. Stellen Sie jedoch sicher, dass Sie das relevante Material von github heruntergeladen haben.
Nach dem Download entpacken Sie es. Beachten Sie Bühnenmodus, um einzelne Skripte direkt auszuführen.
Das 2.9 Temperatur und Feuchtigkeit auslesen verwendet jedoch den Hochlade-Modus.
2.1 Tischlampe¶
Hier verbinden wir eine LED auf dem Steckbrett und lassen die Spielfigur (Sprite) das Blinken dieser LED steuern.
Wenn der Button-Sprite auf der Bühne angeklickt wird, blinkt die LED 5-mal und stoppt dann.

Was Sie lernen werden¶
Steckbrett, LEDs und Widerstände
Aufbau einer Schaltung auf dem Steckbrett
Sprites löschen und auswählen
Kostüme wechseln
Eine begrenzte Anzahl von Wiederholungsschleifen festlegen
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENEINFÜHRUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Folgen Sie dem untenstehenden Diagramm, um die Schaltung auf dem Steckbrett aufzubauen.
Da die Anode der LED (der längere Pin) über einen 220Ω-Widerstand mit Pin 9 verbunden ist und die Kathode der LED mit GND verbunden ist, können Sie die LED zum Leuchten bringen, indem Sie Pin 9 auf ein hohes Niveau setzen.

Programmierung¶
Die gesamte Programmierung ist in 3 Teile unterteilt: Im ersten Teil wird der gewünschte Sprite ausgewählt, im zweiten Teil wird das Kostüm des Sprites gewechselt, um ihn anklickbar erscheinen zu lassen, und im dritten Teil wird die LED zum Blinken gebracht.
1. Button3-Sprite auswählen
Löschen Sie den vorhandenen Tobi-Sprite mit der Löschen-Taste in der oberen rechten Ecke und wählen Sie erneut einen Sprite aus.

Hier wählen wir den Button3-Sprite aus.

Klicken Sie in der oberen rechten Ecke auf Kostüme und Sie werden sehen, dass der Button3-Sprite 2 Kostüme hat. Wir setzen button3-a auf „freigegeben“ und button3-b auf „gedrückt“.

2. Kostümwechsel.
Wenn der Sprite angeklickt wird (Events-Palette), wechselt er zum Kostüm für button3-b (looks-Palette).

3. LED 5-mal blinken lassen
Verwenden Sie den [Repeat]-Block, um die LED 5-mal blinken zu lassen (High-> LOW-Zyklus). Vergessen Sie nicht, Pin 13 auf Pin 9 zu ändern und schließlich das Kostüm zurück auf button3-a zu wechseln.
[Repeat 10]: Begrenzte Anzahl von Wiederholungsschleifen. Sie können die Anzahl der Wiederholungen selbst festlegen, aus der Control-Palette.

2.2 Atmende LED¶
Verwenden Sie nun eine andere Methode, um die Helligkeit der LED zu steuern. Anders als im vorherigen Projekt wird hier die Helligkeit der LED langsam reduziert, bis sie vollständig erlischt.
Wenn der Sprite auf der Bühne angeklickt wird, erhöht sich die Helligkeit der LED langsam und erlischt dann sofort.

Was Sie lernen werden¶
Den Ausgabewert des PWM-Pins einstellen
Variablen erstellen
Ändern der Helligkeit des Sprites
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENÜBERSICHT |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Dieses Projekt verwendet denselben Schaltkreis wie das vorherige Projekt 2.1 Tischlampe. Statt jedoch HIGH/LOW zu verwenden, um die LEDs ein- oder auszuschalten, wird in diesem Projekt das PWM - Wikipedia Signal verwendet, um die LED langsam heller zu machen oder zu dimmen.
Der PWM-Signalbereich liegt zwischen 0-255. Auf dem Arduno Uno-Board können die Pins 3, 5, 6, 9, 10, 11 ein PWM-Signal ausgeben; auf dem Mega2560 sind es die Pins 2 - 13, 44 - 46.

Programmierung¶
1. Einen Sprite auswählen
Löschen Sie den Standard-Sprite, klicken Sie auf die Schaltfläche Choose a Sprite in der unteren rechten Ecke des Sprite-Bereichs, geben Sie button3 in das Suchfeld ein und klicken Sie dann darauf, um es hinzuzufügen.

2. Eine Variable erstellen.
Erstellen Sie eine Variable namens pwm, um den Wert der PWM-Änderung zu speichern.
Klicken Sie auf die Variables-Palette und wählen Sie Make a Variable.

Geben Sie den Namen der Variable ein; es kann jeder Name sein, aber es wird empfohlen, seine Funktion zu beschreiben. Der Datentyp ist Zahl und für alle Sprites.

Nach dem Erstellen sehen Sie pwm innerhalb der Variables-Palette und im aktivierten Zustand. Das bedeutet, dass diese Variable auf der Bühne erscheinen wird. Sie können versuchen, sie zu deaktivieren und zu sehen, ob pwm noch auf der Bühne präsent ist.

3. Den Anfangszustand festlegen
Wenn der button3-Sprite angeklickt wird, wechseln Sie das Kostüm zu button-b (angeklickter Zustand) und setzen Sie den Anfangswert der Variable pwm auf 0.
[set pwm to 0]: aus der Variables-Palette, um den Wert der Variable festzulegen.

4. Die LED immer heller machen
Da der Bereich von pwm 255 ist, wird durch den [repeat]-Block die Variable pwm um 5 auf 255 akkumuliert und dann in den [set PWM pin]-Block eingegeben, sodass Sie sehen können, wie die LED langsam aufleuchtet.
[change pwm by 5]: aus der Variablen-Palette. Lässt die Variable jedes Mal eine bestimmte Zahl ändern. Es kann eine positive oder negative Zahl sein. Positiv bedeutet jedes Mal eine Erhöhung, negativ bedeutet jedes Mal eine Verringerung. Hier wird die Variable pwm jedes Mal um 5 erhöht.
[set PWM pin]: aus der Arduino Uno-Palette, um den Ausgabewert des PWM-Pins festzulegen.

Schließlich wechseln Sie das Kostüm von button3 zurück zu button-a und setzen den Wert des PWM-Pins auf 0, sodass die LED langsam aufleuchtet und dann wieder erlischt.

2.3 Bunte Kugeln¶
In diesem Projekt werden wir die RGB-LEDs verschiedene Farben anzeigen lassen.
Wenn Sie auf verschiedene farbige Kugeln im Bühnenbereich klicken, leuchtet die RGB-LED in unterschiedlichen Farben auf.

Was Sie lernen werden¶
Das Prinzip der RGB-LED
Sprites kopieren und verschiedene Kostüme auswählen
Überlagerung der drei Grundfarben
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Eine RGB-LED verpackt drei LEDs in Rot, Grün und Blau in eine transparente oder halbtransparente Plastikhülle. Durch Ändern der Eingangsspannung der drei Pins und Überlagern von ihnen können, statistisch gesehen, 16.777.216 verschiedene Farben erzeugt werden.


Programmierung¶
1. Sprite auswählen
Löschen Sie das Standard-Sprite und wählen Sie das Ball-Sprite aus.

Und duplizieren Sie es 5 Mal.

Wählen Sie verschiedene Kostüme für diese 5 Ball-Sprites aus und verschieben Sie sie an die entsprechenden Positionen.
Bemerkung
Die Kostümfarbe des Ball3-Sprites muss manuell auf Rot geändert werden.

2. RGB-LEDs in der entsprechenden Farbe leuchten lassen
Bevor wir den Code verstehen, müssen wir das RGB-Farbmodell verstehen.
Das RGB-Farbmodell ist ein additives Farbmodell, bei dem Rot, Grün und Blau in verschiedenen Kombinationen hinzugefügt werden, um eine Vielzahl von Farben wiederzugeben.
Additive Farbmischung: Rot zu Grün ergibt Gelb; Grün zu Blau ergibt Cyan; Blau zu Rot ergibt Magenta; alle drei Grundfarben zusammen ergeben Weiß.

Der Code, um die RGB-LED gelb leuchten zu lassen, lautet also wie folgt.

Wenn auf das Ball-Sprite (gelber Ball) geklickt wird, setzen wir Pin 11 hoch (rote LED an), Pin 10 hoch (grüne LED an) und Pin 9 niedrig (blaue LED aus), damit die RGB-LED gelb leuchtet.
Sie können auf die gleiche Weise Codes für andere Sprites schreiben, damit die RGB-LEDs in den entsprechenden Farben leuchten.
3. Ball2-Sprite (hellblau)

4. Ball3-Sprite (rot)

5. Ball4-Sprite (grün)

6. Ball5-Sprite (lila)

2.4 LCD1602¶
LCD1602 kann 2x16 Zeichen anzeigen. Jetzt lassen wir es die entsprechenden Zeichen anzeigen, die den Zeichen-Sprites auf der Bühne entsprechen.
Wenn Sie nacheinander auf „Hello“ auf der Bühne klicken, haben diese unterschiedliche Animationseffekte und die Zeichen werden gleichzeitig auf dem LCD1602 angezeigt.

Was Sie lernen werden¶
Wie man das LCD1602 verwendet
Mehrere unterschiedliche Sprites auswählen
Größe, Drehwinkel und Farbe des Sprites ändern sowie Anzeigen oder Verbergen.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶

Programmierung¶
1. Sprite auswählen
Löschen Sie das Standard-Sprite, klicken Sie auf Choose a Sprite, dann auf letters und wählen Sie das gewünschte Sprite aus.

Zum Beispiel habe ich „Hello“ gewählt, wie unten gezeigt.

Legen Sie jetzt verschiedene Effekte für diese Sprites fest und zeigen Sie sie beim Klicken auf dem LCD1602 an.
2. H wird vergrößert und verkleinert
Klicken Sie auf das Sprite H und schreiben Sie jetzt ein Skript dafür.
Wenn das Sprite H angeklickt wird, setzen Sie seine Größe auf 50%, dann stellen Sie es wieder her; während H in der ersten Zeile und Spalte des LCD1602 angezeigt wird.
[set size to]: Aus der Aussehen-Palette, zum Einstellen der Größe des Sprites von 0% bis 100%.
[set cursor at columan row]: Aus der Display Module-Palette, um den Cursor in einer bestimmten Zeile des LCD1602 zu positionieren und Zeichen anzuzeigen.
[write display]: Aus der Display Module-Palette, zum Anzeigen von Zeichen oder Zeichenketten auf dem LCD1602.

Die Verteilung von Zeilen und Spalten auf dem LCD1602 wird in der Abbildung gezeigt.

3. E kippt nach links und rechts
Klicken Sie auf das Sprite E und schreiben Sie jetzt ein Skript dafür.
Wenn das Sprite E angeklickt wird, lassen Sie es 180 Grad im Uhrzeigersinn drehen, dann 180 Grad gegen den Uhrzeigersinn, so dass Sie es nach links und rechts kippen sehen; und zeigen Sie H in der ersten Zeile und Spalte 2 des LCD1602 an.
[turn degrees]: Aus der Bewegung-Palette, zum Drehen des Sprites im oder gegen den Uhrzeigersinn im Bereich von 0-360 Grad.

4. L verkleinert sich langsam und zoomt herein
Klicken Sie auf das erste L Sprite und schreiben Sie jetzt ein Skript dafür.
Wenn das Sprite L angeklickt wird, verwenden Sie den [repeat]-Block, um seine Größe um 50% zu erhöhen (5 Mal, jedes Mal um 10), dann verkleinern Sie es wieder auf seine ursprüngliche Größe auf die gleiche Weise, während L in der ersten Zeile und Spalte 3 des LCD1602 angezeigt wird.
[change size by]: Aus der Bewegungspalette, um die Größe des Sprites zu ändern.

5. Das zweite L ändert die Farbe
Klicken Sie auf das zweite L Sprite und schreiben Sie jetzt ein Skript dafür.
Wenn das Sprite L angeklickt wird, verwenden Sie den [repeat]-Block, um 10 Mal mit einer Rate von 20 Schritten die Farben zu wechseln und zur ursprünglichen Farbe zurückzukehren. Zeigen Sie auch L in der ersten Zeile und Spalte 4 des LCD1602 an.
[change color effect by]: Zum Ändern des Farbeffekts, ein Kostüm kann mit dem Farbeffekt 200 verschiedene Farbschemata annehmen, 0 und 200 sind dieselbe Farbe.

6. O versteckt und zeigt
Klicken Sie auf das Sprite O und schreiben Sie jetzt ein Skript dafür.
Wenn das Sprite O angeklickt wird, wiederholt es den Vorgang Verbergen und Anzeigen 3 Mal, während O in der ersten Zeile und Spalte 5 des LCD1602 angezeigt wird.
[Hide] & [Show]: lässt das Sprite sich verbergen und anzeigen.

2.5 Bewegende Maus¶
Heute werden wir ein Mäusespielzeug erstellen, das mit einem Potentiometer gesteuert wird.
Wenn man auf die grüne Flagge klickt, bewegt sich die Maus auf der Bühne vorwärts. Dreht man am Potentiometer, ändert die Maus die Bewegungsrichtung.

Was Sie lernen werden¶
Prinzip des Potentiometers
Analogen Pin und dessen Bereich lesen
Einen Bereich auf einen anderen abbilden
Bewegen und Ändern der Richtung des Sprites
Benötigte Komponenten¶
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Das Potentiometer ist ein resistives Element mit 3 Anschlüssen. Die 2 seitlichen Pins werden an 5V und GND angeschlossen, und der mittlere Pin wird an A0 angeschlossen. Nach der Umwandlung durch den ADC-Konverter des Arduino-Boards liegt der Wertebereich zwischen 0-1023.

Programmierung¶
1. Wählen Sie einen Sprite
Löschen Sie den Standard-Sprite, klicken Sie unten rechts im Sprite-Bereich auf die Schaltfläche Choose a Sprite, geben Sie mouse in das Suchfeld ein und klicken Sie dann, um ihn hinzuzufügen.

2. Eine Variable erstellen
Erstellen Sie eine Variable namens value, um den gelesenen Wert des Potentiometers zu speichern.
Nach dem Erstellen sehen Sie value im Variables-Bereich und im markierten Zustand, was bedeutet, dass diese Variable auf der Bühne angezeigt wird.

3. Den Wert von A0 lesen
Speichern Sie den gelesenen Wert von A0 in der Variable value.
[set my variable to 0]: Den Wert der Variable festlegen.
[read analog pin A0]: Den Wert von A0~A5 im Bereich von 0-1023 lesen.

Um durchgehend lesen zu können, müssen Sie den [forever]-Block verwenden. Klicken Sie auf dieses Skript, um es auszuführen, drehen Sie das Potentiometer in beide Richtungen, und Sie werden sehen, dass der Wertebereich 0-1023 beträgt.

4. Den Sprite bewegen
Verwenden Sie den [move steps]-Block, um den Sprite zu bewegen. Führen Sie das Skript aus, und Sie werden sehen, dass sich der Sprite von der Mitte nach rechts bewegt.

5. Die Richtung des Sprites ändern
Ändern Sie nun die Bewegungsrichtung des Sprites entsprechend dem Wert von A0. Da der Wert von A0 von 0-1023 reicht, aber die Drehrichtung des Sprites von -180~180 ist, muss ein [map]-Block verwendet werden.
Fügen Sie auch [when green flag clicked] am Anfang hinzu, um das Skript zu starten.
[point in direction]: Den Lenkwinkel des Sprites festlegen, aus der Bewegung-Palette.
[map from to]: Einen Bereich auf einen anderen abbilden.

2.6 Türklingel¶
Hier werden wir den Knopf und die Klingel auf der Bühne verwenden, um eine Türklingel zu erstellen.
Nachdem Sie auf die grüne Flagge geklickt haben, können Sie den Knopf drücken und die Klingel auf der Bühne wird einen Ton von sich geben.

Was Sie lernen werden¶
Wie der Knopf funktioniert
Digitalen Pin und Bereiche lesen
Eine bedingte Schleife erstellen
Einen Hintergrund hinzufügen
Ton abspielen
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Der Knopf ist ein 4-Pin-Gerät, da der Pin 1 mit Pin 2 und Pin 3 mit Pin 4 verbunden ist. Wenn der Knopf gedrückt wird, werden die 4 Pins verbunden und der Schaltkreis geschlossen.

Bauen Sie den Schaltkreis entsprechend dem folgenden Diagramm auf.
Verbinden Sie einen der Pins auf der linken Seite des Knopfes mit Pin 12, der mit einem Pull-down-Widerstand und einem 0,1uF (104) Kondensator verbunden ist (um Schwankungen zu eliminieren und ein stabiles Signal auszugeben, wenn der Knopf in Betrieb ist).
Verbinden Sie das andere Ende des Widerstands und des Kondensators mit GND und einen der Pins auf der rechten Seite des Knopfes mit 5V.

Programmierung¶
1. Einen Hintergrund hinzufügen
Klicken Sie auf den Choose a Backdrop-Button in der unteren rechten Ecke.

Wählen Sie Bedroom 1 aus.

2. Das Sprite auswählen
Löschen Sie das Standard-Sprite, klicken Sie auf den Choose a Sprite-Button in der unteren rechten Ecke des Sprite-Bereichs, geben Sie bell in das Suchfeld ein und fügen Sie es dann hinzu.

Wählen Sie dann das bell-Sprite auf der Bühne und verschieben Sie es an die richtige Position.

3. Drücken Sie den Knopf und die Glocke gibt einen Ton von sich
Verwenden Sie [wenn dann], um eine bedingte Anweisung zu erstellen, dass wenn der Wert des gelesenen Pin12 gleich 1 ist (der Schlüssel gedrückt wird), der Ton xylo1 abgespielt wird.
[read status of digital pin]: Dieser Block stammt aus der Arduino Uno-Palette und wird verwendet, um den Wert eines digitalen Pins zu lesen, das Ergebnis ist 0 oder 1.
[if then]: Dieser Block ist ein Steuerblock und stammt aus der Steuerung-Palette. Wenn seine boolsche Bedingung wahr ist, werden die darin enthaltenen Blöcke ausgeführt und dann wird das beteiligte Skript fortgesetzt. Wenn die Bedingung falsch ist, werden die Skripte im Block ignoriert. Die Bedingung wird nur einmal überprüft; wenn die Bedingung während der Ausführung des Skripts im Block falsch wird, wird sie weiterhin ausgeführt, bis sie abgeschlossen ist.
[play sound until done]: aus der Sound-Palette, verwendet um bestimmte Töne abzuspielen.

2.7 Niedrigtemperaturalarm¶
In diesem Projekt werden wir ein Alarmsystem für niedrige Temperaturen erstellen. Wenn die Temperatur unter einen bestimmten Schwellenwert fällt, erscheint das Schneeflocke-Symbol auf der Bühne.

Was Sie lernen werden¶
Funktionsweise des Thermistors
Multivariable und subtraktive Vorgänge
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein komplettes Set zu kaufen, hier der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Ein Thermistor ist ein Widerstand, dessen Widerstandswert stark temperaturabhängig ist. Es gibt zwei Typen von Widerständen, PTC (Widerstand steigt mit steigender Temperatur) und NTC (Widerstand nimmt mit steigender Temperatur ab).
Bauen Sie den Schaltkreis gemäß dem folgenden Diagramm.
Ein Ende des Thermistors ist mit GND verbunden, das andere Ende mit A0, und ein 10K Widerstand ist in Reihe mit 5V geschaltet.
Hier wird der NTC-Thermistor verwendet. Wenn die Temperatur steigt, verringert sich der Widerstand des Thermistors, die Spannungsteilung von A0 nimmt ab, und der von A0 erhaltene Wert nimmt ab, und umgekehrt steigt er.

Programmierung¶
1. Wählen Sie eine Figur
Löschen Sie die Standardfigur, klicken Sie auf den Button Choose a Sprite in der unteren rechten Ecke des Figurbereichs, geben Sie Snowflake in das Suchfeld ein und fügen Sie diese hinzu.

2. Erstellen Sie 2 Variablen
Erstellen Sie zwei Variablen, before und current, um den Wert von A0 in verschiedenen Zuständen zu speichern.

3. Lesen Sie den Wert von A0
Wenn das grüne Flaggen-Symbol angeklickt wird, lesen Sie den Wert von A0 und speichern Sie ihn in der Variablen before.

4. Lesen Sie den Wert von A0 erneut
In [forever], lesen Sie den Wert von A0 erneut und speichern Sie ihn in der Variablen current.

5. Bestimmung von Temperaturänderungen
Verwenden Sie den [if else] Block, um festzustellen, ob der aktuelle Wert von A0 50 größer ist als zuvor, was eine Abnahme der Temperatur bedeutet. Lassen Sie in diesem Fall das Schneeflocke-Symbol anzeigen, sonst verbergen.
[-] & [>]: Subtraktions- und Vergleichsoperatoren aus der Operatoren-Palette.

2.8 Lichtwecker¶
Im Leben gibt es viele verschiedene Weckerarten. Lassen Sie uns jetzt einen lichtgesteuerten Wecker erstellen. Wenn der Morgen anbricht und die Helligkeit zunimmt, wird dieser Lichtwecker Sie daran erinnern, dass es Zeit ist aufzustehen.

Was Sie lernen werden¶
Funktionsprinzip des Fotowiderstands
Stoppen der Soundwiedergabe und Beenden laufender Skripte
Benötigte Komponenten¶
Für dieses Projekt benötigen Sie folgende Bauteile.
Es ist natürlich praktisch, ein ganzes Set zu kaufen, hier der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können die Teile auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Ein Fotowiderstand oder Fotodiode ist ein lichtgesteuerter variabler Widerstand. Der Widerstand eines Fotowiderstands verringert sich mit zunehmender Lichteinstrahlung.
Bauen Sie die Schaltung gemäß dem folgenden Schaltplan auf.
Verbinden Sie ein Ende des Fotowiderstands mit 5V, das andere Ende mit A0 und schließen Sie einen 10K-Widerstand in Reihe mit GND an diesem Ende an.
Wenn also die Lichtintensität zunimmt, verringert sich der Widerstand des Fotowiderstands, die Spannungsteilung des 10K-Widerstands steigt und der von A0 ermittelte Wert wird größer.

Programmierung¶
1. Wählen Sie eine Figur
Löschen Sie die Standardfigur, klicken Sie auf den Choose a Sprite-Button in der unteren rechten Ecke des Figurenbereichs, geben Sie bell in das Suchfeld ein und fügen Sie sie dann hinzu.

2. Wert von A0 auslesen
Erstellen Sie zwei Variablen before und current. Wenn Sie auf die grüne Flagge klicken, lesen Sie den Wert von A0 aus und speichern ihn in der Variable before als Referenzwert. In [forever], lesen Sie den Wert von A0 erneut und speichern ihn in der Variable current.

3. Einen Ton erzeugen
Wenn der aktuelle Wert von A0 um 50 höher ist als der vorherige, was bedeutet, dass die aktuelle Lichtintensität über dem Schwellenwert liegt, lassen Sie die Figur einen Ton erzeugen.

4. Die Figur drehen
Verwenden Sie den [turn block], um die bell-Figur links und rechts drehen zu lassen, um den Weckereffekt zu erzielen.

5. Alles stoppen
Stoppen Sie den Alarm, nachdem er eine Weile geklingelt hat.

2.9 Temperatur und Feuchtigkeit auslesen¶
Bisherige Projekte nutzten den Bühnenmodus, aber einige Funktionen sind nur im Hochlademodus verfügbar, wie z.B. die serielle Kommunikation. In diesem Projekt werden wir die Temperatur und die Feuchtigkeit des DHT11 über den Seriellen Monitor im Hochlade-Modus ausgeben.

Was Sie lernen werden¶
Temperatur und Feuchtigkeit vom DHT11-Modul auslesen
Seriellen Monitor für den Hochlade-Modus nutzen
Erweiterungen hinzufügen
Benötigte Komponenten¶
Für dieses Projekt benötigen Sie folgende Bauteile.
Es ist natürlich praktisch, ein ganzes Set zu kaufen, hier der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können die Teile auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltung aufbauen¶
Der digitale Temperatur- und Feuchtigkeitssensor DHT11 ist ein Kombisensor, der einen kalibrierten digitalen Signalausgang für Temperatur und Feuchtigkeit bietet.
Bauen Sie die Schaltung gemäß dem folgenden Diagramm auf.

Programmierung¶
1. Erweiterungen hinzufügen
Wechseln Sie in den Upload-Modus, klicken Sie auf den Add Extension-Button in der unteren linken Ecke und wählen Sie dann Communication aus. Dies wird am Ende des Palettenbereichs angezeigt.

2. Arduino Uno und Seriellen Monitor initialisieren
Im Upload-Modus starten Sie Arduino Uno und setzen dann die Baudrate des seriellen Ports.
[when Arduino Starts up]: Im Upload-Modus starten Sie Arduino Uno.
[set serial baud rate to]: Aus der Communications-Palette, zum Setzen der Baudrate des seriellen Ports 0, Standard ist 115200. Wenn Sie einen Mega2560 verwenden, können Sie die Baudrate in den seriellen Ports 0~3 einstellen.

3. Temperatur und Feuchtigkeit auslesen
Erstellen Sie 2 Variablen tem und humi zum Speichern von Temperatur und Feuchtigkeit. Der Code erscheint auf der rechten Seite, während Sie den Block ziehen und ablegen.

4. Auf dem Seriellen Monitor ausgeben
Schreiben Sie die ausgelesene Temperatur und Feuchtigkeit auf den Seriellen Monitor. Um ein zu schnelles Übertragen und ein Blockieren von PictoBlox zu vermeiden, verwenden Sie den [wait seconds]-Block, um ein Zeitintervall für die nächste Ausgabe hinzuzufügen.

5. Code hochladen
Im Gegensatz zum Stage-Modus muss der Code im Upload-Modus mit dem Upload Code-Button auf das Arduino-Board geladen werden, um den Effekt zu sehen. So können Sie das USB-Kabel abziehen und das Programm läuft weiter.

6. Seriellen Monitor starten
Öffnen Sie jetzt den Serial Monitor, um die Temperatur und die Feuchtigkeit zu sehen.

2.10 Pendel¶
In diesem Projekt erstellen wir ein Pfeilpendel, während der Servo der Drehung folgt.

Was Sie lernen werden¶
Wie der Servo funktioniert und welchen Drehwinkelbereich er hat
Ein Sprite zeichnen und den Mittelpunkt am Ende setzen.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Ein Servo ist ein Zahnradmotor, der sich nur um 180 Grad drehen kann. Er wird durch das Senden von elektrischen Pulsen von Ihrer Schaltung gesteuert. Diese Pulse geben dem Servo die Position vor, in die er sich bewegen soll.
Der Servo hat drei Kabel: Das braune Kabel ist GND, das rote ist VCC (an 3.3V anschließen) und das orange ist das Signalkabel. Der Drehwinkelbereich liegt bei 0-180 Grad.
Bauen Sie den Schaltkreis gemäß dem folgenden Diagramm.

Programmierung¶
1. Ein Sprite malen
Löschen Sie das Standard-Sprite, wählen Sie den Sprite-Button und klicken Sie auf Paint. Ein leeres Sprite namens Sprite1 wird angezeigt.

Auf der geöffneten Costumes-Seite verwenden Sie das Line tool, um einen Pfeil zu zeichnen.
Bemerkung
Beginnen Sie, den Pfeil von der Mitte der Leinwand aus zu zeichnen, damit sich der Pfeil mit dem Mittelpunkt als Ursprung im Kreis dreht.
Halten Sie die Umschalttaste gedrückt, um den Linienwinkel gerade oder 45 Grad zu machen.

Nach dem Zeichnen wird das arrow-Sprite auf der Bühne angezeigt. Nennen Sie es arrow. Klicken Sie dann auf die Nummer nach Direction. Ein kreisförmiges Zifferblatt erscheint. Ziehen Sie jetzt diesen Pfeil und prüfen Sie, ob das arrow-Sprite auf der Bühne sich mit dem Ende als Ursprung dreht.

Damit das arrow-Sprite von links nach rechts schwingt, liegt der Winkelbereich bei -90 bis -180, 180 bis 90.


2. Eine Variable erstellen.
Erstellen Sie eine Variable namens servo, die den Winkelwert speichert und setzen Sie den Anfangswert auf 270.

3. Von links nach rechts schwingen
Lassen Sie das arrow-Sprite nun von der linken -90-Grad-Position zur rechten 90-Grad-Position schwingen.
Mit dem [repeat]-Block fügen Sie bei jedem Durchlauf -10 zum Variablenwert hinzu und erreichen nach 18 Durchläufen 90 Grad. Verwenden Sie dann den [point in block]-Block, damit sich das Pfeil-Sprite zu diesen Winkeln dreht.
Da der Drehwinkel des Sprites -180 ~ 180 beträgt, werden Winkel außerhalb dieses Bereichs durch die folgenden Bedingungen konvertiert.
Wenn Winkel > 180, dann Winkel - 360.

4. Den Servo drehen
Wenn Sie auf die grüne Flagge klicken, sehen Sie, dass der Pfeil schnell nach rechts und dann wieder nach links dreht. Verwenden Sie hier einen [wait seconds]-Block, um die Drehung zu verlangsamen. Verwenden Sie auch den [set servo on to angle]-Block, um den mit dem Arduino-Board verbundenen Servo auf einen bestimmten Winkel zu drehen.

5. Von rechts nach links schwingen
Auf die gleiche Weise lassen Sie den Servo und das arrow-Sprite langsam von rechts nach links drehen.
Wenn Winkel > 180, dann Winkel - 360.

2.11 Drehender Ventilator¶
In diesem Projekt erstellen wir einen sich drehenden Sternsprite und Ventilator.
Durch Klicken auf die linken und rechten Pfeilsprites auf der Bühne wird die Uhrzeigersinn- und die Gegen-Uhrzeigersinn-Drehung des Motors und des Sternsprites gesteuert. Klicken Sie auf den Sternsprite, um die Drehung zu stoppen.

Was Sie lernen werden¶
Arbeitsprinzip des Motors
Broadcast-Funktion
Block zum Stoppen anderer Skripte im Sprite
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die folgenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltung aufbauen¶

Programmierung¶
Das gewünschte Ergebnis ist, mit 2 Pfeilsprites die Uhrzeigersinn- und die Gegen-Uhrzeigersinn-Drehung des Motors und des Sternsprites zu steuern. Ein Klick auf den Sternsprite stoppt die Drehung des Motors.
1. Sprites hinzufügen
Löschen Sie den Standardsprite, wählen Sie dann den Star-Sprite und den Arrow1-Sprite und kopieren Sie Arrow1 einmal.

Unter der Option Costumes ändern Sie den Arrow1-Sprite zu einem anderen Richtungskostüm.

Passen Sie die Größe und Position des Sprites entsprechend an.

2. Linker Pfeil-Sprite
Wenn man auf diesen Sprite klickt, sendet er eine Nachricht - drehen, setzt dann den digitalen Pin 9 auf niedrig und Pin 10 auf hoch und setzt die Variable flag auf 1. Wenn Sie auf den linken Pfeil klicken, dreht sich der Motor gegen den Uhrzeigersinn. Wenn Ihre Drehung im Uhrzeigersinn ist, tauschen Sie die Positionen von Pin 9 und Pin 10.
Zwei Dinge sind hier zu beachten:
[broadcast]: aus der Events-Palette, wird verwendet, um eine Nachricht an die anderen Sprites zu senden. Wenn die anderen Sprites diese Nachricht erhalten, führen sie ein bestimmtes Ereignis aus. Hier ist es turn. Wenn der star-Sprite diese Nachricht erhält, führt er das Dreh-Skript aus.
Variable flag: Die Drehrichtung des Sternsprites wird durch den Wert von flag bestimmt. Wenn Sie die Variable flag erstellen, müssen Sie sicherstellen, dass sie für alle Sprites gilt.

3. Rechter Pfeil-Sprite
Wenn Sie auf diesen Sprite klicken, senden Sie eine Nachricht zum Drehen, setzen Sie dann den digitalen Pin 9 hoch und Pin 10 niedrig, damit sich der Motor im Uhrzeigersinn dreht und setzen Sie die Variable flag auf 0.

4. Stern-Sprite
Hier sind 2 Ereignisse enthalten:
Wenn der star-Sprite die gesendete Nachricht zum Drehen empfängt, bestimmt er den Wert von flag; ist flag 1, dreht er sich 10 Grad nach links, sonst umgekehrt. Da es sich im [FOREVER]-Block befindet, wird es weiter drehen.
Wenn Sie auf diesen Sprite klicken, setzen Sie beide Pins des Motors auf hoch, um ihn zu stoppen und stoppen die anderen Skripte in diesem Sprite.

2.12 Lichtempfindlicher Ball¶
In diesem Projekt nutzen wir einen Fotowiderstand, um den Ball auf der Bühne nach oben fliegen zu lassen. Platzieren Sie Ihre Hand über dem Fotowiderstand, um die Lichtintensität zu steuern, die er erhält. Je näher Ihre Hand am Fotowiderstand ist, desto kleiner wird sein Wert und desto höher fliegt der Ball auf der Bühne, ansonsten fällt er. Wenn der Ball die Schnur berührt, ertönt ein angenehmes Geräusch und ein funkelndes Sternenlicht erscheint.

Was Sie lernen werden¶
Ein Sprite mit Farben zu füllen
Berührung zwischen den Sprites
Benötigte Komponenten¶
Für dieses Projekt benötigen wir folgende Komponenten:
Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltkreis aufbauen¶
Ein Fotowiderstand oder Fotodiode ist ein lichtgesteuerter variabler Widerstand. Der Widerstand eines Fotowiderstands verringert sich mit zunehmender Lichteinstrahlung.
Bauen Sie den Schaltkreis gemäß dem folgenden Diagramm auf.
Verbinden Sie ein Ende des Fotowiderstands mit 5V, das andere Ende mit A0 und schließen Sie einen 10K Widerstand in Reihe mit GND an diesem Ende an.
Wenn also die Lichtintensität zunimmt, verringert sich der Widerstand des Fotowiderstands, die Spannungsteilung des 10K Widerstands erhöht sich und der von A0 erhaltene Wert wird größer.

Programmierung¶
Das gewünschte Ergebnis ist, dass, je näher Ihre Hand am Fotowiderstand ist, der Ball-Sprite auf der Bühne kontinuierlich nach oben geht, sonst fällt er auf den Bowl-Sprite. Wenn er beim Aufsteigen oder Fallen den Line-Sprite berührt, gibt er einen musikalischen Klang von sich und sendet Stern-Sprites in alle Richtungen.
1. Sprite und Hintergrund auswählen
Löschen Sie den Standard-Sprite und wählen Sie den Ball, Bowl und Star Sprite aus.

Verschieben Sie den Bowl Sprite in die untere Mitte der Bühne und vergrößern Sie seine Größe.

Da wir ihn nach oben bewegen müssen, setzen Sie die Richtung des Ball Sprites auf 0.

Stellen Sie die Größe und Richtung des Star Sprites auf 180 ein, da er nach unten fallen muss, oder Sie können ihn in einen anderen Winkel ändern.

Jetzt fügen Sie den Stars Hintergrund hinzu.

2. Einen Linien-Sprite zeichnen
Fügen Sie einen Linien-Sprite hinzu.

Gehen Sie zur Costumes-Seite des Line Sprites, verringern Sie die Breite der roten Linie auf der Leinwand etwas, kopieren Sie sie dann 5-mal und richten Sie die Linien aus.

Jetzt füllen Sie die Linien mit verschiedenen Farben. Wählen Sie zuerst eine Farbe, die Ihnen gefällt, klicken Sie dann auf das Fill-Werkzeug und fahren Sie mit der Maus über die Linie, um sie zu füllen.

Verfahren Sie auf die gleiche Weise, um die Farbe der anderen Linien zu ändern.

3. Skript für den Ball-Sprite
Setzen Sie die Anfangsposition des Ball Sprites. Wenn der Lichtwert kleiner als 800 ist (es kann ein anderer Wert sein, abhängig von Ihrer aktuellen Umgebung), soll der Ball nach oben bewegen.
Sie können die Variable Lichtwert auf der Bühne anzeigen lassen, um die Lichtintensitätsänderung jederzeit zu beobachten.

Andernfalls wird der Ball Sprite fallen und seine Y-Koordinate auf ein Minimum von -100 begrenzen. Dies kann angepasst werden, damit es so aussieht, als ob er auf den Bowl Sprite fällt.

Wenn der Line Sprite getroffen wird, wird die aktuelle Y-Koordinate in die Variable ball_coor gespeichert und eine Bling Nachricht gesendet.

4. Skript für den Stern-Sprite
Wenn das Skript startet, verstecken Sie zuerst den Star Sprite. Wenn die Bling Nachricht empfangen wird, klone den Star Sprite.

Wenn der Star Sprite als Klon erscheint, spiele den Soundeffekt ab und setze seine Koordinaten synchron zum Ball Sprite.

Erstelle den Effekt des erscheinenden Star Sprites und passe ihn bei Bedarf an.

2.13 SPIEL - Schießen¶
Haben Sie schon einmal diese Schießspiele im Fernsehen gesehen? Je näher ein Teilnehmer mit einer Kugel das Ziel am Bullseye trifft, desto höher ist seine Punktzahl.
Heute machen wir ebenfalls ein Schießspiel in Scratch. In diesem Spiel soll das Fadenkreuz so nah wie möglich am Bullseye schießen, um eine höhere Punktzahl zu erzielen.
Klicken Sie auf die grüne Flagge, um zu starten. Verwenden Sie das Hindernisvermeidungsmodul, um eine Kugel abzufeuern.

Was Sie lernen werden¶
Wie das Hindernisvermeidungsmodul funktioniert und welcher Winkelbereich gegeben ist
Verschiedene Sprites malen
Farben berühren
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Das Hindernisvermeidungsmodul ist ein infraroter Annäherungssensor mit einstellbarer Entfernung, dessen Ausgabe normalerweise hoch ist und auf niedrig schaltet, wenn ein Hindernis erkannt wird.
Bauen Sie die Schaltung jetzt gemäß dem untenstehenden Diagramm auf.

Programmierung¶
1. Das Fadenkreuz-Sprite malen
Löschen Sie das Standard-Sprite, wählen Sie den Sprite-Button und klicken Sie auf Paint. Ein leeres Sprite namens Sprite1 erscheint. Benennen Sie es in Crosshair um.

Gehen Sie zur Costumes-Seite des Crosshair-Sprites. Klicken Sie auf das Circle-Werkzeug, entfernen Sie die Füllfarbe und legen Sie die Farbe und Breite der Kontur fest.

Zeichnen Sie nun mit dem Circle-Werkzeug einen Kreis. Nach dem Zeichnen können Sie mit dem Select-Werkzeug den Kreis verschieben, sodass der Ursprungspunkt mit der Mitte der Leinwand ausgerichtet ist.

Verwenden Sie das Line-Werkzeug, um ein Kreuz innerhalb des Kreises zu zeichnen.

Das Ziel-Sprite malen
Erstellen Sie ein neues Sprite namens Target.

Gehen Sie zur Kostümseite des Target-Sprites, klicken Sie auf das Circle-Werkzeug, wählen Sie eine Füllfarbe aus, entfernen Sie die Kontur und malen Sie einen großen Kreis.

Verwenden Sie dieselbe Methode, um weitere Kreise mit jeweils unterschiedlichen Farben zu zeichnen, und Sie können die Position der überlappenden Kreise mit dem Werkzeug Forward oder Backbard ändern. Beachten Sie, dass Sie auch das Werkzeug zum Verschieben der Kreise auswählen müssen, damit der Ursprung aller Kreise und die Mitte der Leinwand ausgerichtet sind.

3. Einen Hintergrund hinzufügen
Fügen Sie einen geeigneten Hintergrund hinzu, der vorzugsweise nicht zu viele Farben hat und nicht mit den Farben im Target-Sprite übereinstimmt. Hier habe ich den Hintergrund Wall1 gewählt.

4. Script für das Fadenkreuz-Sprite
Legen Sie die zufällige Position und Größe des Crosshair-Sprites fest und lassen Sie es sich zufällig bewegen.

Wenn eine Hand vor das Hindernisvermeidungsmodul gelegt wird, gibt es ein niedriges Signal als Übertragungssignal aus.

Wenn die schießen-Nachricht empfangen wird, stoppt das Sprite seine Bewegung und schrumpft langsam, wodurch der Effekt eines abgefeuerten Geschosses simuliert wird.

Verwenden Sie den [Touch color ()]-Block, um die Schussposition zu bestimmen.

Wenn der Schuss innerhalb des gelben Kreises liegt, werden 10 Punkte gemeldet.

Verwenden Sie dieselbe Methode, um die Position des abgefeuerten Geschosses zu bestimmen. Wenn es nicht auf dem Target-Sprite eingestellt ist, bedeutet dies, dass es außerhalb des Kreises liegt.

2.14 SPIEL - Den Ballon aufblasen¶
Hier werden wir ein Ballonaufblas-Spiel spielen.
Nachdem Sie auf die grüne Flagge geklickt haben, wird der Ballon immer größer und größer. Wenn der Ballon zu groß wird, wird er platzen; wenn der Ballon zu klein ist, wird er herunterfallen; Sie müssen beurteilen, wann Sie den Knopf drücken, um ihn nach oben fliegen zu lassen.

Was Sie lernen werden¶
Ein Kostüm für den Sprite malen
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Der Knopf ist ein 4-Pin-Gerät, da Pin 1 mit Pin 2 und Pin 3 mit Pin 4 verbunden ist. Wenn der Knopf gedrückt wird, sind alle 4 Pins verbunden und schließen so den Stromkreis.

Bauen Sie den Schaltkreis gemäß dem folgenden Diagramm.
Verbinden Sie einen der Pins auf der linken Seite des Knopfes mit Pin 12, der mit einem Pull-down-Widerstand und einem 0,1uF (104) Kondensator verbunden ist (um Wackeln zu eliminieren und ein stabiles Level auszugeben, wenn der Knopf arbeitet).
Verbinden Sie das andere Ende des Widerstands und des Kondensators mit GND und einen der Pins auf der rechten Seite des Knopfes mit 5V.

Programmierung¶
1. Einen Sprite und einen Hintergrund hinzufügen
Löschen Sie den Standard-Sprite, klicken Sie auf die Schaltfläche Choose a Sprite in der unteren rechten Ecke des Sprite-Bereichs und wählen Sie dann den Balloon1 Sprite aus.

Fügen Sie einen Boardwalk Hintergrund über die Schaltfläche Choose a backdrop hinzu, oder andere Hintergründe, die Ihnen gefallen.

2. Ein Kostüm für den Balloon1 Sprite malen
Jetzt zeichnen wir ein Explosions-Effekt-Kostüm für den Ballon-Sprite.
Gehen Sie zur Costumes Seite für den Balloon1 Sprite, klicken Sie auf die Schaltfläche Choose a Costume in der unteren linken Ecke und wählen Sie Paint, um ein leeres Costume aufzurufen.

Wählen Sie eine Farbe und verwenden Sie dann das Brush-Werkzeug, um ein Muster zu zeichnen.

Wählen Sie erneut eine Farbe, klicken Sie auf das Füllwerkzeug und bewegen Sie die Maus innerhalb des Musters, um es mit einer Farbe zu füllen.

Schreiben Sie abschließend den Text BOOM, sodass ein Explosions-Effekt-Kostüm fertig ist.

3. Den Balloon Sprite programmieren
Stellen Sie die Anfangsposition und Größe des Balloon1 Sprites ein.

Lassen Sie dann den Balloon Sprite langsam größer werden.

Wenn der Knopf gedrückt wird (Wert ist 1), hört der Balloon1 Sprite auf, größer zu werden.
Wenn die Größe kleiner als 90 ist, wird er fallen (y-Koordinate verringert sich).
Wenn die Größe größer als 90 und kleiner als 120 ist, wird er zum Himmel fliegen (y-Koordinate erhöht sich).

Wenn der Knopf nicht gedrückt wurde, wird der Ballon langsam größer und wenn die Größe größer als 120 ist, wird er explodieren (wechseln Sie zum Explosions-Effekt-Kostüm).

2.15 SPIEL - Sternengekreuzt¶
In den nächsten Projekten werden wir einige spaßige Minispiele in PictoBlox spielen.
Hier verwenden wir das Joystick-Modul, um das Spiel „Sternengekreuzt“ zu spielen.
Nachdem das Skript gestartet wurde, erscheinen zufällig Sterne auf der Bühne. Mit dem Joystick steuern Sie das Raumschiff, um den Sternen auszuweichen. Wenn Sie sie berühren, endet das Spiel.

Was Sie lernen werden¶
Wie das Joystick-Modul funktioniert
Das Festlegen der x- und y-Koordinaten des Sprites
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltung aufbauen¶
Ein Joystick ist ein Eingabegerät, das aus einem Stick besteht, der auf einer Basis schwenkt und seinen Winkel oder seine Richtung an das zu steuernde Gerät meldet. Joysticks werden oft verwendet, um Videospiele und Roboter zu steuern.
Um dem Computer eine vollständige Bewegungsfreiheit zu melden, muss ein Joystick die Stickposition in zwei Achsen messen – der X-Achse (links nach rechts) und der Y-Achse (oben nach unten).
Die Bewegungskoordinaten des Joysticks sind in der folgenden Abbildung dargestellt.
Bemerkung
Die x-Koordinate geht von links nach rechts, der Bereich liegt zwischen 0-1023.
Die y-Koordinate geht von oben nach unten, Bereich 0-1023.

Bauen Sie jetzt die Schaltung gemäß dem folgenden Diagramm.

Programmierung¶
Das gesamte Skript soll den Effekt erzielen, dass bei Klick auf die grüne Flagge der Stars-Sprite in einer Kurve auf der Bühne bewegt wird und Sie den Joystick verwenden müssen, um das Rocketship zu bewegen, damit es nicht vom Stars-Sprite berührt wird.
1. Sprites und Hintergründe hinzufügen
Löschen Sie den Standard-Sprite und verwenden Sie die Schaltfläche Choose a Sprite zum Hinzufügen des Rocketship-Sprites und des Star-Sprites. Beachten Sie, dass die Größe des Rocket-Sprites auf 50% eingestellt ist.

Fügen Sie jetzt den Stars-Hintergrund durch Choose a Backdrop hinzu.

2. Skripting für Raumschiff
Der Rocketship-Sprite soll den Effekt erzielen, dass er an einer zufälligen Position erscheint und dann durch den Joystick gesteuert wird, um ihn nach oben, unten, links und rechts zu bewegen.
Der Ablauf ist wie folgt.
Wenn auf die grüne Flagge geklickt wird, lassen Sie den Sprite zu einer zufälligen Position gehen und erstellen Sie 2 Variablen x und y, die die Werte lesen, die von A0 (VRX des Joysticks) bzw. A1 (VRY des Joysticks) kommen. Sie können das Skript ausführen und den Joystick hoch und runter, links und rechts kippen, um den Wertebereich für x und y zu sehen.

Der Wert von A0 liegt im Bereich 0-1023 (die Mitte liegt bei etwa 512). Verwenden Sie
x-512>200
, um festzustellen, ob der Joystick nach rechts gekippt wird, und wenn ja, lassen Sie die x-Koordinate des Sprites +30 sein (um den Sprite nach rechts zu bewegen).

Wenn der Joystick nach links gekippt wird (
x-512<-200
), lassen Sie die x-Koordinate des Sprites -30 sein (um den Sprite nach links zu bewegen).

Da die y-Koordinate des Joysticks von oben (0) nach unten (1023) geht und die y-Koordinate des Sprites von unten nach oben geht, muss die y-Koordinate im Skript -30 sein, um den Joystick nach oben und den Sprite nach oben zu bewegen.

Wenn der Joystick nach unten gekippt wird, ist die y-Koordinate des Sprites +30.

3. Skripting für Stern
Der Effekt, den der Star-Sprite erzielen soll, ist, dass er an einer zufälligen Stelle erscheint, und wenn er das Rocketship trifft, stoppt das Skript und das Spiel endet.
Wenn auf die grüne Flagge geklickt wird und der Sprite zu einer zufälligen Position geht, dient der Block [turn degrees] dazu, den Star-Sprite mit einer leichten Winkeländerung vorwärts zu bewegen, sodass Sie sehen können, dass er sich in einer Kurve bewegt, und wenn er am Rand ist, prallt er ab.

Wenn der Sprite während seiner Bewegung den Rocketship-Sprite berührt, stoppen Sie das Skript.

2.16 SPIEL - Apfel essen¶
In diesem Projekt spielen wir ein Spiel, bei dem ein Knopf verwendet wird, um einen Käfer zu steuern, der Äpfel isst.
Wenn die grüne Flagge angeklickt wird, drücken Sie den Knopf und der Käfer dreht sich. Drücken Sie den Knopf erneut und der Käfer hält an und bewegt sich in diesem Winkel vorwärts. Sie müssen den Winkel des Käfers so steuern, dass er sich vorwärts bewegt, ohne die schwarze Linie auf der Karte zu berühren, bis er den Apfel isst. Wenn er die schwarze Linie berührt, ist das Spiel vorbei.

Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Der Knopf ist ein Gerät mit 4 Pins. Da Pin 1 mit Pin 2 und Pin 3 mit Pin 4 verbunden ist, werden beim Drücken des Knopfs die 4 Pins verbunden und der Stromkreis geschlossen.

Bauen Sie den Schaltkreis gemäß dem folgenden Diagramm.
Verbinden Sie einen der Pins auf der linken Seite des Knopfs mit Pin 12, der mit einem Pull-down-Widerstand und einem 0,1uF (104) Kondensator verbunden ist (um Flackern zu vermeiden und ein stabiles Signal auszugeben, wenn der Knopf betätigt wird).
Verbinden Sie das andere Ende des Widerstands und des Kondensators mit GND und einen der Pins auf der rechten Seite des Knopfs mit 5V.

Programmierung¶
Der Effekt, den wir erreichen möchten, besteht darin, mit der Schaltfläche die Richtung des Beetle-Sprites zu steuern, um sich vorwärts zu bewegen und den Apfel zu essen, ohne die schwarze Linie auf dem Maze-Hintergrund zu berühren, wodurch der Hintergrund gewechselt wird gegessen.
Fügen Sie nun die entsprechenden Hintergründe und Sprites hinzu.
1. Hintergründe und Sprites hinzufügen
Fügen Sie einen Maze Hintergrund über den Choose a backdrop Knopf hinzu.

Löschen Sie den Standard-Sprite und wählen Sie dann den Beetle Sprite aus.

Platzieren Sie den Beetle Sprite am Eingang des Maze Hintergrunds, merken Sie sich die x,y-Koordinatenwerte an dieser Stelle und ändern Sie die Größe des Sprites auf 40%.

2. Hintergrund zeichnen
Jetzt wird es Zeit, einen Hintergrund zu zeichnen, auf dem das Zeichen WIN! erscheint.
Klicken Sie zunächst auf die Vorschaugrafik des Hintergrunds, um zur Seite Backdrops zu gelangen, und klicken Sie dann auf den leeren Hintergrund1.

Beginnen Sie jetzt mit dem Zeichnen. Sie können sich an das untenstehende Bild halten oder Ihren eigenen Hintergrund entwerfen, solange die Darstellung gewinnend ist.
Verwenden Sie das Circle-Werkzeug, um eine Ellipse ohne Umriss und in roter Farbe zu zeichnen.
Verwenden Sie anschließend das Text-Werkzeug, um das Wort „WIN!“ zu schreiben. Setzen Sie die Zeichenfarbe auf Schwarz und passen Sie die Größe und Position des Textes an.
Benennen Sie den Hintergrund Win.

3. Skripting für den Hintergrund
Der Hintergrund sollte beim Spielstart immer auf Maze wechseln.

4. Skripte für den Sprite Käfer schreiben
Schreiben Sie jetzt ein Skript, damit der Sprite Beetle mit Hilfe eines Knopfes vorwärts bewegt und die Richtung geändert werden kann. Der Ablauf ist wie folgt.
Wenn die grüne Flagge angeklickt wird, setzen Sie den Winkel des Beetle auf 90 und die Position auf (-134, -134) oder ersetzen Sie diese durch den Koordinatenwert Ihrer eigenen Position. Erstellen Sie die Variable flag und setzen Sie den Anfangswert auf -1.

Im [forever]-Block werden vier [if]-Blöcke verwendet, um verschiedene mögliche Szenarien zu bestimmen.
Wenn die Taste 1 (gedrückt) ist, verwenden Sie den [mod] Block, um den Wert der Variable flag zwischen 0 und 1 umzuschalten (abwechselnd 0 für diesen Druck und 1 für den nächsten Druck).

Wenn Flagge=0 (dieser Tastendruck), soll sich der Beetle-Sprite im Uhrzeigersinn drehen. Wird dann festgestellt, dass Flagge gleich 1 ist (Taste erneut gedrückt), bewegt sich der Beetle-Sprite vorwärts. Andernfalls dreht er sich weiter im Uhrzeigersinn.

Wenn der Käfer-Sprite Schwarz berührt (die schwarze Linie im Maze Hintergrund), endet das Spiel und das Skript wird gestoppt.
Bemerkung
Sie müssen im [Touch color]-Block auf den Farbbereich klicken und dann das Pipettenwerkzeug verwenden, um die Farbe der schwarzen Linie auf der Bühne aufzunehmen. Wenn Sie einfach Schwarz wählen, funktioniert dieser [Touch color]-Block nicht.

Wenn der Käfer Rot berührt (Verwenden Sie ebenfalls das Pipettenwerkzeug, um die rote Farbe des Apfels aufzunehmen), wechselt der Hintergrund zu Win. Das bedeutet, das Spiel wurde erfolgreich abgeschlossen und das Skript wird gestoppt.

2.17 SPIEL - Flappy Papagei¶
Hier verwenden wir das Ultraschallmodul, um ein Flappy-Papagei-Spiel zu spielen.
Nachdem das Skript ausgeführt wird, wird der grüne Bambus langsam von rechts nach links auf zufälliger Höhe bewegen. Platziere nun deine Hand über dem Ultraschallmodul. Wenn der Abstand zwischen deiner Hand und dem Modul weniger als 10 cm beträgt, fliegt der Papagei nach oben, sonst fällt er nach unten. Du musst den Abstand zwischen deiner Hand und dem Ultraschallmodul kontrollieren, sodass der Papagei den grünen Bambus (Schläger) vermeiden kann. Berührt er diesen, ist das Spiel vorbei.

Benötigte Komponenten¶
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Du kannst sie auch einzeln über die folgenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Ein Ultraschall-Sensormodul ist ein Instrument, das den Abstand zu einem Objekt mithilfe von Ultraschallwellen misst. Es hat zwei Sonden. Eine sendet Ultraschallwellen und die andere empfängt die Wellen und wandelt die Sendungs- und Empfangszeit in eine Entfernung um, um so den Abstand zwischen dem Gerät und einem Hindernis zu bestimmen.
Baue jetzt die Schaltung gemäß dem folgenden Diagramm.

Programmierung¶
Das gewünschte Ergebnis ist die Steuerung der Flughöhe des Sprites Parrot mithilfe des Ultraschallmoduls, während er den Sprite Paddle vermeidet.
1. Füge einen Sprite hinzu
Lösche den Standardsprite und verwende die Schaltfläche Choose a Sprite, um den Sprite Parrot hinzuzufügen. Setze seine Größe auf 50% und verschiebe seine Position zum linken Zentrum.

Füge jetzt den Sprite Paddle hinzu, setze seine Größe auf 150%, setze seinen Winkel auf 180 und verschiebe seine Anfangsposition in die obere rechte Ecke.

Gehe zur Costumes-Seite des Sprites Paddle und entferne den Umriss.

2. Skripting für den Papagei-Sprite
Jetzt das Skript für den Parrot-Sprite schreiben, der fliegt und dessen Flughöhe durch die Erkennungsentfernung des Ultraschallmoduls bestimmt wird.
Wenn auf die grüne Flagge geklickt wird, wechsle das Kostüm alle 0,2s, sodass es ständig fliegt.

Lies den Wert des Ultraschallmoduls und speichere ihn in der Variable distance nachdem er mit dem [round] Block gerundet wurde.

Wenn die Ultraschall-Erkennungsentfernung weniger als 10 cm beträgt, lass den y-Koordinatenwert um 50 erhöhen, dann wird der Parrot-Sprite nach oben fliegen. Andernfalls wird der y-Koordinatenwert um 40 verringert und der Parrot wird fallen.

Wenn der Sprite Parrot den Sprite Paddle berührt, endet das Spiel und das Skript hört auf zu laufen.

3. Skripting für den Schläger-Sprite
Schreibe jetzt das Skript für den Paddle-Sprite, der zufällig auf der Bühne erscheinen muss.
Verstecke den Sprite Paddle, wenn auf die grüne Flagge geklickt wird, und klone ihn gleichzeitig. Der [create clone of] Block ist ein Steuerblock und ein Stapelblock. Er erstellt einen Klon des Sprites im Argument. Er kann auch den Sprite klonen, in dem er läuft, und Klone von Klonen erstellen, rekursiv.

Wenn Paddle als Klon dargestellt wird, beträgt seine Position 220 (ganz rechts) für die x-Koordinate und seine y-Koordinate liegt zufällig zwischen (-125 bis 125) (zufällige Höhe).

Verwende den [wiederholen] Block, um seinen x-Koordinatenwert langsam zu verringern. So siehst du den Klon des Paddle-Sprites, der langsam von rechts nach links bewegt wird, bis er verschwindet.

Klone einen neuen Paddle-Sprite und lösche den vorherigen Klon.

2.18 SPIEL - Breakout-Klon¶
Hier verwenden wir das Potentiometer, um ein Breakout-Klon-Spiel zu spielen.
Nachdem Sie auf die grüne Flagge geklickt haben, müssen Sie das Potentiometer verwenden, um den Schläger auf der Bühne zu steuern, um den Ball zu fangen. Dadurch kann er nach oben steigen und die Ziegelsteine treffen. Wenn alle Ziegelsteine verschwinden, haben Sie gewonnen. Wenn Sie den Ball nicht fangen, haben Sie verloren.

Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Das Potentiometer ist ein Widerstandselement mit 3 Anschlüssen, die 2 seitlichen Pins sind mit 5V und GND verbunden, und der mittlere Pin ist mit A0 verbunden. Nach der Umwandlung durch den ADC-Wandler des Arduino-Boards liegt der Wertebereich zwischen 0-1023.

Programmierung¶
Es gibt 3 Sprites auf der Bühne.
1. Schläger-Sprite (Paddle sprite)
Das Ziel des Paddle ist es, dass die Ausgangsposition in der Mitte des unteren Bühnenrandes liegt und durch ein Potentiometer gesteuert wird, um es nach links oder rechts zu bewegen.
Löschen Sie den Standard-Sprite, verwenden Sie die Schaltfläche Choose a Sprite, um den Paddle-Sprite hinzuzufügen, und setzen Sie seine x- und y-Koordinaten auf (0, -140).

Gehen Sie zur Seite Costumes, entfernen Sie den Umriss und ändern Sie seine Farbe in dunkelgrau.

Jetzt skripten Sie den Paddle-Sprite, um seine Anfangsposition auf (0, -140) zu setzen, wenn die grüne Flagge angeklickt wird, und lesen Sie den Wert von A0 (Potentiometer) in die Variable a0. Da der Paddle-Sprite sich von links nach rechts auf der Bühne bei x-Koordinaten -195~195 bewegt, müssen Sie den [map] Block verwenden, um den Bereich der Variable a0 von 0~1023 auf -195~195 abzubilden.

Jetzt können Sie das Potentiometer drehen und überprüfen, ob der Paddle sich links und rechts auf der Bühne bewegen kann.
2. Ball-Sprite
Der Ball-Sprite soll sich auf der Bühne bewegen und abprallen, wenn er den Rand berührt. Er prallt nach unten ab, wenn er den Block oberhalb der Bühne berührt. Er prallt nach oben ab, wenn er während des Fallens den Paddle-Sprite berührt. Tut er das nicht, wird das Skript gestoppt und das Spiel endet.
Fügen Sie den Ball-Sprite hinzu.

Wenn auf die grüne Flagge geklickt wird, setzen Sie den Winkel des Ball-Sprites auf 45° und die Anfangsposition auf (0, -120).

Lassen Sie den Ball-Sprite sich auf der Bühne bewegen und abprallen, wenn er den Rand berührt. Klicken Sie auf die grüne Flagge, um den Effekt zu sehen.

Wenn der Ball-Sprite den Paddle-Sprite berührt, führen Sie eine Reflexion durch. Der einfache Weg, dies zu tun, ist, den Winkel direkt umzukehren. Dann werden Sie jedoch feststellen, dass der Pfad des Balls völlig festgelegt ist, was zu langweilig ist. Daher verwenden wir das Zentrum der beiden Sprites, um den Ball in die entgegengesetzte Richtung des Zentrums der Abschirmung abprallen zu lassen.


Wenn der Ball-Sprite an den Rand der Bühne fällt, wird das Skript gestoppt und das Spiel endet.

3. Block1-Sprite
Der Block1-Sprite soll mit dem Effekt erscheinen, 4x8 Klone von sich selbst in einer zufälligen Farbe oberhalb der Bühne zu erstellen und einen Klon zu löschen, wenn er vom Ball-Sprite berührt wird.
Der Block1-Sprite ist nicht in der PictoBlox-Bibliothek verfügbar. Sie müssen ihn selbst zeichnen oder mit einem vorhandenen Sprite modifizieren. Hier werden wir ihn mit dem Button3-Sprite modifizieren.
Nachdem Sie den Button3-Sprite hinzugefügt haben, gehen Sie zur Seite Costumes. Löschen Sie zuerst button-a, verkleinern Sie dann sowohl die Breite als auch die Höhe von button-b und ändern Sie den Sprite-Namen in Block1, wie im folgenden Bild gezeigt.
Bemerkung
Für die Breite von Block1 können Sie wahrscheinlich auf dem Bildschirm simulieren, um zu sehen, ob Sie 8 in einer Reihe platzieren können. Wenn nicht, reduzieren Sie die Breite entsprechend.
Beim Verkleinern des Block1-Sprites müssen Sie den Mittelpunkt in der Mitte des Sprites halten.

Erstellen Sie jetzt zuerst 2 Variablen, block, um die Anzahl der Blöcke und roll, um die Anzahl der Reihen zu speichern.

Wir müssen einen Klon des Block1-Sprites erstellen, damit er von links nach rechts, von oben nach unten, eins nach dem anderen, insgesamt 4x8 mit zufälligen Farben angezeigt wird.

Nachdem das Skript geschrieben wurde, klicken Sie auf die grüne Flagge und schauen Sie sich die Anzeige auf der Bühne an. Wenn es zu kompakt oder zu klein ist, können Sie die Größe ändern.

Schreiben Sie nun das Auslöseereignis. Wenn der geklonte Block1-Sprite den Ball-Sprite berührt, löschen Sie den Klon und senden Sie die Nachricht crush.

Gehen Sie zurück zum Ball-Sprite. Wenn die Übertragung crush empfangen wird (der Ball-Sprite berührt den Klon des Block1-Sprites), wird der Ball aus der entgegengesetzten Richtung abgeschossen.

2.19 SPIEL - Angeln¶
Hier spielen wir ein Angelspiel mit einem Knopf.
Wenn das Skript läuft, schwimmen die Fische links und rechts auf der Bühne. Du solltest den Knopf drücken, wenn der Fisch fast nahe am Haken ist (es wird empfohlen, länger zu drücken), um den Fisch zu fangen. Die Anzahl der gefangenen Fische wird automatisch erfasst.

Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Du kannst sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Der Knopf ist ein 4-Pin-Gerät. Da Pin 1 mit Pin 2 und Pin 3 mit Pin 4 verbunden ist, werden beim Drücken des Knopfes alle 4 Pins miteinander verbunden, wodurch der Stromkreis geschlossen wird.

Baue die Schaltung gemäß dem folgenden Diagramm auf.
Verbinde einen der Pins auf der linken Seite des Knopfes mit Pin 12, der mit einem Pull-Down-Widerstand und einem 0,1uF (104) Kondensator verbunden ist (um Zittern zu eliminieren und ein stabiles Signal zu liefern, wenn der Knopf betätigt wird).
Verbinde das andere Ende des Widerstands und des Kondensators mit GND und einen der Pins auf der rechten Seite des Knopfes mit 5V.

Programmierung¶
Zuerst müssen wir einen Underwater-Hintergrund auswählen, dann ein Fish-Sprite hinzufügen und es auf der Bühne hin und her schwimmen lassen. Zeichne dann ein Fishhook-Sprite und steuere es mit einem Knopf, um mit dem Angeln zu beginnen. Wenn das Fisch-Sprite den Fishhook-Sprite im gehakten Zustand (wird rot) berührt, wird es gehakt.
1. Hintergrund hinzufügen
Nutze die Choose a Backdrop-Schaltfläche, um einen Underwater-Hintergrund hinzuzufügen.

2. Angelhaken-Sprite
Der Fishhook-Sprite bleibt normalerweise im gelben Zustand unter Wasser; wenn der Knopf gedrückt wird, befindet er sich im Angelzustand (rot) und bewegt sich über die Bühne.
In Pictoblox gibt es keinen Fishhook-Sprite, wir können den Glow-J-Sprite so modifizieren, dass er wie ein Angelhaken aussieht.
Füge den Glow-J-Sprite über Choose a Sprite hinzu.

Gehe jetzt zur Costumes-Seite des Glow-J-Sprites, wähle die Füllung von Cyan auf dem Bildschirm aus und entferne sie. Ändere dann die Farbe von J in Rot und verringere auch seine Breite. Der wichtigste Punkt ist, dass du die Spitze genau am Mittelpunkt haben musst.

Verwende das Line tool, um eine möglichst lange Linie vom Mittelpunkt nach oben zu zeichnen (Linie außerhalb der Bühne). Nachdem der Sprite gezeichnet wurde, benenne den Sprite in Fishhook um und verschiebe ihn an die richtige Position.

Wenn die grüne Flagge angeklickt wird, setze den Farbeffekt des Sprites auf 30 (gelb) und setze seine Anfangsposition.

Wenn der Knopf gedrückt wird, setze den Farbeffekt auf 0 (rot, Angelstartzustand), warte 0,1 Sekunden und bewege den Fishhoo-Sprite dann nach oben auf die Bühne. Lasse den Knopf los und lass den Fishhoo wieder in seine Anfangsposition zurückkehren.

3. Fisch-Sprite
Der Effekt, den der Fish-Sprite erzielen soll, ist, sich links und rechts auf der Bühne zu bewegen, und wenn er einen Fishhook-Sprite im Angelzustand trifft, schrumpft er, bewegt sich an eine bestimmte Position und verschwindet dann und klont anschließend einen neuen fish-Sprite.
Füge jetzt den fish-Sprite hinzu und passe seine Größe und Position an.

Erstelle eine Variable score, um die Anzahl der gefangenen Fische zu speichern, verberge diesen Sprite und klone ihn.

Zeige den Klon des fish-Sprites an, wechsle sein Kostüm und setze schließlich die Anfangsposition.

Lasse den Klon des fish-Sprites sich links und rechts bewegen und beim Berühren des Randes zurückprallen.

Der fish-Sprite (vom Klon) wird nicht reagieren, wenn er am Fishhook-Sprite vorbeigeht; berührt er jedoch den Fishhook-Sprite im Angelzustand (wird rot), wird er gefangen. Zu diesem Zeitpunkt wird der Punktestand (Variable Punktestand) +1 und es wird auch eine Punkteanimation angezeigt (schrumpft um 40%, bewegt sich schnell zur Position der Punkteanzeige und verschwindet). Gleichzeitig wird ein neuer Fisch erstellt (ein neuer Fisch-Sprite-Klon) und das Spiel geht weiter.
Bemerkung
Du musst in den [Touch color]-Block im Farbbereich klicken und dann das Pipettenwerkzeug auswählen, um die rote Farbe des Fishhook-Sprites auf der Bühne aufzunehmen. Wenn du eine Farbe willkürlich wählst, wird dieser [Touch color]-Block nicht funktionieren.

2.20 SPIEL - Klicke nicht auf das weiße Feld¶
Viele von Ihnen haben dieses Spiel sicherlich schon auf Ihrem Handy gespielt. In diesem Spiel geht es darum, auf zufällig erscheinende schwarze Felder zu klicken, um Punkte zu sammeln. Die Geschwindigkeit erhöht sich stetig. Wenn man auf ein weißes Feld klickt oder ein schwarzes Feld verfehlt, ist das Spiel vorbei.
Jetzt replizieren wir es mit PictoBlox.
Setzen Sie zwei IR-Hindernisvermeidungsmodule vertikal auf das Steckbrett. Wenn Sie Ihre Hand über eines der IR-Module legen, erscheint ein blinkender Punkt auf der Bühne, der einen getätigten Klick darstellt.
Wenn Sie auf das schwarze Feld klicken, wird der Punktestand um 1 erhöht; berühren Sie das weiße Feld, wird der Punktestand um 1 verringert.
Je nach Position des schwarzen Blocks auf der Bühne müssen Sie entscheiden, ob Sie Ihre Hand über das linke oder das rechte IR-Modul legen.

Benötigte Komponenten¶
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Das Hindernisvermeidungsmodul ist ein infrarotbasierter Näherungssensor mit einstellbarer Entfernung, dessen Ausgang normalerweise hoch ist und niedrig wird, wenn ein Hindernis erkannt wird.
Bauen Sie die Schaltung entsprechend dem untenstehenden Diagramm.

Programmierung¶
Hier benötigen wir 3 Sprites: Tile, Left IR und Right IR.
Tile-Sprite: Dient zur Darstellung von abwechselnd schwarzen und weißen Feldern, die nach unten gehen. In der Handy-Version dieses Spiels gibt es normalerweise 4 Spalten, hier machen wir nur zwei.
Left IR-Sprite: Dient zur Darstellung des Klick-Effekts. Wenn das linke IR-Modul Ihre Hand erkennt, sendet es eine Nachricht - left an den Left IR-Sprite, um ihn zu aktivieren. Berührt er das schwarze Feld auf der Bühne, erhöht sich der Punktestand um 1, andernfalls verringert er sich um 1.
Right IR-Sprite: Die Funktion ist im Wesentlichen die gleiche wie bei Left IR, außer dass er die Information Right erhält.
1. Erstellen Sie ein Tile-Sprite.
Löschen Sie das Standard-Sprite, bewegen Sie die Maus über das Symbol Add Sprite, wählen Sie Paint und ein leeres Sprite erscheint, welches Sie Tile nennen.

Gehen Sie zur Costumes-Seite und verwenden Sie das Rectangle-Werkzeug, um ein Rechteck zu zeichnen.

Wählen Sie das Rechteck aus und klicken Sie auf Copy -> Paste, um ein identisches Rechteck zu erstellen. Anschließend verschieben Sie die beiden Rechtecke so, dass sie bündig zueinander stehen.

Wählen Sie eines der Rechtecke aus und wählen Sie eine schwarze Füllfarbe.

Jetzt wählen Sie beide Rechtecke aus und verschieben Sie sie so, dass ihre Mittelpunkte mit dem Zentrum der Leinwand übereinstimmen.

Duplizieren Sie das Kostüm1 und wechseln Sie die Füllfarben der beiden Rechtecke. Zum Beispiel hat Kostüm1 links die Füllfarbe Weiß und rechts die Füllfarbe Schwarz, bei Kostüm2 ist es umgekehrt.

2. Das Script für den Tile-Sprite erstellen
Gehen Sie nun zurück zur Blocks-Seite und legen Sie die Anfangsposition des Tile-Sprites fest, damit dieser am oberen Bühnenrand positioniert ist.

Erstellen Sie eine Variable - blocks und geben Sie ihr einen Startwert, um die Anzahl der Erscheinungen des Tile-Sprites zu bestimmen. Nutzen Sie den [Wiederhole bis]-Block, damit die Variable blocks stetig verringert wird, bis blocks 0 erreicht. Währenddessen sollte der Sprite Tile zufällig sein Kostüm wechseln.
Nachdem Sie auf die grüne Flagge geklickt haben, wird der Tile-Sprite auf der Bühne schnell die Kostüme wechseln.

Erstellen Sie Klone des Tile-Sprites, während die Variable blocks abnimmt, und stoppen Sie das Skript, wenn blocks 0 ist. Hier werden zwei [wait () seconds]-Blöcke verwendet: Der erste begrenzt das Intervall zwischen Tiles Klonen und der zweite lässt die Variable blocks auf 0 sinken, ohne das Programm sofort zu stoppen, sodass dem letzten Tile-Sprite genügend Zeit zum Bewegen bleibt.

Nun soll der Klon des Tile-Sprites langsam nach unten bewegen und gelöscht werden, sobald er den unteren Bühnenrand erreicht. Die Änderung in der y-Koordinate beeinflusst die Fallgeschwindigkeit: Je größer der Wert, desto schneller die Geschwindigkeit.

Das Original verstecken und den Klon anzeigen.

3. Die Werte der 2 IR-Module auslesen
Im Hintergrund lesen Sie die Werte der 2 IR-Module aus und führen die entsprechenden Aktionen durch.
Wenn das linke IR-Hindernisvermeidungsmodul Ihre Hand erkennt, senden Sie eine Nachricht - left.
Wenn das rechte IR-Hindernisvermeidungsmodul Ihre Hand erkennt, senden Sie eine Nachricht - right.

4. Left IR-Sprite
Fahren Sie erneut mit der Maus über das Add sprite-Symbol und wählen Sie Paint, um einen neuen Sprite namens Left IR zu erstellen.

Gehen Sie zur Costumes-Seite des Left IR-Sprites, wählen Sie eine Füllfarbe (eine beliebige Farbe außer Schwarz und Weiß) und zeichnen Sie einen Kreis.

Beginnen Sie nun, den Left IR-Sprite zu scripten. Wenn die Nachricht - left empfangen wird (das IR-Empfängermodul links erkennt ein Hindernis), dann prüfen Sie, ob der schwarze Block des Tile-Sprites berührt wird, und wenn ja, erhöhen Sie die Variable count um 1, andernfalls verringern Sie sie um 1.

Bemerkung
Sie müssen den Tile-Sprite auf der Bühne anzeigen lassen und dann die Farbe des schwarzen Blocks im Tile-Sprite aufnehmen.

Führen Sie nun den Sensor-Effekt (Vergrößern/Verkleinern) für Left IR durch.

Lassen Sie den Left IR-Sprite verstecken, wenn auf die grüne Flagge geklickt wird, zeigen Sie ihn an, wenn die Nachricht - left empfangen wird, und verstecken Sie ihn schließlich wieder.

5. Right IR-Sprite
Kopieren Sie den Left IR-Sprite und benennen Sie ihn in Right IR um.

Ändern Sie anschließend die empfangene Nachricht in - right.

Nun sind alle Skripte fertig, und Sie können auf die grüne Flagge klicken, um das Skript auszuführen.
2.21 SPIEL - Schütze dein Herz¶
In diesem Projekt erstellen wir ein Spiel, das die Reaktionsgeschwindigkeit testet.
Auf der Bühne befindet sich ein Herz, das in einem rechteckigen Kasten geschützt ist. Pfeile fliegen aus beliebigen Positionen auf dieser Bühne auf dieses Herz zu. Die Farbe des Pfeils wechselt zufällig zwischen Schwarz und Weiß, und der Pfeil wird immer schneller fliegen.
Wenn die Farbe des rechteckigen Kastens und die Farbe des Pfeils gleich sind, wird der Pfeil blockiert und die Stufe erhöht sich um 1. Sind die Farben jedoch nicht gleich, wird der Pfeil das Herz durchschießen und das Spiel ist vorbei.
Hier wird die Farbe des rechteckigen Kastens vom Linienverfolgungsmodul gesteuert. Wenn das Modul auf einer schwarzen Oberfläche (einer reflektierenden Oberfläche) platziert wird, ist die Farbe des rechteckigen Kastens schwarz, ansonsten weiß.
Sie müssen also entscheiden, ob Sie das Linienverfolgungsmodul auf einer weißen oder einer schwarzen Oberfläche platzieren, je nach Farbe des Pfeils.

Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch separat über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
Schaltung aufbauen¶
Dies ist ein digitales Linienverfolgungsmodul. Wenn eine schwarze Linie erkannt wird, gibt es 1 aus; wenn eine weiße Linie erkannt wird, gibt es 0 aus. Zusätzlich können Sie den Erfassungsabstand über das Potentiometer auf dem Modul einstellen.
Bauen Sie den Schaltkreis jetzt gemäß dem untenstehenden Diagramm.

Bemerkung
Bevor Sie mit dem Projekt beginnen, müssen Sie die Empfindlichkeit des Moduls anpassen.
Verkabeln Sie gemäß dem obigen Diagramm und schalten Sie dann die R3-Platine ein (entweder direkt über das USB-Kabel oder das 9V-Batteriekabel). Laden Sie den Code nicht hoch.
Kleben Sie nun ein schwarzes Elektroband auf den Schreibtisch und platzieren Sie das Linienverfolgungsmodul in einer Höhe von 2 cm vom Schreibtisch entfernt.
Mit dem Sensor nach unten gerichtet, beobachten Sie die Signalled am Modul, um sicherzustellen, dass sie auf dem weißen Tisch leuchtet und auf dem schwarzen Band erlischt.
Wenn nicht, müssen Sie das Potentiometer am Modul so einstellen, dass es den oben beschriebenen Effekt erzielt.
Programmierung¶
Hier müssen wir 3 Sprites erstellen: Heart, Square Box und Arrow1.
Heart: bleibt in der Mitte der Bühne stehen. Wenn es vom Arrow1-Sprite berührt wird, ist das Spiel vorbei.
Square Box: Hat zwei Arten von Kostümen, schwarz und weiß, und wechselt die Kostüme entsprechend dem Wert des Linienverfolgungsmoduls.
Arrow: fliegt in Schwarz/Weiß aus irgendeiner Position auf die Mitte der Bühne zu; wenn seine Farbe mit der Farbe des Square Box-Sprites übereinstimmt, wird er blockiert und fliegt wieder aus einer zufälligen Position auf die Mitte der Bühne zu; stimmt seine Farbe nicht mit der Farbe des Square Box-Sprites überein, durchfliegt er das Heart-Sprite und das Spiel ist vorbei.
1. Sprite Rechteckiger Kasten hinzufügen
Da der Pfeil1 und das Sprite des rechteckigen Kastens beide weiße Kostüme haben, müssen sie, um auf der Bühne angezeigt zu werden, nun den Hintergrund mit einer Farbe füllen, die jede Farbe außer Schwarz, Weiß und Rot sein kann.
Klicken Sie auf Backdrop1, um zu seiner Backdrops-Seite zu gelangen.
Wählen Sie die gewünschte Füllfarbe aus.
Verwenden Sie das Rectangle-Werkzeug, um ein Rechteck in der Größe des Zeichenbretts zu zeichnen.

Löschen Sie das Standard-Sprite und verwenden Sie die Schaltfläche Choose a Sprite, um das Square Box-Sprite hinzuzufügen, und setzen Sie dessen x und y auf (0, 0).

Gehen Sie zur Costumes-Seite des Square Box-Sprites und legen Sie die schwarz-weißen Kostüme fest.
Klicken Sie auf das Auswahlinstrument
Wählen Sie das Rechteck auf der Leinwand aus
Wählen Sie die Füllfarbe Schwarz
und nennen Sie das Kostüm Black

Wählen Sie das zweite Kostüm aus, stellen Sie die Füllfarbe auf Weiß, nennen Sie es Weiß und löschen Sie die restlichen Kostüme.

2. Herz-Sprite hinzufügen
Fügen Sie auch ein Heart-Sprite hinzu, setzen Sie seine Position auf (0, 0) und verkleinern Sie seine Größe, sodass es so aussieht, als ob es sich innerhalb des Quadrat-Kastens befindet.

Auf der Costumes-Seite passen Sie das lila Herz-Kostüm an, damit es aussieht, als wäre es zerbrochen.

3. Arrow1-Sprite hinzufügen
Fügen Sie ein Arrow1-Sprite hinzu.

Auf der Costumes-Seite behalten und kopieren Sie das nach rechts gerichtete Kostüm und setzen Sie seine Farbe auf Schwarz und Weiß.

4. Skripterstellung für das Quadrat-Kasten-Sprite
Gehen Sie zurück zur Blocks-Seite und scripten Sie das Square Box-Sprite.
Wenn der Wert des digitalen Pins 2 (Linienverfolgungsmodul) 1 ist (schwarze Linie erkannt), wechseln Sie das Kostüm zu Black.
Andernfalls wechseln Sie das Kostüm zu White.

5. Skripterstellung für das Herz-Sprite
Das Heart-Sprite wird im Square Box geschützt und hat standardmäßig ein rotes Kostüm. Wenn das Arrow1-Sprite berührt wird, endet das Spiel.

6. Skripterstellung für das Arrow1-Sprite
Lassen Sie das Arrow1-Sprite verstecken und einen Klon erstellen, wenn die grüne Flagge angeklickt wird.

Erstellen Sie einen [init]-Block, um die Position, Orientierung und Farbe des Arrow1-Sprites zu initialisieren.
Es erscheint an einer zufälligen Position, und wenn der Abstand zwischen ihm und dem Heart-Sprite weniger als 200 beträgt, bewegt es sich nach außen, bis der Abstand größer als 200 ist.

Richten Sie seine Richtung auf das Heart-Sprite aus.

Lassen Sie seine Farbe zufällig zwischen Schwarz/Weiß wechseln.
Ist die Variable Farbe 0, wechseln Sie das Kostüm zu White.
Ist die Variable Farbe 1, wechseln Sie das Kostüm zu Black.

Lassen Sie es jetzt bewegen, es wird schneller bewegen, wenn der Wert der Variable level zunimmt.

Legen Sie jetzt seinen Kollisions-Effekt mit dem Square Box-Sprite fest.
Wenn das Arrow1-Sprite und das Square Box-Sprite dieselbe Farbe haben (die gemäß dem Wert des Linienverfolgungsmoduls geändert wird), entweder Schwarz oder Weiß, wird ein neuer Klon erstellt und das Spiel geht weiter.
Stimmen ihre Farben nicht überein, bewegt sich das Arrow1-Sprite weiter und das Spiel endet, wenn es das Heart-Sprite trifft.

Bemerkung
Die beiden [touch color()]-Blöcke müssen die schwarz-weißen Kostüme von Quadrat-Kasten separat aufnehmen.

2.22 SPIEL - Drachen töten¶
In diesem Spiel verwenden wir den Joystick, um einen Drachen zu bekämpfen.
Beim Klicken auf Grün wird der Drache rechts auf und ab schweben und intermittierend Feuer speien. Sie müssen den Joystick verwenden, um die Bewegung des Zauberstabs zu steuern und Sternenangriffe auf den Drachen zu starten, während Sie den von ihm abgefeuerten Flammen ausweichen und ihn schließlich besiegen.

Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
- |
Schaltung aufbauen¶
Ein Joystick ist ein Eingabegerät, das aus einem Stick besteht, der auf einer Basis schwenkt und den Winkel oder die Richtung an das zu steuernde Gerät meldet. Joysticks werden häufig verwendet, um Videospiele und Roboter zu steuern.
Um einem Computer einen vollen Bewegungsbereich mitzuteilen, muss ein Joystick die Stickposition auf zwei Achsen messen - der X-Achse (links nach rechts) und der Y-Achse (oben nach unten).
Die Bewegungskoordinaten des Joysticks werden in der folgenden Abbildung gezeigt.
Bemerkung
Die x-Koordinate geht von links nach rechts, der Bereich liegt zwischen 0 und 1023.
Die y-Koordinate geht von oben nach unten, der Bereich liegt zwischen 0 und 1023.

Bauen Sie nun die Schaltung gemäß dem folgenden Diagramm.

Programmierung¶
1. Drache
Woods-Hintergrund hinzugefügt über den Choose a Backdrop-Knopf.

Löschen Sie das Standard-Sprite und fügen Sie das Dragon-Sprite hinzu.

Wechseln Sie zur Costumes-Seite und spiegeln Sie den Drachen-b und Drachen-c horizontal.

Stellen Sie die Größe auf 50% ein.

Erstellen Sie nun eine Variable - dragon, um die Lebenspunkte des Drachens aufzuzeichnen, und setzen Sie den Anfangswert auf 50.

Wechseln Sie als Nächstes das Kostüm des Sprites zu dragon-b und lassen Sie das Dragon-Sprite in einem bestimmten Bereich auf und ab bewegen.

Fügen Sie ein Lightning-Sprite als das vom Dragon-Sprite geblasene Feuer hinzu. Sie müssen es auf der Kostümseite um 90° im Uhrzeigersinn drehen, um das Lightning-Sprite in die richtige Richtung zu bewegen.
Bemerkung
Beim Anpassen des Lightning-Sprites können Sie es möglicherweise aus der Mitte bewegen, was vermieden werden muss! Der Mittelpunkt muss genau in der Mitte des Sprites liegen!

Dann justiere das dragon-c Kostüm des Dragon Sprites, so dass sein Mittelpunkt am Schwanz des Feuers liegen sollte. Dies stellt sicher, dass die Positionen des Dragon Sprites und des Lightning Sprites korrekt sind und verhindert, dass der Lightning aus den Füßen des Drachen herausgeschossen wird.

Entsprechend muss bei dragon-b der Kopf des Drachen mit dem Mittelpunkt übereinstimmen.

Passen Sie die Größe und Ausrichtung des Lightning Sprites an, um das Bild harmonischer wirken zu lassen.

Jetzt das Skript für den Lightning Sprite erstellen. Das ist einfach, er sollte dem Dragon Sprite immer folgen. Zu diesem Zeitpunkt, wenn Sie auf die grüne Flagge klicken, werden Sie sehen, wie der Dragon sich mit einem Blitz im Mund bewegt.

Zurück zum Dragon Sprite, lassen Sie ihn jetzt Feuer speien, wobei Sie darauf achten müssen, dass das Feuer nicht aus seinem Mund schießt, sondern einen Klon für den Lightning Sprite erstellt.

Klicken Sie auf den Lightning Sprite und lassen Sie den Lightning Klon in einem zufälligen Winkel schießen. Er wird von der Wand abprallen und nach einer bestimmten Zeit verschwinden.

Bei dem Lightning Sprite, verstecken Sie seinen Körper und zeigen den Klon.

Jetzt kann der Drache auf und ab bewegen und Feuer speien.
2. Zauberstab
Erstellen Sie einen Wand Sprite und drehen Sie seine Richtung auf 180 Grad, um nach rechts zu zeigen.

Erstellen Sie jetzt eine Variable hp, um seinen Lebenswert zu erfassen, der zunächst auf 3 gesetzt wird. Dann lesen Sie den Wert des Joysticks, der zur Steuerung der Bewegung des Zauberstabs verwendet wird.

Der Drache hat Blitze und der Zauberstab, der ihn zerstört, hat seinen „magischen Schuss“! Erstellen Sie einen Star Sprite, verkleinern Sie ihn und lassen Sie ihn immer dem Wand Sprite folgen, wobei die Anzahl der Sterne auf drei begrenzt ist.

Lassen Sie den Wand Sprite automatisch Sterne schießen. Der Wand Sprite schießt Sterne auf die gleiche Weise, wie der Drache Feuer speit – indem Klone erstellt werden.

Gehen Sie zurück zum Star Sprite und erstellen Sie ein Skript für seinen Klon, um sich drehend nach rechts zu schießen, verschwindet nach dem Verlassen der Bühne und stellt die Anzahl der Sterne wieder her. Wie beim Lightning Sprite, verstecken Sie den Körper und zeigen den Klon.

Jetzt haben wir einen Zauberstab, der Sternenkugeln schießt.
3. Kampf!
Der Zauberstab und der Drache stehen momentan noch im Widerspruch zueinander, und wir werden sie kämpfen lassen. Der Drache ist stark, und der Zauberstab ist der mutige Mann, der gegen den Drachen kämpft. Die Interaktion zwischen ihnen besteht aus den folgenden Teilen.
Wenn der Zauberstab den Drachen berührt, wird er zurückgestoßen und verliert Lebenspunkte.
Wenn ein Blitz den Zauberstab trifft, verliert der Zauberstab Lebenspunkte.
Wenn die Sternenkugel den Drachen trifft, verliert der Drache Lebenspunkte.
Sobald das geklärt ist, ändern wir die Skripte für jeden Sprite.
Wenn der Wand den Dragon trifft, wird er zurückgestoßen und verliert Lebenspunkte.

Wenn Lightning (ein Lightning Sprite Klon) den Wand Sprite trifft, gibt er ein Knallgeräusch von sich und verschwindet, und der Wand verliert Lebenspunkte.

Wenn ein Star (Klon des Star Sprites) den Dragon trifft, gibt er ein Sammelgeräusch von sich und verschwindet, stellt dabei die Star Anzahl wieder her, und der Dragon verliert Lebenspunkte.

4. Bühne
Die Schlacht zwischen dem Wand und dem Dragon wird letztlich in Gewinner und Verlierer unterteilt, was wir mit der Bühne darstellen.
Fügen Sie den Blue Sky Hintergrund hinzu und schreiben Sie das Wort „GEWONNEN!“ darauf, um zu zeigen, dass der Drache besiegt wurde und der Morgen angebrochen ist.

Und ändern Sie den leeren Hintergrund wie folgt, um zu zeigen, dass das Spiel verloren wurde und alles in Dunkelheit liegt.

Schreiben Sie jetzt ein Skript, um diese Hintergründe zu wechseln: Wenn die grüne Flagge angeklickt wird, wechseln Sie zum Woods Hintergrund; wenn die Lebenspunkte des Drachen weniger als 1 betragen, ist das Spiel gewonnen und wechselt zum Blue Sky Hintergrund; wenn die Lebenspunkte des Wand weniger als 1 betragen, wechseln Sie zum Night Hintergrund und das Spiel ist verloren.

3. Auto mit Scratch steuern
Die folgenden Projekte sind nach ihrer Programmierschwierigkeit geordnet. Es wird empfohlen, diese Bücher in der gegebenen Reihenfolge durchzugehen.
In jedem Projekt gibt es sehr detaillierte Schritte, die Ihnen beibringen, wie Sie den Schaltkreis aufbauen und wie Sie ihn Schritt für Schritt programmieren können, um das gewünschte Ergebnis zu erzielen.
Natürlich können Sie das Skript auch direkt ausführen. Stellen Sie jedoch sicher, dass Sie das relevante Material von github heruntergeladen haben.
Nach dem Download entpacken Sie es. Beachten Sie Hochlade-Modus, um einzelne Skripte direkt auszuführen.
3.1 Das Auto testen¶
Hier erfahren Sie, wie Sie Skripte schreiben, um das Auto vorwärts fahren zu lassen. Sie sollten sich jedoch auf Auto-Projekte beziehen, um das Auto zusammenzubauen und ein grundlegendes Verständnis dafür zu erlangen.
Bevor Sie mit dem Projekt beginnen, sollten Sie die Schritte kennen, um PictoBlox im Hochlade-Modus zu verwenden.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein gesamtes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3-in-1 Starter Kit |
380+ |
Sie können sie auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
Schaltung aufbauen¶
Das L298N Motor-Treiber-Modul ist ein Hochleistungs-Motortreiber-Modul zum Antrieb von Gleichstrom- und Schrittmotoren. Das L298N-Modul kann bis zu 4 Gleichstrommotoren steuern oder 2 Gleichstrommotoren mit Richtungs- und Geschwindigkeitskontrolle.
Verbinden Sie die Kabel zwischen dem L298N-Modul und dem R3-Board gemäß dem untenstehenden Diagramm.
L298N |
R3 Board |
Motor |
---|---|---|
IN1 |
5 |
|
IN2 |
6 |
|
IN3 |
9 |
|
IN4 |
10 |
|
OUT1 |
Schwarzes Kabel des rechten Motors |
|
OUT2 |
Rotes Kabel des rechten Motors |
|
OUT3 |
Schwarzes Kabel des linken Motors |
|
OUT4 |
Rotes Kabel des linken Motors |

Programmierung¶
1. Das Auto vorwärts fahren lassen
Basierend auf der oben gezeigten Verkabelung wissen wir, dass die Pins 5 und 6 verwendet werden, um die Drehung des rechten Motors zu steuern, und die Pins 9 und 10 für die Drehung des linken Motors. Lassen Sie uns nun ein Skript schreiben, um das Auto vorwärts fahren zu lassen.
Nachdem Sie das Board als Arduino Uno ausgewählt haben, wechseln Sie zum Hochlade-Modus und schreiben Sie das Skript gemäß dem folgenden Diagramm.

Klicken Sie auf die Schaltfläche Upload Code, um den Code auf das R3-Board zu laden. Wenn dies erledigt ist, sehen Sie die beiden Motoren des Autos vorwärts bewegen (wenn Sie das Auto auf den Boden setzen, wird es geradeaus fahren, aber vielleicht wird das Auto in einer Kurve fahren, da die Geschwindigkeit der beiden Motoren etwas unterschiedlich ist).
Wenn nicht beide vorwärts drehen, aber die folgenden Situationen auftreten, müssen Sie die Verkabelung der beiden Motoren erneut anpassen.
Wenn beide Motoren gleichzeitig rückwärts drehen (linker Motor dreht im Uhrzeigersinn, rechter Motor gegen den Uhrzeigersinn), tauschen Sie die Verkabelung der linken und rechten Motoren gleichzeitig, OUT1 und OUT2 tauschen, OUT3 und OUT4 tauschen.
Wenn der linke Motor rückwärts dreht (im Uhrzeigersinn), tauschen Sie die Verkabelung von OUT3 und OUT4 des linken Motors.
Wenn der rechte Motor rückwärts dreht (gegen den Uhrzeigersinn), tauschen Sie die Verkabelung von OUT1 und OUT1 des rechten Motors.
2. Block erstellen
Um das Skript übersichtlicher und benutzerfreundlicher zu gestalten, fügen wir hier alle Blöcke, die die Vorwärtsbewegung steuern, in einen Block ein, und beim Gebrauch rufen wir diesen Block direkt auf.
Klicken Sie in der Palette Make a Block auf My Blocks.

Geben Sie den Namen des Blocks - forward ein und setzen Sie einen Haken bei Add an input, setzen Sie den Eingabenamen auf speed.

Ziehen Sie die Blöcke, die die Vorwärtsbewegung des Autos steuern, in forward und beachten Sie, dass Sie den Parameter - speed zu Pin6 und Pin9 hinzufügen müssen.

Rufen Sie den erstellten Block im [Forward] Block - forward auf. Im Upload-Modus muss der Block [When Arduino Uno starts up] am Anfang hinzugefügt werden.
Der Geschwindigkeitsbereich der Motorrotation liegt zwischen 100 und 255.

3. Geschwindigkeit der Motoren anpassen
Da es möglicherweise einen leichten Geschwindigkeitsunterschied zwischen den 2 Motoren gibt, was dazu führt, dass das Auto nicht genau geradeaus fährt, können wir den linken und rechten Motoren unterschiedliche Geschwindigkeiten geben, um das Auto so gerade wie möglich zu halten.
Da mein Auto langsam nach rechts vorne fährt, reduziere ich hier die Geschwindigkeit des linken Motors.

3.2 Bewegung¶
Dieses Projekt basiert auf 3.1 Das Auto testen, um das Auto in alle Richtungen bewegen zu lassen.
Bevor wir mit der Programmierung beginnen, lassen Sie uns das Arbeitsprinzip von L298N überprüfen.
Die Arbeitsbeziehung zwischen ENA und IN1, IN2 ist wie folgt:
ENA |
IN1 |
IN2 |
Zustand des rechten Motors(A) |
---|---|---|---|
0 |
X |
X |
Stopp |
1 |
0 |
0 |
Bremsen |
1 |
0 |
1 |
Drehung im Uhrzeigersinn |
1 |
1 |
0 |
Drehung gegen den Uhrzeigersinn |
1 |
1 |
1 |
Bremsen |
Die Arbeitsbeziehung zwischen ENB und IN3, IN4 ist wie folgt:
ENB |
IN3 |
IN4 |
Zustand des linken Motors(B) |
---|---|---|---|
0 |
X |
X |
Stopp |
1 |
0 |
0 |
Bremsen |
1 |
0 |
1 |
Drehung im Uhrzeigersinn |
1 |
1 |
0 |
Drehung gegen den Uhrzeigersinn |
1 |
1 |
1 |
Bremsen |
Programmierung¶
Erstellen Sie nun Blöcke, um das Auto vorwärts, rückwärts, links und rechts drehen und stoppen zu lassen.
1. Vorwärts fahren
Der rechte Motor dreht sich im Uhrzeigersinn und der linke Motor gegen den Uhrzeigersinn, um das Auto vorwärts zu bewegen.

2. Rückwärts fahren
Rückwärts ist genau das Gegenteil: Der rechte Motor muss sich gegen den Uhrzeigersinn drehen, der linke Motor im Uhrzeigersinn.

3. Links abbiegen
Die linken und rechten Motoren drehen sich gleichzeitig im Uhrzeigersinn, um das Auto nach links zu drehen.

4. Rechts abbiegen
Drehen Sie die linken und rechten Motoren in entgegengesetzter Richtung, um das Auto nach rechts zu drehen.

5. Stoppen
Stoppen Sie das Auto, indem Sie alle Motoren auf 0 setzen.

6. Das Auto bewegen
Lassen Sie das Auto vorwärts, rückwärts, links und rechts für 1 Sekunde fahren, dann stoppen. Da alle Blöcke im [Forever]-Block platziert sind, werden Sie sehen, dass das Auto die oben genannten Aktionen wiederholt.

3.3 Der Linie folgen¶
Das Auto ist mit einem Linienverfolgungsmodul ausgestattet, mit dem das Auto der schwarzen Linie folgen kann.
Bevor Sie mit dem Projekt beginnen, sollten Sie eine Kurvenkarte mit schwarzem Linienband erstellen. Die empfohlene Linienbreite liegt zwischen 0,8-1,5 cm, und der Drehwinkel sollte nicht weniger als 90 Grad betragen.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENEINFÜHRUNG |
KAUF-LINK |
---|---|
- |
|
Schaltung aufbauen¶
Es handelt sich um ein digitales Linienverfolgungsmodul. Wenn eine schwarze Linie erkannt wird, gibt es den Wert 1 aus; bei Erkennung einer weißen Linie den Wert 0. Zudem können Sie die Erfassungsentfernung über das Potentiometer am Modul anpassen.
Bauen Sie die Schaltung gemäß dem folgenden Diagramm auf.
Linienverfolgungsmodul |
R3 Board |
S |
2 |
V+ |
5V |
G |
GND |

Das Modul einstellen¶
Bevor Sie mit dem Projekt beginnen, müssen Sie die Empfindlichkeit des Moduls einstellen.
Verdrahten Sie gemäß dem obigen Diagramm, dann schalten Sie das R3-Board ein (entweder direkt über das USB-Kabel oder das 9V-Batterie-Steckkabel), ohne den Code hochzuladen.
Kleben Sie ein schwarzes Isolierband auf den Tisch und stellen Sie den Wagen darauf.
Beobachten Sie die Signalleuchtdiode am Modul und stellen Sie sicher, dass sie auf dem weißen Tisch leuchtet und auf dem schwarzen Band erlischt.
Wenn dies nicht der Fall ist, müssen Sie das Potentiometer am Modul so einstellen, dass es den oben beschriebenen Effekt erzielt.
Programmierung¶
Erstellen Sie nun 2 Blöcke, die es dem Auto ermöglichen, entweder nach vorne links oder nach vorne rechts zu fahren.
1. Nach vorne links fahren
Wenn der rechte Motor im Uhrzeigersinn gedreht wird und der linke Motor unverändert bleibt, bewegt sich das Auto leicht nach vorne links.

2. Nach vorne rechts fahren
Ebenso bewegt sich das Auto leicht nach rechts, wenn der linke Motor gegen den Uhrzeigersinn gedreht wird und der linke Motor nicht bewegt wird.

3. Linienverfolgung
Lesen Sie den Wert des Linienverfolgungsmoduls. Wenn es 1 ist, bedeutet dies, dass eine schwarze Linie erkannt wurde. Lassen Sie das Auto nach links vorwärts fahren, andernfalls nach rechts vorwärts.

Nach dem Hochladen des Codes auf das R3-Board richten Sie das Linienverfolgungsmodul unter dem Auto auf die schwarze Linie aus, und Sie werden sehen, wie das Auto der Linie folgt.
3.4 Ihrer Hand folgen¶
Stellen Sie sich dieses Auto hier als Ihr Haustier vor. Wenn Sie ihm zuwinken, kommt es zu Ihnen gelaufen.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENEINFÜHRUNG |
KAUF-LINK |
---|---|
- |
|
Schaltung aufbauen¶
Ein Ultraschallsensormodul ist ein Instrument, das mithilfe von Ultraschallwellen die Entfernung zu einem Objekt misst. Es verfügt über zwei Sonden: Eine dient zum Senden von Ultraschallwellen und die andere zum Empfangen der Wellen. Dabei wird die Sende- und Empfangszeit in eine Entfernung umgewandelt, um so die Distanz zwischen dem Gerät und einem Hindernis zu ermitteln.
Bauen Sie nun die Schaltung gemäß dem folgenden Diagramm auf.
Ultraschallmodul |
R3 Board |
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |

Programmierung¶
Erstellen Sie Blöcke, um das Auto vorwärts fahren zu lassen und anzuhalten.

Halten Sie Ihre Hand vor das Auto und lesen Sie dann den Wert des Ultraschallmoduls aus. Wenn die erkannte Entfernung Ihrer Hand 5-10cm beträgt, lassen Sie das Auto vorwärts fahren, ansonsten stoppen Sie es.

3.5 Hindernisvermeidung¶
Zwei Infrarot-Hindernisvermeidungsmodule sind an der Vorderseite des Autos montiert, die zur Erkennung einiger naher Hindernisse verwendet werden können.
In diesem Projekt darf das Auto frei vorwärts fahren und kann, wenn es auf ein Hindernis trifft, dieses umgehen und in andere Richtungen weiterfahren.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENEINFÜHRUNG |
KAUF-LINK |
---|---|
- |
|
Schaltung aufbauen¶
Das Hindernisvermeidungsmodul ist ein abstandseinstellbarer Infrarot-Näherungssensor, dessen Ausgang normalerweise hoch und bei Hinderniserkennung niedrig ist.
Bauen Sie nun die Schaltung gemäß dem untenstehenden Diagramm auf.
Linkes IR-Modul |
R3 Board |
OUT |
8 |
GND |
GND |
VCC |
5V |
Rechtes IR-Modul |
R3 Board |
OUT |
7 |
GND |
GND |
VCC |
5V |

Modul einstellen¶
Bevor Sie mit dem Projekt beginnen, müssen Sie den Erkennungsabstand des Moduls einstellen.
Verkabeln Sie gemäß dem obenstehenden Diagramm, schalten Sie das R3-Board ein (entweder durch direktes Einstecken des USB-Kabels oder durch Anschließen des 9V-Batteriekabels), ohne den Code hochzuladen.
Platzieren Sie ein Notizbuch oder ein anderes flaches Objekt etwa 5 cm vor der IR-Hindernisvermeidung.
Verwenden Sie dann einen Schraubendreher, um das Potentiometer auf dem Modul zu drehen, bis die Signalanzeige auf dem Modul gerade aufleuchtet, um so seinen maximalen Erkennungsabstand von 5 cm einzustellen.
Verfolgen Sie die gleiche Methode, um ein weiteres Infrarot-Modul einzustellen.

Programmierung¶
Das gewünschte Ergebnis:
Wenn das linke IR-Modul ein Hindernis erkennt, fährt das Auto rückwärts nach links.
Wenn das rechte IR-Modul ein Hindernis erkennt, fährt das Auto rückwärts nach rechts.
Wenn beide IR-Module ein Hindernis erkennen, fährt das Auto direkt rückwärts.
Andernfalls fährt das Auto vorwärts.
Erstellen Sie nun die entsprechenden Blöcke.
1. Das Auto fährt rückwärts nach links
Wenn sich der rechte Motor gegen den Uhrzeigersinn dreht und der linke Motor nicht dreht, wird das Auto rückwärts nach links fahren.

2. Das Auto fährt rückwärts nach rechts
Wenn sich der linke Motor im Uhrzeigersinn dreht und der rechte Motor nicht dreht, wird das Auto rückwärts nach rechts fahren.

3. Das Auto fährt vorwärts, rückwärts und hält an

4. Die Werte der 2 IR-Module auslesen
Klicken Sie in der Variables-Palette auf Make a variable.

Geben Sie den Variablennamen ein und klicken Sie auf OK, um eine neue Variable zu erstellen.

Lesen Sie die Werte der linken und rechten IR-Hindernisvermeidungsmodule aus und speichern Sie sie in den 2 neuen Variablen.

5. Hindernisvermeidung
Wenn das linke IR-Modul 0 ist (Hindernis erkannt) und das rechte IR-Modul 1 ist, soll das Auto nach links zurückfahren.
Wenn das rechte IR-Modul 0 ist (Hindernis erkannt), soll das Auto nach rechts zurückfahren.
Wenn beide IR-Module gleichzeitig ein Hindernis erkennen, wird das Auto rückwärts fahren.
Andernfalls wird das Auto weiterhin vorwärts fahren.

3.6 Folge deiner Hand 2¶
Im 3.4 Ihrer Hand folgen Projekt wurde nur das Ultraschallmodul verwendet, es kann nur vorwärts deiner Hand folgen.
In diesem Projekt verwenden wir gleichzeitig 2 IR-Hindernisvermeidungsmodule, sodass das Auto deiner Hand nach links oder rechts folgen kann.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein ganzes Set zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Sie können diese auch einzeln über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltkreis aufbauen¶
Verbinden Sie das Ultraschallmodul und die beiden IR-Hindernisvermeidungsmodule gleichzeitig.
Die Verkabelung zwischen dem Ultraschall und dem R3-Board ist wie folgt:
Ultraschallmodul |
R3-Board |
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |
Die Verkabelung der 2 IR-Hindernisvermeidungsmodule zum R3-Board ist wie folgt:
Linkes IR-Modul |
R3-Board |
OUT |
8 |
GND |
GND |
VCC |
5V |
Rechtes IR-Modul |
R3-Board |
OUT |
7 |
GND |
GND |
VCC |
5V |

Programmierung¶
Die in diesem Projekt zu erreichende Wirkung ist wie folgt:
Das Ultraschall erkennt deine Hand etwa 5-10 cm vor sich und lässt das Auto folgen.
Das Infrarotmodul links erkennt deine Hand und dreht sich nach links.
Das rechte IR-Modul erkennt deine Hand und dreht sich nach rechts.
1. Block erstellen
Erstellen Sie Blöcke, die das Auto vorwärts bewegen, links abbiegen, rechts abbiegen und anhalten lassen.

2. Vorwärts folgen
Lesen Sie den Ultraschallwert, und wenn Ihre Hand in einem Abstand von 5-10 cm erkannt wird, lassen Sie das Auto folgen.

3. Links und rechts folgen
Lesen Sie die Werte der linken und rechten IR-Module.
Wenn das linke IR-Modul Ihre Hand erkennt, drehen Sie sich nach links.
Wenn das rechte IR-Modul Ihre Hand erkennt, drehen Sie sich nach rechts.
Wenn weder das IR-Modul noch das Ultraschallmodul Ihre Hand erkennen, lassen Sie das Auto anhalten.

3.7 Hindernisvermeidung 2¶
Im 3.5 Hindernisvermeidung Projekt werden lediglich 2 IR-Hindernisvermeidungsmodule zur Hinderniserkennung eingesetzt. Allerdings ist die Erkennungsreichweite des IR-Hindernisvermeidungsmoduls begrenzt, was dazu führen kann, dass das Auto möglicherweise zu spät reagiert, um Hindernissen auszuweichen.
In diesem Projekt fügen wir zusätzlich ein Ultraschallmodul hinzu, um Distanzen über eine längere Strecke zu erfassen. So kann das Auto Hindernisse aus größerer Entfernung wahrnehmen und entsprechend reagieren.
Benötigte Komponenten¶
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist sicherlich praktisch, ein komplettes Set zu kaufen. Hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
3 in 1 Starter Kit |
380+ |
Die einzelnen Komponenten können auch über die untenstehenden Links gekauft werden.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
---|---|
- |
|
Schaltkreis aufbauen¶
Verbinden Sie das Ultraschallmodul und die beiden IR-Hindernisvermeidungsmodule gleichzeitig.
Verdrahten Sie das Ultraschallmodul wie folgt mit dem R3-Board.
Ultraschallmodul |
R3-Board |
Vcc |
5V |
Trig |
3 |
Echo |
4 |
Gnd |
GND |
Die Verdrahtung der beiden IR-Hindernisvermeidungsmodule mit dem R3-Board erfolgt wie folgt.
Linkes IR-Modul |
R3-Board |
OUT |
8 |
GND |
GND |
VCC |
5V |
Rechtes IR-Modul |
R3-Board |
OUT |
7 |
GND |
GND |
VCC |
5V |

Programmierung¶
1. Funktion erstellen
Das Auto vorwärts und rückwärts fahren lassen.

Lassen Sie das Auto nach links rückwärts und nach rechts rückwärts fahren.

Das Auto anhalten lassen.

2. Notfall-Hindernisvermeidung
Die beiden Infrarot-Hindernisvermeidungsmodule am Auto dienen der Notfall-Hindernisvermeidung und erkennen Hindernisse auf kurzen Distanzen, Ecken oder relativ kleine Hindernisse.
Wenn das linke Infrarot-Modul ein Hindernis erkennt, fährt das Auto nach links zurück.
Wenn das rechte IR-Modul ein Hindernis erkennt, weicht das Auto nach rechts hinten aus.
Wenn beide Module gleichzeitig ein Hindernis erkennen, fährt das Auto direkt rückwärts.

3. Hindernisvermeidung über lange Distanz
Lese den Wert des Ultraschallmoduls. Wenn der erkannte Wert kleiner als 10 ist, fährt das Auto rückwärts; ansonsten fährt es weiter vorwärts.

Videokurse¶
Für die Grundprojekte Abschnitte
Wenn Sie den Inhalt der Online-Dokumentation schwer verständlich finden, können Sie Ihr Lernerlebnis durch einen schrittweisen Videokurs verbessern. Diese Videos werden Arduino für Sie anschaulicher und optisch ansprechender gestalten.
Sie können den Videokurs hier aufrufen: Ultimate Guide to Arduino.
In diesen Videos werden Sie faszinierende Experimente und Projekte entdecken, die die Konzepte und Prinzipien von Arduino auf eine unterhaltsame und interaktive Weise präsentieren. Indem Sie die Videos ansehen und an praktischen Aktivitäten teilnehmen, werden Sie mit Arduino ein spannendes und angenehmes Lernerlebnis haben.
Für die Auto-Projekte Abschnitte
Ich empfehle, die folgenden YouTube-Playlisten anzusehen, um weitere Anleitungen und praktische Erfahrungen zu sammeln: Video Tutorials for Car Projects.
In diesen Videos lernen Sie die Grundlagen der Robotik und Arduino durch fesselnde Video-Lektionen kennen. Schritt für Schritt bauen Sie ein Roboter-Auto und verstehen dabei die Funktionsweise von Motoren, Hindernisvermeidungsmodulen, Linienverfolgungsmodulen und Infrarotempfängern. Entdecken Sie, wie das Auto verschiedene Funktionen ausführt, und entfalten Sie Ihre Kreativität in der Welt der Robotik und Technologie.
Über die WiFi-Funktion
Im IoT-Projekte Abschnitt unseres Online-Tutorials lernen Sie, wie Sie mit der IoT-Plattform Blynk kommunizieren.
In Video Tutorials for Car Projects werden Sie angeleitet, einen Webserver zu schreiben und Sensordaten darauf hochzuladen. Dieses Tutorial zeigt Ihnen, wie Sie eine Verbindung zwischen Ihrem Arduino-Projekt und einem Webserver über WiFi herstellen können.
FAQ¶
Wie verwendet man Blynk auf einem mobilen Gerät?¶
Bemerkung
Da Datenströme nur auf der Blynk-Webseite erstellt werden können, müssen Sie auf verschiedene Projekte verweisen, um Datenströme im Web zu erstellen. Folgen Sie anschließend dem untenstehenden Tutorial, um Widgets in Blynk auf Ihrem mobilen Gerät zu erstellen.
Öffnen Sie Google Play oder den APP Store auf Ihrem mobilen Gerät und suchen Sie nach „Blynk IoT“ (nicht Blynk(legacy)), um es herunterzuladen.
Nachdem Sie die APP geöffnet haben, melden Sie sich an. Dieses Konto sollte identisch mit dem Konto sein, das Sie im Webclient verwenden.
Gehen Sie dann zum Dashboard (falls Sie noch keines haben, erstellen Sie eines). Sie werden feststellen, dass das Dashboard für Mobilgeräte und Web unabhängig voneinander sind.
Klicken Sie auf das Bearbeiten-Symbol.
Klicken Sie auf den leeren Bereich.
Wählen Sie das gleiche Widget wie auf der Webseite, zum Beispiel ein Joystick-Widget.
Jetzt sehen Sie ein Joystick-Widget im leeren Bereich. Klicken Sie darauf.
Die Joystick-Einstellungen werden angezeigt. Wählen Sie die Datenströme Xvalue und Yvalue, die Sie gerade auf der Webseite eingerichtet haben. Beachten Sie, dass jedes Widget einem anderen Datenstrom in jedem Projekt entspricht.
Gehen Sie zurück zur Dashboard-Seite, und Sie können den Joystick nach Belieben bedienen.
Wie kann die Firmware für das ESP8266-Modul neu geflasht werden?¶
Firmware mit R3 neu flashen¶
1. Schaltkreis aufbauen
Verbinden Sie das ESP8266 mit dem SunFounder R3 Board.
2. Firmware flashen
Befolgen Sie die folgenden Schritte, um die Firmware unter Windows zu flashen.
Firmware und Flash-Tool herunterladen.
Nach dem Entpacken sehen Sie 4 Dateien.
BAT_AT_V1.7.1.0_1M.bin
: Die Firmware, die auf das ESP8266-Modul geflasht wird.esptool.exe
: Dies ist ein Kommandozeilen-Tool für Windows.install_r3.bat
: Dieses Kommandopaket ist für das Windows-System. Ein Doppelklick auf diese Datei führt alle darin enthaltenen Befehle aus.install_r4.bat
: Ähnlich wieinstall_r3.bat
, jedoch speziell für das UNO R4 Board.
Doppelklicken Sie auf
install_r3.bat
, um das Flashen der Firmware zu starten. Wenn Sie die folgende Aufforderung sehen, wurde die Firmware erfolgreich installiert.Bemerkung
Wenn das Flashen fehlschlägt, überprüfen Sie bitte die folgenden Punkte.
Setzen Sie das ESP8266-Modul zurück, indem Sie RST am ESP8266-Adapter auf GND setzen und dann wieder entfernen.
Überprüfen Sie, ob die Verkabelung korrekt ist.
Stellen Sie sicher, dass der Computer Ihr Board korrekt erkannt hat und der Port nicht belegt ist.
Öffnen Sie die install.bat-Datei erneut.
Um die Firmware auf einem Mac OS-System zu flashen, befolgen Sie diese Schritte.
Verwenden Sie die folgenden Befehle, um Esptool zu installieren. Esptool ist ein Python-basiertes, Open-Source-Tool, um mit dem ROM-Bootloader in Espressif-Chips zu kommunizieren.
python3 -m pip install --upgrade pip python3 -m pip install esptool
Wenn Esptool korrekt installiert wurde, gibt es eine Nachricht wie [usage: esptool] aus, wenn Sie
python3 -m esptool
ausführen.Firmware herunterladen.
Nach dem Entpacken sehen Sie 3 Dateien.
BAT_AT_V1.7.1.0_1M.bin
: Die Firmware, die auf das ESP8266-Modul geflasht wird.esptool.exe
: Dies ist ein Kommandozeilen-Tool für Windows.install_r3.bat
: Dieses Kommandopaket ist für das Windows-System.install_r4.bat
: Ähnlich wieinstall_r3.bat
, jedoch speziell für das UNO R4 Board.
Öffnen Sie ein Terminal und navigieren Sie mit dem Befehl
cd
in den gerade heruntergeladenen Firmware-Ordner. Führen Sie dann den folgenden Befehl aus, um die vorhandene Firmware zu löschen und die neue Firmware zu flashen.python3 -m esptool --chip esp8266 --before default_reset erase_flash python3 -m esptool --chip esp8266 --before default_reset write_flash 0 "BAT_AT_V1.7.1.0_1M.bin"
Wenn Sie die folgende Aufforderung sehen, wurde die Firmware erfolgreich installiert.
Bemerkung
Wenn das Flashen fehlschlägt, überprüfen Sie bitte die folgenden Punkte.
Setzen Sie das ESP8266-Modul zurück, indem Sie RST am ESP8266-Adapter auf GND setzen und dann wieder entfernen.
Überprüfen Sie, ob die Verkabelung korrekt ist.
Stellen Sie sicher, dass der Computer Ihr Board korrekt erkannt hat und der Port nicht belegt ist.
Öffnen Sie die install.bat-Datei erneut.
3. Test
Auf Basis der ursprünglichen Verkabelung verbinden Sie IO1 mit 3V3.
Sie können Informationen über das ESP8266-Modul sehen, wenn Sie auf das Lupensymbol (Serial Monitor) in der oberen rechten Ecke klicken und die Baudrate auf 115200 einstellen.
Bemerkung
Wenn
ready
nicht erscheint, können Sie versuchen, das ESP8266-Modul zurückzusetzen (verbinden Sie RST mit GND) und den Serial Monitor erneut zu öffnen.
Klicken Sie auf das NEWLINE DROPDOWN BOX, wählen Sie
both NL & CR
aus dem Dropdown-Menü aus, geben SieAT
ein. Wenn die Antwort OK lautet, bedeutet dies, dass das ESP8266 erfolgreich eine Verbindung mit dem R3-Board hergestellt hat.
Jetzt können Sie 1.1 Konfiguration des ESP8266 folgen, um den Arbeitsmodus und die Baudrate des ESP8266-Moduls einzustellen.
Wie man die Firmware mit R4 neu aufspielt¶
1. Den Schaltkreis aufbauen
Verbinden Sie ESP8266 und das Arduino UNO R4 Board.
2. Laden Sie den folgenden Code auf R4 hoch
void setup() {
Serial.begin(115200);
Serial1.begin(115200);
}
void loop() {
if (Serial.available()) { // Wenn Daten über Serial (USB) eintreffen,
Serial1.write(Serial.read()); // werden diese gelesen und über Serial1 (Pins 0 & 1) gesendet.
}
if (Serial1.available()) { // Wenn Daten über Serial1 (Pins 0 & 1) eintreffen,
Serial.write(Serial1.read()); // werden diese gelesen und über Serial (USB) gesendet.
}
}
3. Firmware aufspielen
Folgen Sie diesen Schritten, um die Firmware unter Windows aufzuspielen.
Firmware und Brenn-Tool herunterladen.
Nach dem Entpacken werden Sie 4 Dateien sehen.
BAT_AT_V1.7.1.0_1M.bin
: Die auf das ESP8266 Modul aufzuspielende Firmware.esptool.exe
: Ein Kommandozeilen-Tool für Windows.install_r3.bat
: Ein Befehlspaket für das Windows-System. Ein Doppelklick auf diese Datei führt alle enthaltenen Befehle aus.install_r4.bat
: Ähnlich wieinstall_r3.bat
, jedoch speziell für das UNO R4 Board.
Doppelklicken Sie auf
install_r4.bat
, um das Aufspielen der Firmware zu starten. Wenn Sie die folgende Aufforderung sehen, wurde die Firmware erfolgreich installiert.Bemerkung
Wenn das Aufspielen fehlschlägt, überprüfen Sie bitte die folgenden Punkte:
Setzen Sie das ESP8266-Modul zurück, indem Sie RST am ESP8266-Adapter an GND anschließen und dann wieder entfernen.
Überprüfen Sie, ob die Verkabelung korrekt ist.
Stellen Sie sicher, dass Ihr Computer Ihr Board korrekt erkannt hat und der Port nicht belegt ist.
Öffnen Sie die install.bat-Datei erneut.
Um die Firmware unter Mac OS aufzuspielen, befolgen Sie diese Schritte:
Installieren Sie Esptool mit den folgenden Befehlen. Esptool ist ein Python-basiertes, Open-Source-Tool, um mit dem ROM-Bootloader in Espressif-Chips zu kommunizieren.
python3 -m pip install --upgrade pip python3 -m pip install esptool
Wenn esptool korrekt installiert wurde, gibt es eine Nachricht wie [usage: esptool] aus, wenn Sie
python3 -m esptool
ausführen.Firmware herunterladen.
Nach dem Entpacken werden Sie 4 Dateien sehen.
BAT_AT_V1.7.1.0_1M.bin
: Die auf das ESP8266 Modul aufzuspielende Firmware.esptool.exe
: Ein Kommandozeilen-Tool für Windows.install_r3.bat
: Ein Befehlspaket für das Windows-System.install_r4.bat
: Ähnlich wieinstall_r3.bat
, jedoch speziell für das UNO R4 Board.
Öffnen Sie ein Terminal und navigieren Sie mit dem
cd
-Befehl in den gerade heruntergeladenen Firmware-Ordner. Führen Sie dann den folgenden Befehl aus, um die vorhandene Firmware zu löschen und die neue Firmware aufzuspielen.python3 -m esptool --chip esp8266 --before no_reset_no_sync erase_flash python3 -m esptool --chip esp8266 --before no_reset_no_sync write_flash 0 "BAT_AT_V1.7.1.0_1M.bin"
Wenn Sie die folgende Aufforderung sehen, wurde die Firmware erfolgreich installiert.
Bemerkung
Wenn das Aufspielen fehlschlägt, überprüfen Sie bitte die folgenden Punkte:
Setzen Sie das ESP8266-Modul zurück, indem Sie RST am ESP8266-Adapter an GND anschließen und dann wieder entfernen.
Überprüfen Sie, ob die Verkabelung korrekt ist.
Stellen Sie sicher, dass Ihr Computer Ihr Board korrekt erkannt hat und der Port nicht belegt ist.
Öffnen Sie die install.bat-Datei erneut.
4. Testen
Auf Basis der ursprünglichen Verkabelung verbinden Sie IO1 mit 3V3.
Sie werden Informationen über das ESP8266-Modul sehen, wenn Sie auf das Lupen-Icon (Serial Monitor) in der oberen rechten Ecke klicken und die Baudrate auf 115200 einstellen.
Bemerkung
Wenn
ready
nicht erscheint, können Sie versuchen, das ESP8266-Modul zurückzusetzen (RST mit GND verbinden) und den Serial Monitor erneut zu öffnen.
Klicken Sie auf das NEWLINE DROPDOWN BOX und wählen Sie im Dropdown-Menü
both NL & CR
aus. Geben SieAT
ein. Wenn „OK“ zurückgegeben wird, bedeutet dies, dass ESP8266 erfolgreich eine Verbindung mit Ihrem Board hergestellt hat.
Nun können Sie 1.1 Konfiguration des ESP8266 folgen, um den Arbeitsmodus und die Baudrate des ESP8266-Moduls einzustellen.
Danke Ihnen¶
Ein herzliches Dankeschön an die Evaluatoren, die unsere Produkte bewertet haben, an die Experten, die Vorschläge für das Tutorial gemacht haben, und an die Benutzer, die uns kontinuierlich folgen und unterstützen. Ihre wertvollen Anregungen sind für uns Ansporn, bessere Produkte zu entwickeln!
Besonderer Dank geht an
Len Davisson
Kalen Daniel
Juan Delacosta
Könnten Sie sich kurz Zeit nehmen, um diesen Fragebogen auszufüllen?
Bemerkung
Nach dem Absenden des Fragebogens gehen Sie bitte wieder nach oben, um die Ergebnisse einzusehen.
Urheberrechtshinweis¶
Alle Inhalte dieses Handbuchs, einschließlich, aber nicht beschränkt auf Texte, Bilder und Code, sind Eigentum der SunFounder Company. Sie dürfen diese nur für persönliches Lernen, Forschung, Vergnügen oder andere nicht-kommerzielle oder gemeinnützige Zwecke verwenden, gemäß den zugehörigen Vorschriften und Urheberrechtsgesetzen, ohne die gesetzlichen Rechte des Autors und der betreffenden Rechteinhaber zu verletzen. Für jede Einzelperson oder Organisation, die diese ohne Erlaubnis für kommerziellen Gewinn verwendet, behält sich das Unternehmen das Recht vor, rechtliche Schritte einzuleiten.