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.

_images/3in_kit.png

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.

_images/translation.png

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

_images/uno_r3.jpg

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

_images/uno.jpg
  • 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

_images/esp8266.jpg

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:

_images/ESP8266_pinout.png
ESP8266-01 Pins

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

_images/esp8266_adapter.png

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:

_images/sch_esp8266adapter.png

Beispiel

Grundlagen

Breadboard

_images/breadboard.png

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.

_images/breadboard_internal.png

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

Widerstand

_images/resistor.png

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.

_images/resistor_symbol.png

Ω 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.

_images/resistance_card.jpg

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.

_images/220ohm.jpg

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

_images/103_capacitor.png _images/10uf_cap.png

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

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.

_images/image414.png

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

_images/74HC595.png

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.

_images/74hc595_pin.png

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

Anzeige

LED

_images/LED.png

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.

_images/led_symbol.png

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

RGB LED

_images/rgb_led.png

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.

_images/rgb_light.png

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.

_images/rgb_symbol.png

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.

_images/rgb_pin.jpg

Beispiel

7-Segment-Anzeige

_images/7_segment.png

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.

_images/segment_cathode1.png

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.

_images/segment_code.png

Beispiel

I2C LCD1602

_images/i2c_lcd1602.png
  • 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.

_images/i2c_address.jpg

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).

_images/back_lcd1602.jpg
  • 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

Ton

Summer

_images/buzzer1.png

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.

_images/buzzer_symbol.png

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.

Summer - Wikipedia

Beispiel

Treiber

TT Motor

_images/tt_motor.jpg

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

_images/motor_size.jpg

Beispiel

Servo

_images/servo.png

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.

_images/servo_internal.png

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.

_images/servo_duty.png

Beispiel

Kreiselpumpe

_images/pump.png

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

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.

_images/l298n_pin.jpg
  • 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.

_images/l298n_introduce.jpg

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

Controller

Knopf

_images/button_1212.png

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.

_images/button_symbol.png

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.

_images/button_1212_size.png

Beispiel

Reedschalter

_images/reed.png

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.

_images/reed_sche.png

Beispiel

Potentiometer

_images/potentiometer.png

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.

_images/potentiometer_symbol.png

Die Funktionen des Potentiometers im Schaltkreis sind:

  1. 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.

  2. 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.

  3. 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

Joystick Modul

_images/joystick_pic.png

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.

_images/joystick318.png

Beispiel

IR-Empfänger

IR-Empfänger

_images/ir_receiver_hs0038b.jpg
  • 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

_images/image186.jpeg

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

Sensor

Fotowiderstand

_images/photoresistor.png

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.

_images/photoresistor_symbol.png

Beispiel

Thermistor

_images/thermistor.png

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.

_images/thermistor_symbol.png

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

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).

_images/dht11.png

Merkmale

  1. Messbereich für Feuchtigkeit: 20 - 90%RH

  2. Temperaturmessbereich: 0 - 60℃

  3. Ausgabe digitaler Signale für Temperatur und Feuchtigkeit

  4. Betriebsspannung: DC 5V; PCB-Größe: 2,0 x 2,0 cm

  5. Messgenauigkeit für Feuchtigkeit: ±5%RH

  6. Messgenauigkeit für Temperatur: ±2℃

Beispiel

Linienverfolgungsmodul

_images/line_track.png
  • 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.

_images/tcrt5000.jpg

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

Bodenfeuchtigkeitsmodul

_images/soil_mositure.png
  • 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.

_images/solid_schematic.png

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

Hindernisvermeidungsmodul

_images/IR_Obstacle.png
  • 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.

_images/IR_module.png

Beispiel

Ultraschall-Modul

_images/ultrasonic_pic.png

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:

  1. Verarbeitung eines High-Level-Signals von mindestens 10us mit einem IO-Flipflop.

  2. Das Modul sendet automatisch acht 40kHz aus und überprüft, ob ein Pulssignal zurückkommt.

  3. 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.

_images/ultrasonic228.png

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

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
  1. Besuchen Sie Arduino IDE 2.0.0 Page.

  2. Laden Sie die IDE für Ihre Betriebssystemversion herunter.

    _images/sp_001.png
Installation
Windows
  1. Doppelklicken Sie auf die Datei arduino-ide_xxxx.exe, um die heruntergeladene Datei auszuführen.

  2. Lesen Sie die Lizenzvereinbarung und stimmen Sie dieser zu.

    _images/sp_002.png
  3. Wählen Sie die Installationsoptionen.

    _images/sp_003.png
  4. Wählen Sie den Installationsort. Es wird empfohlen, die Software auf einem Laufwerk zu installieren, das nicht das Systemlaufwerk ist.

    _images/sp_004.png
  5. Abschließen.

    _images/sp_005.png
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.

_images/macos_install_ide.png
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
  1. Beim ersten Öffnen der Arduino IDE 2.0 werden automatisch die Arduino AVR Boards, eingebaute Bibliotheken und andere erforderliche Dateien installiert.

    _images/sp_901.png
  2. Zusätzlich können Ihre Firewall oder Ihr Sicherheitscenter einige Male fragen, ob Sie einen Gerätetreiber installieren möchten. Bitte installieren Sie alle.

    _images/sp_104.png
  3. 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

_images/sp_ide_2.png
  1. Überprüfen (Verify): Kompilieren Sie Ihren Code. Bei jeglichen Syntaxproblemen werden Fehlermeldungen angezeigt.

  2. 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.

  3. Debuggen (Debug): Für die Fehlerüberprüfung Zeile für Zeile.

  4. Board auswählen (Select Board): Schnelleinstellung für Board und Port.

  5. Serieller Plotter (Serial Plotter): Überprüfen Sie die Änderung des Auslesewerts.

  6. 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.

  7. Datei (File): Klicken Sie auf das Menü und eine Dropdown-Liste erscheint, einschließlich Dateierstellung, Öffnen, Speichern, Schließen, Konfiguration einiger Parameter usw.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. Ausgabeleiste (Output Bar): Wechseln Sie hier den Ausgabe-Tab.

  13. Ausgabefenster (Output Window): Informationen ausgeben.

  14. 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.

  15. Der Bearbeitungsbereich der IDE. Hier können Sie Code schreiben.

  16. Skizzenbuch (Sketchbook): Zum Verwalten von Skizzendateien.

  17. Board-Manager (Board Manager): Zum Verwalten von Board-Treibern.

  18. Library Manager (Library Manager): Zum Verwalten Ihrer Bibliotheksdateien.

  19. Debuggen (Debug): Hilft beim Debuggen des Codes.

  20. Suchen (Search): Suchen Sie die Codes aus Ihren Skizzen.

Wie erstellt, öffnet oder speichert man die Skizze?

  1. 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.

    _images/sp221014_173458.png

    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.

  2. Jetzt versuchen wir, eine neue Skizze zu erstellen. Kopieren Sie den folgenden Code in die Arduino IDE, um den ursprünglichen Code zu ersetzen.

    _images/create1.png
    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);
    }
    
  3. Drücken Sie Ctrl+S oder klicken Sie auf Datei (File) -> Speichern (Save). Die Skizze wird standardmäßig unter C:\Users\{Ihr_Benutzername}\Dokumente\Arduino gespeichert. Sie können sie umbenennen oder einen neuen Pfad zum Speichern auswählen.

    _images/create2.png
  4. Nachdem Sie erfolgreich gespeichert haben, werden Sie feststellen, dass der Name in der Arduino IDE aktualisiert wurde.

    _images/create3.png

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.

_images/board_port.png

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.

_images/upload1.png

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.

_images/sp221014_174532.png

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.

_images/sp221014_175307.png

Wenn keine Fehler vorliegen, sehen Sie eine Nachricht wie die unten stehende.

_images/sp221014_175512.png

3. Skizze hochladen

Nach Abschluss der oben genannten Schritte klicken Sie auf die Upload-Schaltfläche, um diese Skizze auf das Board hochzuladen.

_images/sp221014_175614.png

Wenn der Vorgang erfolgreich war, sehen Sie den folgenden Hinweis.

_images/sp221014_175654.png

Gleichzeitig blinkt die LED auf dem Board.

_images/1_led.jpg

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 dann loop() ausgeführt.

  • Der Code muss innerhalb des {}-Bereichs von setup() oder loop() 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.

  1. Eine Token-Zeichenfolge kann nur manuell geändert und nicht durch Arithmetik im Programm in andere Werte umgewandelt werden.

  2. 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 oder False, obwohl es einen Byte im Speicher belegt.

  • char: Speichert eine Zahl von -127 bis 127. Da es als char 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.

  1. 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.

  2. 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 als delay_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.

  3. 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.

  4. 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.

_images/circuit.png

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.

_images/arduinoPN.jpg

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.

_images/sp221014_181625.png

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.

  1. 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.

  2. 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.

  3. 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!

_images/connect_led.png
  1. 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.

  2. 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.

  3. 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.

  4. Verwenden Sie ein männlich-zu-männlich (M2M) Verbindungskabel, um den kurzen LED-Pin mit der negativen Stromschiene der Steckplatine zu verbinden.

  5. 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äß.

_images/connect_led_reverse.png

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.

_images/sp221014_183107.png

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.

_images/wiring_led.png

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.

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:

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 als INPUT oder OUTPUT, hier muss er als OUTPUT eingestellt werden.

    Syntax

    pinMode(pin, mode)

    Parameter
    • pin: Die Pin-Nummer von Arduino, für die der Modus gesetzt werden soll.

    • mode: INPUT, OUTPUT oder INPUT_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 oder LOW.

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
}
_images/1_led1.jpg

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Schaltplan

_images/circuit_1.1_led.png

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

_images/wiring_led1.png

Code

Bemerkung

  • Sie können die Datei 1.1.hello_led.ino unter dem Pfad 3in1-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.

_images/buzzer.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Summer

-

Schaltplan

_images/circuit_1.2_beep.png

Verdrahtung

_images/wiring_active_buzzer.png

Code

Bemerkung

  • Sie können die Datei 1.2.beep.ino unter dem Pfad 3in1-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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

TT Motor

-

L298N Modul

BUY

Schaltplan

_images/circuit_1.3_wheel.png

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

_images/turn_the_wheel_bb.jpg

Code

Bemerkung

  • Sie können die Datei 1.3.turn_the_wheel.ino unter dem Pfad 3in1-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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

L298N Modul

BUY

Kreiselpumpe

-

Schaltplan

_images/circuit_1.3_wheel.png

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

_images/pumping_bb.jpg

Code

Bemerkung

  • Sie können die Datei 1.4.pumping.ino unter dem Pfad 3in1-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() und delay(), 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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Schaltplan

_images/circuit_1.1_led.png

Verdrahtung

_images/wiring_led1.png

Code

Bemerkung

  • Sie können die Datei 2.1.fading.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

RGB LED

BUY

Schaltplan

_images/circuit_2.2_rgb.png

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

_images/rgb_led_sch.png

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.

_images/colorful_light_bb.jpg

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 Pfad 3in1-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.

_images/edit_colors.png

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 als INPUT oder OUTPUT. Hier muss er auf INPUT 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

  1. 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 Beispiel pinMode(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.

  2. Ü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 seinen pinMode() auf INPUT und verwenden Sie einen externen Pull-down-Widerstand.

  3. 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

  1. Ö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().

  2. Wählen Sie das richtige Board und den richtigen Port aus, um den Code hochzuladen.

  3. Klicken Sie in der Symbolleiste auf das Lupensymbol, um den seriellen Monitor zu aktivieren.

_images/serial1.png
  1. Hier sehen Sie den seriellen Monitor.

_images/serial2.png
  • 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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Knopf

BUY

Schaltplan

_images/circuit_3.1_button.png

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

_images/read_the_button_value_bb.jpg

Code

Bemerkung

  • Sie können die Datei 3.1.read_button_value.ino unter dem Pfad 3in1-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).

_images/sp220614_152922.png

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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Reedschalter

-

Schaltplan

_images/circuit_3.2_reed.png

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

_images/feel_the_magnetism_bb.jpg

Code

Bemerkung

  • Sie können die Datei 3.2.feel_the_magnetism.ino unter dem Pfad 3in1-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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Hindernisvermeidungsmodul

BUY

Schaltplan

_images/circuit_3.3_obstacle.png

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

_images/detect_the_obstacle_bb.jpg

Code

Bemerkung

  • Sie können die Datei 3.3.detect_the_obstacle.ino unter dem Pfad 3in1-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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Linienverfolgungsmodul

BUY

Schaltplan

_images/circuit_3.4_line.png

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

_images/detect_the_line_bb.jpg

Code

Bemerkung

  • Sie können die Datei 3.4.detect_the_line.ino unter dem Pfad 3in1-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 auf OUTPUT gesetzt wurde, funktioniert die analogRead()-Funktion nicht ordnungsgemäß. In diesem Fall müssen Sie pinMode() aufrufen, um ihn wieder auf INPUT 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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Potentiometer

BUY

Schaltplan

_images/circuit_5.1_potentiometer.png

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

_images/turn_thek_knob_bb.jpg

Code

Bemerkung

  • Sie können die Datei 4.1.turn_the_knob.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Fotowiderstand

BUY

Schaltplan

_images/circuit_5.2_light.png

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

_images/feel_the_light_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 4.2.feel_the_light.ino unter dem Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Joystick Modul

-

Schaltplan

_images/circuit_5.3_joystick.png

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

_images/toggle_the_joystick_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 4.3.toggle_the_joystick.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Bodenfeuchtigkeitsmodul

BUY

Schaltplan

_images/circuit_5.4_soil.png

Verkabelung

_images/measure_the_moisture_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 4.4.measure_soil_moisture.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Thermistor

BUY

Schaltplan

_images/circuit_5.5_thermistor.png

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.

_images/thermistor_bb.png

Code

Bemerkung

  • Sie können die Datei 4.5_thermometer.ino im Pfad euler-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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Reedschalter

-

Schaltplan

_images/circuit_8.1_ifelse.png

Verkabelung

_images/if_else_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.1.if_else.ino unter dem Pfad 3in1-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.

  • if else

    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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Bodenfeuchtigkeitsmodul

BUY

Schaltplan

_images/circuit_8.2_threshold.png

Verkabelung

_images/threshold_bb.png

Code

Bemerkung

  • Öffnen Sie die Datei 5.2.threshold.ino unter dem Pfad 3in1-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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Knopf

BUY

TT Motor

-

L298N Modul

BUY

Schaltplan

_images/circuit_8.3_statechange.png

Verkabelung

_images/state_change_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.3.state_change_detection.ino im Pfad 3in1-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?

  1. 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 und lastButtonState werden verwendet, um den aktuellen und den letzten Zustand des Knopfes zu speichern, um zu vergleichen, ob der Knopf gedrückt oder losgelassen wurde.

  2. Jeden Pin initialisieren und die Baudrate des seriellen Monitors festlegen.

    void setup() {
        pinMode(buttonPin, INPUT);
        Serial.begin(9600);
        pinMode(motorPinA,OUTPUT);
        pinMode(motorPinB,OUTPUT);
    }
    
  3. 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. Wenn detectionState 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 und lastButtonState 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 Variable lastButtonState. 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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Knopf

BUY

Summer

BUY

Schaltplan

_images/circuit_8.5_interval.png

Verdrahtung

_images/interval_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.4.interval.ino unter dem Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Servo

BUY

Schaltplan

_images/circuit_6.2_servo.png

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

_images/swinging_servo_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.5.use_internal_library.ino unter dem Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENEINFÜHRUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Servo

BUY

Potentiometer

BUY

Schaltplan

_images/circuit_8.3_amp.png

Verdrahtung

_images/map_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.6.map.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Summer

BUY

Schaltplan

_images/circuit_6.1_passive.png

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

Verkabelung

_images/custom_tone_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.7.tone_notone.ino im Pfad 3in1-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:

  1. 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.

  1. pitches.h: Der Code verwendet eine zusätzliche Datei namens pitches.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 Befehl tone() 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.

_images/image123.png

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.

_images/image124.png

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+

3 in 1 Starter Kit

Die Komponenten können auch einzeln über die folgenden Links erworben werden:

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Ultraschall-Modul

BUY

Schaltplan

_images/circuit_6.3_ultrasonic.png

Verdrahtung

_images/ultrasonic_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.8.user_function.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENEINFÜHRUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

74HC595

BUY

Schaltplan

_images/circuit_6.4_74hc595.png
  • 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

_images/74hc595_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.9.shiftout_led.ino im Pfad 3in1-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.

_images/segment_cathode.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die folgenden Links erwerben.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

7-Segment-Anzeige

BUY

74HC595

BUY

Schaltplan

_images/circuit_6.5_segment.png

Verdrahtung

Verdrahtung

74HC595

LED Segmentanzeige

Q0

a

Q1

b

Q2

c

Q3

d

Q4

e

Q5

f

Q6

g

Q7

dp

_images/segment_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.10.shiftout_segment.ino im Pfad 3in1-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“.

_images/7_segment2.png

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.

Zeichen Code

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:

  1. 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.

    _images/install_lib3.png
  2. Sobald Sie die zu installierende Bibliothek gefunden haben, klicken Sie darauf und anschließend auf den Install-Button.

    _images/install_lib2.png
  3. 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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

I2C LCD1602

BUY

Schaltplan

_images/circuit_7.1_lcd1602.png

Verdrahtung

_images/lcd_bb.jpg

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 Pfad 3in1-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.

    _images/lib_liquidcrystal_i2c.png

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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

IR-Empfänger

-

Schaltplan

_images/circuit_7.2_receiver.png

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.

_images/ir_remote_control_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.11.ir_receiver.ino unter dem Pfad 3in1-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.

    _images/lib_irremote.png

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:

  1. Einbindung von Bibliotheken: Dies beinhaltet die IRremote Bibliothek, welche Funktionen zur Arbeit mit IR-Fernbedienungen bereitstellt.

    #include <IRremote.h>
    
  2. 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
    
  3. 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
    
  4. 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 Funktion decodeKeyValue().

    • Ü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.

_images/Dht11.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

DHT11 Feuchtigkeits- und Temperatursensor

-

Schaltplan

_images/circuit_7.3_dht11.png

Verdrahtung

_images/dht11_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.11.temperature_humidity.ino im Pfad 3in1-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.

    _images/lib_dht11.png

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?

  1. 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);
    
  2. 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();
    }
    
  3. 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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

I2C LCD1602

BUY

Schaltplan

_images/circuit_7.1_lcd1602.png

Verdrahtung

_images/lcd_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.12.serial_read.ino unter dem Pfad 3in1-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.

    _images/lib_liquidcrystal_i2c.png

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 Sie A eingeben und 4 Zeichen, wenn Sie AB eingeben.

  • Serial.read() nimmt das erste Zeichen aus dem eingehenden Stream. Wenn Sie zum Beispiel AB eingeben und Serial.read() nur einmal aufrufen, erhalten Sie das Zeichen A; Beim zweiten Aufruf erhalten Sie B; 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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Knopf

BUY

Summer

-

Schaltplan

_images/circuit_8.6_interval.png

Verkabelung

_images/interrupt_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.13.interrupt.ino im Pfad 3in1-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 sollten digitalPinToInterrupt(pin) verwenden, um den eigentlichen Digitalpin in eine spezifische Interrupt-Nummer umzuwandeln. Wenn Sie zum Beispiel an Pin 3 anschließen, verwenden Sie digitalPinToInterrupt(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+

3 in 1 Starter Kit

Sie können diese auch separat über die folgenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Summer

BUY

LED

BUY

Fotowiderstand

BUY

Schaltbild

_images/circuit_8.8_calibration.png

Verdrahtung

_images/calibration_bb.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.14.calibration.ino im Pfad 3in1-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?

  1. 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;
    
  2. 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 und lightLow entsprechend zugewiesen.

    sensorValue = analogRead(photocellPin);
    if (sensorValue > lightHigh) {
        lightHigh = sensorValue;
    }
    if (sensorValue < lightLow) {
        lightLow = sensorValue;
    }
    
  3. 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+

3 in 1 Starter Kit

Sie können diese auch separat über die folgenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Servo

BUY

Knopf

BUY

Potentiometer

BUY

Schaltplan

_images/circuit_515_eeprom.png

Verdrahtung

_images/eeprom_servo.png

Code

Bemerkung

  • Öffnen Sie die Datei 5.15.eeproom.ino im Pfad 3in1-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?

  1. 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(), in setup() 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 Variable resolution anpassen.

  2. 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 Variable resolution entsprechend ändern.

  3. 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.

  4. Ü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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die folgenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Fotowiderstand

BUY

Schaltplan

_images/circuit_6.1_light_led.png

Verkabelung

_images/light_control_led.png

Code

Bemerkung

  • Öffnen Sie die Datei 6.1.light_control_led.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Knopf

BUY

74HC595

BUY

7-Segment-Anzeige

BUY

Schaltplan

_images/circuit_8.9_eeprom.png

Verkabelung

_images/wiring_electronic_dice.png

Code

Bemerkung

  • Öffnen Sie die Datei 6.2.electronic_dice.ino im Pfad 3in1-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.

  1. 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 Variablen state.

    • FALLING bedeutet, dass der Interrupt ausgelöst wird, wenn der buttonPin von niedrig zu hoch geht.

  2. Wenn die Variable state 0 ist, wird die Funktion showNumber() 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);
        }
    }
    
  3. Ü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.

  4. Ü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 Funktion showNumber().

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Summer

-

Knopf

BUY

I2C LCD1602

BUY

Thermistor

BUY

Potentiometer

BUY

Schaltplan

_images/wiring_high_tem.png

Verdrahtung

_images/tem_alarm.png

Code

Bemerkung

  • Sie können die Datei 6.3.high_tem_alarm.ino direkt im Pfad 3in1-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.

    _images/lib_liquidcrystal_i2c.png

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?

  1. 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, wenn buttonPin von niedrig auf hoch geht.

  2. Um den Hochtemperaturschwellenwert festzulegen, wird die Funktion upperTemSetting() aufgerufen, wenn state 1 ist (state wechselt zwischen 0 und 1 bei Knopfdruck) im Hauptprogramm, ansonsten wird monitoringTemp() aufgerufen, um die aktuelle Temperatur und den eingestellten Schwellenwert anzuzeigen.

    void loop()
    {
        if (state == 1)
        {
            upperTemSetting();
        }
        else {
            monitoringTemp();
        }
    }
    
  3. Ü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.

  4. Ü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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Summer

BUY

I2C LCD1602

BUY

Ultraschall-Modul

BUY

Schaltplan

_images/image265.png

Verdrahtung

_images/backcar.png

Code

Bemerkung

  • Sie können die Datei 6.4_reversingAid.ino direkt im Pfad 3in1-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.

    _images/lib_liquidcrystal_i2c.png

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.

  1. 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;
    }
    
  2. Ü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;
    }
    
  3. 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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

Knopf

BUY

Schaltplan

_images/wiring_reaction_game.png

Verdrahtung

_images/reaction_game.png

Code

Bemerkung

  • Sie können die Datei 6.5_reaction_time.ino direkt im Pfad 3in1-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?

  1. 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);
        ...
    }
    
  2. 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 die random() 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.

  3. Über die pressed1() Funktion

    void 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.

  4. Über die pressed2() Funktion

    void 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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

I2C LCD1602

BUY

IR-Empfänger

-

Schaltplan

In diesem Beispiel erfolgt die Verdrahtung des LCD1602 und des Infrarot-Empfangsmoduls wie folgt.

_images/circuit_guess_number.png

Verdrahtung

_images/wiring_guess_number.png

Code

Bemerkung

  • Sie können die Datei 6.6.guess_number.ino direkt unter dem Pfad 3in1-kit\basic_project\6.6.guess_number öffnen.

  • Oder kopieren Sie diesen Code in die Arduino IDE 1/2.

  • Die Bibliotheken LiquidCrystal I2C und IRremote 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:

  1. Die Glückszahl wird angezeigt, wenn wir das Spiel starten und zurücksetzen, und der Nummernbereichshinweis wird auf 0 ~ 99 zurückgesetzt.

  2. Das LCD zeigt die eingegebene Zahl und den Nummernbereichshinweis an.

  3. Nach Eingabe von zwei Ziffern erscheint automatisch ein Ergebnisurteil.

  4. 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.

  5. 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).

  6. Das Spiel wird automatisch zurückgesetzt, nachdem die Glückszahl erraten wurde, sodass der Spieler eine neue Runde spielen kann.

  7. 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.

_images/Part_three_4_Example_Explanation.png

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.

  1. Entfernen Sie die Schutzfolie vom Acryl.

    _images/IMG_6509.JPG
  2. 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.

    _images/IMG_6518.jpg
  3. 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.

    _images/IMG_6554.JPG
  4. Montieren Sie einen weiteren TT-Motor. Achten Sie ebenso auf die Richtung der Ausgangswelle und die Ausrichtung des Kabels.

    _images/IMG_6558.jpg
  5. Verwenden Sie M3x6mm Schrauben, um den M3x12mm Abstandshalter wie unten gezeigt zu montieren.

    _images/IMG_6568.jpg
  6. Verwenden Sie M3x6mm Schrauben, um das Universalrad zu montieren.

    _images/IMG_6572.jpg
  7. Montieren Sie die 2 Räder und die Grundstruktur des Autos ist fertig.

    _images/IMG_6582.jpg
  8. Befestigen Sie den M3x12mm Halter mit M3x6mm Schrauben an der Rückseite des Autos.

    _images/IMG_6599.jpg
  9. Montieren Sie das L298N-Modul mit M3x6mm Schrauben.

    _images/IMG_6611.jpg
  10. Montieren Sie den M3x24mm Abstandshalter mit M3x6mm Schrauben wie unten gezeigt.

    _images/IMG_6617.jpg
  11. Montieren Sie das R3-Board mit M3x6mm Schrauben.

    _images/IMG_6630.jpg
  12. Montieren Sie die beiden IR-Hindernismodule mit M3x10mm Schrauben und M3 Muttern.

    _images/IMG_6649.jpg
  13. Drehen Sie zu Seite B und befestigen Sie das Line-Track-Modul mit vier M3x6mm Schrauben und zwei M3x24mm Abstandshaltern.

    _images/IMG_6655.jpg
  14. Kleben Sie den Klettverschluss auf die 9V-Batterie und setzen Sie die Batterieklemme auf.

    _images/IMG_6481.jpg
  15. Befestigen Sie den anderen Teil des Klettverschlusses am Auto, um die Batterie zu sichern.

    _images/IMG_6666.jpg
  16. 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.

    _images/IMG_6675.jpg
  17. 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

_images/l298n_pin.jpg

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen:

KOMPONENTENBESCHREIBUNG

KAUF-LINK

L298N Modul

BUY

Vorwärts

Nun verbinden wir den Eingang des L298N-Moduls direkt mit 12V und GND, damit das Auto sich bewegt.

  1. 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

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

_images/1.move_4.png

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.

_images/1.move_back.png

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.

_images/1.move_left.png

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.

_images/1.move_right.png

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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

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

_images/car_motor1.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 2.move.ino im Pfad 3in1-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.

  1. 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);
    }
    
  2. 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);
    }
    ...
    
  3. Rufen Sie diese Funktionen in loop() auf.

    void loop() {
        moveForward();
        delay(2000);
        stopMove();
        delay(500);
    
        moveBackward();
        delay(2000);
        stopMove();
        delay(500);
    ...
    
  • digitalWrite(pin, value)

    • pin: die Arduino-Pinnummer.

    • value: HIGH oder LOW.

    Schreibt einen HIGH- oder LOW-Wert auf einen digitalen Pin. Wenn der Pin mit pinMode() als OUTPUT 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.

  • pinMode(pin, mode)

    • 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.

  • delay(ms)

    • 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 Pfad 3in1-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.

  1. Verwenden Sie die for()-Anweisung, um speed 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);
        }
    }
    
  2. Ü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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENEINFÜHRUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Linienverfolgungsmodul

BUY

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

_images/car_track.jpg

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.

_images/line_track_cali.JPG

Code

Bemerkung

  • Öffnen Sie die Datei 4.follow_the_line.ino im Verzeichnis 3in1-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.

  1. 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);
    }
    
  2. 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);
        }
    }
    
  3. Über die Funktionen moveLeft() und moveRight().

    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);
    }
    
  • Serial

    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.

  • if else

    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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Hindernisvermeidungsmodul

BUY

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

_images/car_avoid.jpg

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.

_images/ir_obs_cali.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 5.obstacle_avoidance_module.ino im Pfad 3in1-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.

  1. 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);
    }
    
  2. 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.

  3. Ü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);
    }
    
  4. Ü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);
    }
    
  • &&: Logisches UND ergibt nur dann wahr, wenn beide Operanden wahr sind.

  • !: Logisches NICHT ergibt wahr, wenn der Operand falsch ist, und umgekehrt.

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Ultraschall-Modul

BUY

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

_images/car_ultrasonic.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 6.ultrasonic_module.ino im Pfad 3in1-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.

  1. Fügen Sie die Pin-Definition für das Ultraschallmodul hinzu. trigPin dient zum Senden von Ultraschallwellen und wird daher auf OUTPUT gesetzt; echoPin wird auf INPUT gesetzt, um Ultraschallwellen zu empfangen.

    ...
    const int trigPin = 3;
    const int echoPin = 4;
    
    void setup() {
    ...
    
    // Ultraschall
        pinMode(echoPin, INPUT);
        pinMode(trigPin, OUTPUT);
    }
    
  2. 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();
        }
    }
    
  3. Ü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;
    }
    
  • pulseIn(pin, value)

    • 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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Ultraschall-Modul

BUY

Hindernisvermeidungsmodul

BUY

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

_images/car_avoid_ultrasonic.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 7.follow_your_hand.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Ultraschall-Modul

BUY

Hindernisvermeidungsmodul

BUY

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

_images/car_avoid_ultrasonic.jpg

Code

Bemerkung

  • Öffnen Sie die Datei 8.self_driving_car.ino im Pfad 3in1-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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

LED

BUY

IR-Empfänger

-

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

_images/car_remote.png

Code

Bemerkung

  • Öffnen Sie die Datei 9.remote_control.ino im Pfad 3in1-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.

    _images/lib_irremote.png

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.

  1. 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
    
  2. 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");
    }
    
  3. 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 Funktion decodeKeyValue().

    • Ü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

_images/car_all.png

Code

Bemerkung

  • Öffnen Sie die Datei 10.one_touch_start.ino unter dem Pfad 3in1-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.

    _images/lib_irremote.png

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?

  1. Öffnen Sie die Datei 11.speed_calibration.ino im Pfad 3in1-kit\car_project\11.speed_calibration oder kopieren Sie diesen Code in die Arduino IDE.

  1. 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.
    
  1. 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.

  2. 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…

_images/blynk-iot.png

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.

  1. Bauen Sie den Schaltkreis.

    _images/iot_1_at_set_bb.jpg
  2. Öffnen Sie die Datei 1.set_software_serial.ino im Pfad 3in1-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());
        }
    }
    
  3. 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.)

    _images/sp202205241130201.png

    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.

  4. Klicken Sie auf NEWLINE DROPDOWN BOX, wählen Sie im Dropdown-Menü both NL & CR aus und geben Sie AT ein. Wenn OK zurückgegeben wird, bedeutet dies, dass der ESP8266 erfolgreich eine Verbindung zum R3-Board hergestellt hat.

    _images/sp202205241137021.png
  5. Geben Sie AT+CWMODE=3 ein und der verwaltete Modus wird auf Station und AP Koexistenz geändert.

    _images/sp20220524114032.png
  6. 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.

    _images/PIC4_sp220615_150321.png

1.2 Blynk konfigurieren

  1. Besuchen Sie die BLYNK-Seite und klicken Sie auf START FREE.

    _images/sp220607_142551.png
  2. Geben Sie Ihre E-Mail-Adresse ein, um ein Konto zu registrieren.

    _images/sp220607_142807.png
  3. Überprüfen Sie Ihre E-Mail, um die Konto-Registrierung abzuschließen.

    _images/sp220607_142936.png
  4. Danach erscheint die Blynk Tour. Sie können sie lesen, um grundlegende Informationen über Blynk zu erhalten.

    _images/sp220607_143244.png
  5. Als nächstes müssen wir mit diesem Quick Start eine Vorlage und ein Gerät erstellen. Klicken Sie auf Let’s go.

    _images/sp220607_143608.png
  6. Wählen Sie die Hardware und den Verbindungstyp aus.

    _images/sp20220614173218.png
  7. Ihnen wird mitgeteilt, welche IDE Sie benötigen. Wir empfehlen die Arduino IDE.

    _images/sp20220614173454.png
  8. 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.

    _images/sp20220614173629.png
  9. 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.

    _images/sp20220614174006.png
  10. Klicken Sie auf den Search-Button und Sie sehen das Gerät, das Sie gerade erstellt haben.

    _images/sp20220614174410.png
  11. Gehen Sie zu diesem Quickstart Device und auf der Device info-Seite sehen Sie TEMPLATE_ID, DEVICE_NAME und AUTH_TOKEN. Diese Informationen werden Sie später benötigen und müssen sie kopieren.

    _images/sp20220614174721.png

1.3 Die benötigten Bibliotheken hinzufügen

Um Blynk in der Arduino IDE zu nutzen, müssen Sie die richtigen Bibliotheken hinzufügen.

  1. Klicken Sie HIER, scrollen Sie bis zum Ende der Seite und laden Sie die erste .zip Datei herunter.

    _images/sp220607_154840.png
  2. Entpacken Sie diese Datei und Sie sehen die folgenden Ordner.

    _images/sp220607_155155.png
  3. 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.

    _images/sp20220614180720.png
  4. Falls Ihr Bibliotheksverzeichnis anders ist, können Sie es überprüfen, indem Sie zu File -> Preferences navigieren.

    _images/install_lib1.png

1.4 Verbindung des R3-Boards mit Blynk herstellen

  1. 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.

    _images/wiring_23.jpg
  2. Öffnen Sie die Datei 1.connect.ino im Pfad 3in1-kit\iot_project\1.connect oder kopieren Sie diesen Code in die Arduino IDE.

  3. 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"
    
    _images/sp20220614174721.png
  4. Geben Sie die ssid und das password des von Ihnen verwendeten WLANs ein.

    char ssid[] = "ssid";
    char pass[] = "password";
    
  5. 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.

    _images/sp220607_170223.png

    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.

  6. Der Status von Blynk ändert sich von offline zu online.

    _images/sp220607_170326.png

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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

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.

_images/wiring_led.jpg

2. Dashboard bearbeiten

  1. 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.

    _images/sp220609_112825.png
  2. 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.

    _images/sp220609_114723.png
  3. Bitte lesen Sie die Warnung sorgfältig durch und bestätigen Sie vor dem Löschen der Datastreams, dass sie korrekt ist.

    _images/sp220609_114929.png
  4. Erstellen Sie einen Datastream des Typs Virtual Pin, der zum Steuern der LED mit Blynks Schalter verwendet wird.

    _images/sp220609_115124.png
  5. 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 auf 0 und 1.

    _images/sp220609_115520.png
  6. Gehen Sie zur Web Dashboard-Seite und löschen Sie die vorhandenen Widgets.

    _images/sp220609_133707.png
  7. Ziehen Sie ein switch-Widget aus dem Widget Box links in den Arbeitsbereich.

    _images/sp220609_114508.png
  8. Nun geht es an die Einrichtung.

    _images/sp20220615180127.png
  9. Wählen Sie Datastream wie zuvor eingestellt.

    _images/sp220609_133741.png
  10. Nach Auswahl von Datastream sehen Sie einige benutzerdefinierte Einstellungen. Drücken Sie dann auf Speichern.

    _images/sp220609_133950.png
  11. Klicken Sie abschließend auf Save And Apply.

    _images/sp220609_141733.png

3. Den Code ausführen

  1. Öffnen Sie die Datei 2.get_data_from_blynk.ino unter dem Pfad 3in1-kit\iot_project\2.get_data_from_blynk, oder kopieren Sie diesen Code in die Arduino IDE.

  2. Ersetzen Sie die Template ID, Device Name und Auth Token durch Ihre eigenen. Geben Sie auch die ssid und das password Ihres WiFi ein. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.

  3. Wählen Sie das richtige Board und den richtigen Port aus und klicken Sie auf den Upoad-Button.

    _images/2_upload.png
  4. Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Aufforderung, z.B. eine erfolgreiche Verbindung.

    _images/2_ready.png

    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.

  5. 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.

    _images/2_blynk_button.png
  6. 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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Reedschalter

-

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.

_images/wiring_reed.jpg

2. Dashboard bearbeiten

  1. 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.

    _images/sp220609_162548.png
  2. Ziehen Sie ein LED widget auf die Wed Dashboard-Seite. Bei einem Wert von 1 leuchtet es (farbig), ansonsten ist es weiß.

    _images/sp220609_163350.png
  3. Auf der Einstellungsseite des LED widget wählen Sie Datastream als Reed(V1) und speichern es.

    _images/sp220609_163502.png

3. Den Code ausführen

  1. Öffnen Sie die Datei 3.push_data_to_blynk.ino unter dem Pfad 3in1-kit\iot_project\3.push_data_to_blynk oder kopieren Sie diesen Code in die Arduino IDE.

  2. Ersetzen Sie die Template ID, Device Name und Auth Token durch Ihre eigenen Werte. Geben Sie außerdem die ssid und das password Ihres WLANs ein. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.

  3. Nachdem Sie das richtige Board und den Port ausgewählt haben, klicken Sie auf die Schaltfläche Upoad.

  4. Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie, bis eine Meldung wie eine erfolgreiche Verbindung angezeigt wird.

    _images/2_ready.png

    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.

  5. 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.

  6. 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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Summer

BUY

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.

_images/wiring_buzzer.jpg

2. Dashboard bearbeiten

  1. 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.

    _images/sp220610_104330.png
  2. Erstellen Sie auch einen weiteren Datastream des Typs Virtual Pin, um den Musiknamen anzuzeigen, und setzen Sie den DATENTYP auf String.

    _images/sp220610_105932.png
  3. 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.

    _images/sp220610_110105.png

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

  1. Öffnen Sie die Datei 4.cloud_music_player.ino unter dem Pfad 3in1-kit\iot_project\4.cloud_music_player.

  2. Ersetzen Sie die Template ID, den Device Name und den Auth Token durch Ihre eigenen Daten. Sie müssen auch die ssid und das password Ihres verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen wir auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.

  3. Nachdem Sie das richtige Board und den Port ausgewählt haben, klicken Sie auf den Upoad-Button.

  4. Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Meldung wie eine erfolgreiche Verbindung.

    _images/2_ready.png

    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.

  5. 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.

    _images/sp220610_110105.png
  6. 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+

3 in 1 Starter Kit

Alternativ können Sie diese auch über die untenstehenden Links einzeln erwerben.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Fotowiderstand

BUY

DHT11 Feuchtigkeits- und Temperatursensor

-

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.

_images/wiring_dht11.jpg

2. Dashboard bearbeiten

  1. 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, %.

    _images/sp220610_145748.png
  2. 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 und 50 und die Einheiten auf Celsius, °C fest.

    _images/sp220610_145811.png
  3. 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 und 1024 festgelegt sind.

    _images/sp220610_145834.png
  4. 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.

_images/sp220610_150400.png

3. Den Code ausführen

  1. Öffnen Sie die Datei 5.home_environment_monitoring.ino unter dem Pfad 3in1-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.

      _images/lib_dht11.png
  2. Ersetzen Sie die Template ID, Device Name und Auth Token durch Ihre eigenen Angaben. Sie müssen auch das ssid und das password des von Ihnen verwendeten WLANs eingeben. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.

  3. Nach Auswahl des richtigen Boards und Ports klicken Sie auf die Upoad-Taste.

  4. Öffnen Sie den seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie, bis eine Meldung wie eine erfolgreiche Verbindung erscheint.

    _images/2_ready.png

    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.

  5. Nun sehen Sie die aktuelle Umgebungstemperatur, Luftfeuchtigkeit und Lichtintensität auf Blynk.

    _images/sp220610_150400.png
  6. Wenn Sie Blynk auf mobilen Geräten verwenden möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem mobilen Gerät?.

    _images/mobile_home.jpg

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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Fotowiderstand

BUY

DHT11 Feuchtigkeits- und Temperatursensor

-

Bodenfeuchtigkeitsmodul

BUY

L298N Modul

BUY

Kreiselpumpe

-

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.

_images/wiring_soil_pump.jpg

2. Dashboard bearbeiten

  1. Die in den vorherigen Projekten erstellten Datenströme müssen gespeichert werden und werden auch in diesem Projekt verwendet.

  2. 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 auf 0 und 1024.

    _images/sp220610_155221.png
  3. 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.

    _images/sp220610_155350.png

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.

    _images/lib_dht11.png
  1. Ersetzen Sie die Template ID, den Gerätenamen und den Auth Token durch Ihre eigenen Angaben. Geben Sie auch die ssid und das Passwort des von Ihnen verwendeten WLANs ein. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.

  2. Nach Auswahl des richtigen Boards und Ports klicken Sie auf die Schaltfläche Upoad.

  3. Öffnen Sie den Serienmonitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Aufforderung, wie z.B. eine erfolgreiche Verbindung.

    _images/2_ready.png

    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.

  4. 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.

    _images/sp220610_155350.png
  5. Wenn Sie Blynk auf mobilen Geräten verwenden möchten, verweisen Sie bitte auf Wie verwendet man Blynk auf einem mobilen Gerät?.

    _images/mobile_plant.jpg

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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

ESP8266 Modul

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Servo

BUY

Hindernisvermeidungsmodul

BUY

7-Segment-Anzeige

BUY

74HC595

BUY

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.

_images/wiring_servo_segment.jpg

2. Dashboard bearbeiten

  1. 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 auf 0 und 10.

    _images/sp220610_165328.png
  2. 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.

    _images/sp220610_165548.png

3. Den Code ausführen

  1. Öffnen Sie die Datei 7.current_limiting_gate.ino unter dem Pfad 3in1-kit\iot_project\7.current_limiting_gate oder kopieren Sie diesen Code in die Arduino IDE.

  2. Ersetzen Sie die Template ID, den Device Name und den Auth Token durch Ihre eigenen. Geben Sie auch die ssid und das password des von Ihnen verwendeten WLANs ein. Für detaillierte Anleitungen verweisen Sie bitte auf 1.4 Verbindung des R3-Boards mit Blynk herstellen.

  3. Nach Auswahl des richtigen Boards und Ports klicken Sie auf die Schaltfläche Upoad.

  4. Öffnen Sie den Serienmonitor (Baudrate auf 115200 einstellen) und warten Sie auf eine Aufforderung, wie z.B. eine erfolgreiche Verbindung.

    _images/2_ready.png

    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.

  5. 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.

    _images/sp220610_165548.png
  6. Wenn Sie Blynk auf mobilen Geräten verwenden möchten, beachten Sie bitte Wie verwendet man Blynk auf einem mobilen Gerät?.

    _images/mobile_gate.jpg

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

_images/wiring_iot_car.jpg

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.

  1. 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 auf Integer und MIN und MAX auf -10 und 10.

    _images/sp220613_164507.png
  2. Erstellen Sie einen Datastream vom Typ Virtual Pin, um den Y-Achsen-Wert des Joysticks zu erfassen. Setzen Sie NAME auf Yvalue, DATENTYP auf Integer, MIN und MAX auf -10 und 10.

    _images/sp220613_164717.png

Führen Sie dann die folgenden Schritte auf Ihrem Handy durch.

  1. Suchen Sie in GOOGLE Play oder im APP Store nach „Blynk IoT“ (nicht Blynk(legacy)) und laden Sie es herunter.

  2. Nach dem Öffnen der APP melden Sie sich an. Dieses Konto sollte mit dem Konto auf dem Web-Client übereinstimmen.

  3. 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.

_images/APP_11.jpg
  1. Klicken Sie auf das Bearbeitungssymbol.

  2. Klicken Sie auf den leeren Bereich.

  3. Wählen Sie ein Joystick-Widget aus.

_images/APP_21.jpg
  1. Jetzt sehen Sie ein Joystick-Widget im leeren Bereich, klicken Sie darauf.

  2. Die Joystick-Einstellungen erscheinen, wählen Sie die von Ihnen in den Datastreams eingestellten Xvalue und Yvalue.

  3. Kehren Sie zur Dashboard-Seite zurück, und Sie können den Joystick nach Belieben bedienen.

_images/APP_31.jpg

3. Code ausführen

  1. Öffnen Sie die Datei 8.iot_car.ino unter dem Pfad 3in1-kit\iot_project\8.iot_car oder kopieren Sie diesen Code in die Arduino IDE.

  2. Ersetzen Sie die Template ID, Device Name und Auth Token durch Ihre eigenen Angaben. Geben Sie auch die ssid und das password des von Ihnen verwendeten WLANs ein. Für detaillierte Anleitungen konsultieren Sie bitte 1.4 Verbindung des R3-Boards mit Blynk herstellen.

  3. Wählen Sie das richtige Board und den Port aus und klicken Sie auf den Upoad-Button.

  4. Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie, bis eine Meldung wie eine erfolgreiche Verbindung erscheint.

    _images/2_ready.png

    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.

  5. 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.

  6. Öffnen Sie Blynk auf Ihrem Handy, und Sie können das Joystick-Widget verwenden, um die Bewegung des Autos zu steuern.

    _images/iot_car.jpg

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.

_images/1_pictoblox.png

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.

_images/download.png

1.2 Einführung in die Benutzeroberfläche

_images/pictoblox_interface.jpg

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.

_images/1_led2.jpg

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.

_images/0_choose_blocks.png

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.

_images/1_stage_upload.png

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

_images/1_board.png

Wählen Sie zum Beispiel Arduino Uno.

_images/1_choose_uno.png

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.

_images/1_connect.png

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

_images/1_arduino_uno.png

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.

_images/1_firmware.png

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.

_images/0_open.png

Wählen Sie Open from Computer.

_images/0_dic.png

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.

_images/0_stage.png

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

_images/1_more.png
  • 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.

_images/1_arduino_uno.png

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.

_images/1_digital.png

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.

_images/1_more.png

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.

_images/1_board.png

Wählen Sie beispielsweise Arduino Uno.

_images/1_choose_uno.png

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.

_images/1_connect.png

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

_images/1_upload_uno.png

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

_images/1_upload.png

2. Programmierung

  • Skript direkt öffnen und ausführen

Sie können in der oberen rechten Ecke auf File klicken.

_images/0_open.png

Wählen Sie Open from Computer.

_images/0_dic.png

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.

_images/0_upload.png

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

_images/1_upload_code.png
  • 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.

_images/1_upload_uno.png

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

_images/1_uno_starts.png

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.

_images/1_upload_digital.png

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.

_images/1_upload1.png

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.

_images/1_upload_more.png

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

_images/1_upload_code.png

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.

_images/2_button.png

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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENEINFÜHRUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

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.

_images/led_circuit.png

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.

_images/2_tobi.png

Hier wählen wir den Button3-Sprite aus.

_images/2_button3.png

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“.

_images/2_button3_2.png

2. Kostümwechsel.

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

_images/2_switch.png

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.

_images/2_led_on_off.png

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.

_images/3_ap.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENÜBERSICHT

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

LED

BUY

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.

_images/led_circuit.png

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.

_images/3_sprite.png

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.

_images/3_ap_va.png

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.

_images/3_ap_pwm.png

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.

_images/3_ap_0.png

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.

_images/3_ap_brightness.png

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.

_images/3_ap_1.png

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.

_images/3_ap_2.png

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.

_images/4_color.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

RGB LED

BUY

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.

_images/4_rgb.png _images/rgb_circuit.png

Programmierung

1. Sprite auswählen

Löschen Sie das Standard-Sprite und wählen Sie das Ball-Sprite aus.

_images/4_ball.png

Und duplizieren Sie es 5 Mal.

_images/4_duplicate_ball.png

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.

_images/4_rgb1.png

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ß.

_images/4_rgb_addition.png

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

_images/4_yellow.png

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)

_images/4_blue.png

4. Ball3-Sprite (rot)

_images/4_red.png

5. Ball4-Sprite (grün)

_images/4_green.png

6. Ball5-Sprite (lila)

_images/4_purple.png

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.

_images/5_hello.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

I2C LCD1602

BUY

Schaltung aufbauen

_images/lcd1602_circuit.png

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.

_images/5_sprite.png

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

_images/5_sprite1.png

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.

_images/5_h.png

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

_images/5_row.png

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.

_images/5_lcd.png

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.

_images/5_l.png

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.

_images/5_2l.png

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.

_images/5_o.png

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.

_images/6_mouse.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Potentiometer

BUY

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.

_images/potentiometer_circuit.png

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.

_images/6_sprite.png

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.

_images/6_value.png

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.

_images/6_read_a0.png

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.

_images/6_1023.png

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.

_images/6_move.png

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.

_images/6_direction.png

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.

_images/7_doorbell.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Knopf

BUY

Kondensator

BUY

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.

_images/5_buttonc.png

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.

_images/button_circuit.png

Programmierung

1. Einen Hintergrund hinzufügen

Klicken Sie auf den Choose a Backdrop-Button in der unteren rechten Ecke.

_images/7_backdrop.png

Wählen Sie Bedroom 1 aus.

_images/7_bedroom2.png

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.

_images/7_sprite.png

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

_images/7_doorbell.png

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.

_images/7_bell.png

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.

_images/9_tem.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Thermistor

BUY

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.

_images/thermistor_circuit.png

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.

_images/9_snow.png

2. Erstellen Sie 2 Variablen

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

_images/9_va.png

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.

_images/9_before.png

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.

_images/9_current.png

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.

_images/9_show.png

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.

_images/10_clock.png

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+

3 in 1 Starter Kit

Sie können die Teile auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Fotowiderstand

BUY

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.

_images/photoresistor_circuit.png

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.

_images/10_sprite.png

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.

_images/10_reada0.png

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.

_images/10_sound.png

4. Die Figur drehen

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

_images/10_turn.png

5. Alles stoppen

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

_images/10_stop.png

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.

_images/11_serial.png

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+

3 in 1 Starter Kit

Sie können die Teile auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

DHT11 Feuchtigkeits- und Temperatursensor

-

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.

_images/dht11_circuit.png

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.

_images/11_addcom.png

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.

_images/11_init.png

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.

_images/11_readtem.png

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.

_images/11_writeserial.png

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.

_images/11_upload.png

6. Seriellen Monitor starten

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

_images/11_serial.png

2.10 Pendel

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

_images/12_pun.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Servo

BUY

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.

_images/servo_circuit.png

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.

_images/12_paint1.png

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.

_images/12_paint2.png

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.

_images/12_paint3.png

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

_images/12_paint4.png _images/12_paint5.png

2. Eine Variable erstellen.

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

_images/12_servo.png

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.

_images/12_servo1.png

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.

_images/12_servo2.png

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.

_images/12_servo3.png

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.

_images/13_fan.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die folgenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

TT Motor

-

L298N Modul

BUY

Schaltung aufbauen

_images/motor_circuit.png

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.

_images/13_star.png

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

_images/13_star1.png

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

_images/13_star2.png

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.

_images/13_left.png

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.

_images/13_right.png

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.

_images/13_broadcast.png

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.

_images/18_ball.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Fotowiderstand

BUY

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.

_images/photoresistor_circuit.png

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.

_images/18_ball1.png

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

_images/18_ball3.png

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

_images/18_ball4.png

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.

_images/18_ball12.png

Jetzt fügen Sie den Stars Hintergrund hinzu.

_images/18_ball2.png

2. Einen Linien-Sprite zeichnen

Fügen Sie einen Linien-Sprite hinzu.

_images/18_ball7.png

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.

_images/18_ball8.png

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.

_images/18_ball9.png

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

_images/18_ball10.png

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.

_images/18_ball5.png

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.

_images/18_ball6.png

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

_images/18_ball11.png

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.

_images/18_ball13.png

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

_images/18_ball14.png

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

_images/18_ball15.png

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.

_images/14_shooting.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Hindernisvermeidungsmodul

BUY

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.

_images/avoid_circuit.png

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.

_images/14_shooting0.png

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.

_images/14_shooting02.png

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.

_images/14_shooting03.png

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

_images/14_shooting033.png

Das Ziel-Sprite malen

Erstellen Sie ein neues Sprite namens Target.

_images/14_shooting01.png

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.

_images/14_shooting05.png

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.

_images/14_shooting04.png

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.

_images/14_shooting06.png

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.

_images/14_shooting4.png

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

_images/14_shooting5.png

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

_images/14_shooting6.png

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

_images/14_shooting7.png

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

_images/14_shooting8.png

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.

_images/14_shooting9.png

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.

_images/13_balloon0.png

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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Kondensator

BUY

Knopf

BUY

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.

_images/5_buttonc.png

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.

_images/button_circuit.png

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.

_images/13_balloon1.png

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

_images/13_balloon2.png

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.

_images/13_balloon7.png

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

_images/13_balloon3.png

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.

_images/13_balloon4.png

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

_images/13_balloon5.png

3. Den Balloon Sprite programmieren

Stellen Sie die Anfangsposition und Größe des Balloon1 Sprites ein.

_images/13_balloon6.png

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

_images/13_balloon8.png

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).

_images/13_balloon9.png

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).

_images/13_balloon10.png

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.

_images/16_rocket.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Joystick Modul

-

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.

_images/16_joystick.png

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

_images/joystick_circuit.png

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.

_images/16_sprite.png

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

_images/16_sprite1.png

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.

_images/16_roc2.png
  • 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).

_images/16_roc3.png
  • 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).

_images/16_roc4.png
  • 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.

_images/16_roc5.png
  • Wenn der Joystick nach unten gekippt wird, ist die y-Koordinate des Sprites +30.

_images/16_roc6.png

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.

_images/16_star1.png
  • Wenn der Sprite während seiner Bewegung den Rocketship-Sprite berührt, stoppen Sie das Skript.

_images/16_star2.png

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.

_images/14_apple.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Kondensator

BUY

Knopf

BUY

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.

_images/5_buttonc.png

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.

_images/button_circuit.png

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.

_images/14_backdrop.png

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

_images/14_sprite.png

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%.

_images/14_sprite1.png

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.

_images/14_paint_back.png

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.

_images/14_win.png

3. Skripting für den Hintergrund

Der Hintergrund sollte beim Spielstart immer auf Maze wechseln.

_images/14_switchback.png

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.

_images/14_bee1.png

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).

_images/14_bee2.png
  • 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.

_images/14_bee3.png
  • 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.

_images/14_bee5.png
  • 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.

_images/14_bee4.png

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.

_images/15_parrot.png

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+

3 in 1 Starter Kit

Du kannst sie auch einzeln über die folgenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Ultraschall-Modul

BUY

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.

_images/ultrasonic_circuit.png

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.

_images/15_sprite.png

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.

_images/15_sprite1.png

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

_images/15_sprite2.png

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.

_images/15_parr1.png
  • Lies den Wert des Ultraschallmoduls und speichere ihn in der Variable distance nachdem er mit dem [round] Block gerundet wurde.

_images/15_parr2.png
  • 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.

_images/15_parr3.png
  • Wenn der Sprite Parrot den Sprite Paddle berührt, endet das Spiel und das Skript hört auf zu laufen.

_images/15_parr4.png

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.

_images/15_padd.png
  • 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).

_images/15_padd1.png
  • 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.

_images/15_padd2.png
  • Klone einen neuen Paddle-Sprite und lösche den vorherigen Klon.

_images/15_padd3.png

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.

_images/17_brick.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Potentiometer

BUY

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.

_images/potentiometer_circuit.png

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).

_images/17_padd1.png
  • Gehen Sie zur Seite Costumes, entfernen Sie den Umriss und ändern Sie seine Farbe in dunkelgrau.

_images/17_padd3.png
  • 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.

_images/17_padd2.png
  • 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.

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

_images/17_ball2.png
  • 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.

_images/17_ball3.png
  • 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.

_images/17_ball4.png _images/17_ball6.png
  • Wenn der Ball-Sprite an den Rand der Bühne fällt, wird das Skript gestoppt und das Spiel endet.

_images/17_ball5.png

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.

_images/17_bri2.png
  • Erstellen Sie jetzt zuerst 2 Variablen, block, um die Anzahl der Blöcke und roll, um die Anzahl der Reihen zu speichern.

_images/17_bri3.png
  • 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.

_images/17_bri4.png
  • 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.

_images/17_bri5.png
  • 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.

_images/17_bri6.png
  • 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.

_images/17_ball7.png

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.

_images/18_fish.png

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+

3 in 1 Starter Kit

Du kannst sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Widerstand

BUY

Kondensator

BUY

Knopf

BUY

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.

_images/5_buttonc.png

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.

_images/button_circuit.png

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.

_images/18_under.png

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.

_images/18_hook.png
  • 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.

_images/18_hook1.png
  • 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.

_images/18_hook2.png
  • Wenn die grüne Flagge angeklickt wird, setze den Farbeffekt des Sprites auf 30 (gelb) und setze seine Anfangsposition.

_images/18_hook3.png
  • 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.

_images/18_hook4.png

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.

_images/18_fish1.png
  • Erstelle eine Variable score, um die Anzahl der gefangenen Fische zu speichern, verberge diesen Sprite und klone ihn.

_images/18_fish2.png
  • Zeige den Klon des fish-Sprites an, wechsle sein Kostüm und setze schließlich die Anfangsposition.

_images/18_fish3.png
  • Lasse den Klon des fish-Sprites sich links und rechts bewegen und beim Berühren des Randes zurückprallen.

_images/18_fish4.png
  • 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.

_images/18_fish5.png

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.

_images/21_tile.png

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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Breadboard

BUY

Jumper-Kabel

BUY

Hindernisvermeidungsmodul

BUY

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.

_images/2avoid_circuit.png

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.

_images/21_tile1.png

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

_images/21_tile2.png

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.

_images/21_tile01.png

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

_images/21_tile02.png

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

_images/21_tile0.png

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.

_images/21_tile3.png

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.

_images/21_tile4.png

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.

_images/21_tile5.png

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.

_images/21_tile6.png

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.

_images/21_tile7.png

Das Original verstecken und den Klon anzeigen.

_images/21_tile8.png

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.

_images/21_tile9.png

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.

_images/21_tile10.png

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.

_images/21_tile11.png

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.

_images/21_tile12.png

Bemerkung

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

_images/21_tile13.png

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

_images/21_tile14.png

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.

_images/21_tile15.png

5. Right IR-Sprite

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

_images/21_tile16.png

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

_images/21_tile17.png

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.

_images/22_heart.png

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+

3 in 1 Starter Kit

Sie können diese auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Linienverfolgungsmodul

BUY

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.

_images/linetrack_circuit.png

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.

_images/22_heart0.png

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).

_images/22_heart1.png

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

_images/22_heart2.png

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.

_images/22_heart3.png

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.

_images/22_heart5.png

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

_images/22_heart6.png

3. Arrow1-Sprite hinzufügen

Fügen Sie ein Arrow1-Sprite hinzu.

_images/22_heart7.png

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

_images/22_heart8.png

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.

_images/22_heart4.png

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.

_images/22_heart9.png

6. Skripterstellung für das Arrow1-Sprite

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

_images/22_heart10.png

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.

_images/22_heart11.png

Richten Sie seine Richtung auf das Heart-Sprite aus.

_images/22_heart12.png

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.

_images/22_heart14.png

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

_images/22_heart13.png

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.

_images/22_heart15.png

Bemerkung

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

_images/22_heart16.png

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.

_images/19_dragon.png

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+

3 in 1 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

SunFounder R3 Platine

BUY

Jumper-Kabel

BUY

Joystick Modul

-

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.

_images/16_joystick.png

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

_images/joystick_circuit.png

Programmierung

1. Drache

Woods-Hintergrund hinzugefügt über den Choose a Backdrop-Knopf.

_images/19_dragon01.png
  • Löschen Sie das Standard-Sprite und fügen Sie das Dragon-Sprite hinzu.

_images/19_dragon0.png
  • Wechseln Sie zur Costumes-Seite und spiegeln Sie den Drachen-b und Drachen-c horizontal.

_images/19_dragon1.png
  • Stellen Sie die Größe auf 50% ein.

_images/19_dragon3.png
  • Erstellen Sie nun eine Variable - dragon, um die Lebenspunkte des Drachens aufzuzeichnen, und setzen Sie den Anfangswert auf 50.

_images/19_dragon2.png
  • 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.

_images/19_dragon4.png
  • 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!

_images/19_lightning1.png
  • 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.

_images/19_dragon5.png
  • Entsprechend muss bei dragon-b der Kopf des Drachen mit dem Mittelpunkt übereinstimmen.

_images/19_dragon5.png
  • Passen Sie die Größe und Ausrichtung des Lightning Sprites an, um das Bild harmonischer wirken zu lassen.

_images/19_lightning3.png
  • 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.

_images/19_lightning4.png
  • 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.

_images/19_dragon6.png
  • 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.

_images/19_lightning5.png
  • Bei dem Lightning Sprite, verstecken Sie seinen Körper und zeigen den Klon.

_images/19_lightning6.png

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.

_images/19_wand1.png
  • 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.

_images/19_wand2.png
  • 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.

_images/19_star2.png
  • 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.

_images/19_wand3.png
  • 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.

_images/19_star3.png

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.

  1. Wenn der Zauberstab den Drachen berührt, wird er zurückgestoßen und verliert Lebenspunkte.

  2. Wenn ein Blitz den Zauberstab trifft, verliert der Zauberstab Lebenspunkte.

  3. 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.

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

_images/19_lightning7.png
  • 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.

_images/19_star4.png

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.

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

_images/19_night.png
  • 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.

_images/19_sky1.png

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+

3 in 1 Starter Kit

Sie können sie auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

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

_images/car_motor11.jpg

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.

_images/1_test1.png

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.

_images/1_test31.png

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

_images/1_test32.png

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.

_images/1_test33.png

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.

_images/1_test3.png

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.

_images/1_test2.png

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.

_images/2_forward.png

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.

_images/2_backward.png

3. Links abbiegen

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

_images/2_turn_left.png

4. Rechts abbiegen

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

_images/2_turn_right.png

5. Stoppen

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

_images/2_stop.png

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.

_images/2_move.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENEINFÜHRUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Linienverfolgungsmodul

BUY

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

_images/car_track1.jpg

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.

_images/line_track_cali1.JPG

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.

_images/3_forward_left.png

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.

_images/3_forward_left.png

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.

_images/3_follow.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENEINFÜHRUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Ultraschall-Modul

BUY

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

_images/car_ultrasonic1.jpg

Programmierung

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

_images/4_hand1.png

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.

_images/4_hand2.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENEINFÜHRUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Hindernisvermeidungsmodul

BUY

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

_images/car_avoid1.jpg

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.

_images/ir_obs_cali1.jpg

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.

_images/5_avoid1.png

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.

_images/5_avoid2.png

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

_images/5_avoid3.png

4. Die Werte der 2 IR-Module auslesen

Klicken Sie in der Variables-Palette auf Make a variable.

_images/5_avoid4.png

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

_images/5_avoid5.png

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

_images/5_avoid6.png

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.

_images/5_avoid7.png

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+

3 in 1 Starter Kit

Sie können diese auch einzeln über die untenstehenden Links kaufen.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Ultraschall-Modul

BUY

Hindernisvermeidungsmodul

BUY

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

_images/car_avoid_ultrasonic1.jpg

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.

_images/6_follow2_1.png

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.

_images/6_follow2_2.png

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.

_images/6_follow2_3.png

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+

3 in 1 Starter Kit

Die einzelnen Komponenten können auch über die untenstehenden Links gekauft werden.

KOMPONENTENBESCHREIBUNG

KAUF-LINK

SunFounder R3 Platine

BUY

L298N Modul

BUY

TT Motor

-

Ultraschall-Modul

BUY

Hindernisvermeidungsmodul

BUY

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

_images/car_avoid_ultrasonic1.jpg

Programmierung

1. Funktion erstellen

Das Auto vorwärts und rückwärts fahren lassen.

_images/7_avoid2_1.png

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

_images/7_avoid2_2.png

Das Auto anhalten lassen.

_images/7_avoid2_3.png

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.

_images/7_avoid2_4.png

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.

_images/7_avoid2_5.png

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.

    _images/video_learn.png

    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.

    _images/video_car.png

    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.

    _images/video_iot.png

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.

  1. Ö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.

  2. Nachdem Sie die APP geöffnet haben, melden Sie sich an. Dieses Konto sollte identisch mit dem Konto sein, das Sie im Webclient verwenden.

  3. 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.

    _images/APP_1.jpg
  4. Klicken Sie auf das Bearbeiten-Symbol.

  5. Klicken Sie auf den leeren Bereich.

  6. Wählen Sie das gleiche Widget wie auf der Webseite, zum Beispiel ein Joystick-Widget.

    _images/APP_2.jpg
  7. Jetzt sehen Sie ein Joystick-Widget im leeren Bereich. Klicken Sie darauf.

  8. 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.

  9. Gehen Sie zurück zur Dashboard-Seite, und Sie können den Joystick nach Belieben bedienen.

    _images/APP_3.jpg

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.

_images/connect_esp8266.png

2. Firmware flashen

  • Befolgen Sie die folgenden Schritte, um die Firmware unter Windows zu flashen.

    1. Firmware und Flash-Tool herunterladen.

    2. Nach dem Entpacken sehen Sie 4 Dateien.

      _images/bat_firmware.png
      • 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 wie install_r3.bat, jedoch speziell für das UNO R4 Board.

    3. Doppelklicken Sie auf install_r3.bat, um das Flashen der Firmware zu starten. Wenn Sie die folgende Aufforderung sehen, wurde die Firmware erfolgreich installiert.

      _images/install_firmware.png

      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.

    1. 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
      
    2. Wenn Esptool korrekt installiert wurde, gibt es eine Nachricht wie [usage: esptool] aus, wenn Sie python3 -m esptool ausführen.

    3. Firmware herunterladen.

    4. Nach dem Entpacken sehen Sie 3 Dateien.

      _images/bat_firmware.png
      • 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 wie install_r3.bat, jedoch speziell für das UNO R4 Board.

    5. Ö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"
      
    6. Wenn Sie die folgende Aufforderung sehen, wurde die Firmware erfolgreich installiert.

      _images/install_firmware_macos.png

      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

  1. Auf Basis der ursprünglichen Verkabelung verbinden Sie IO1 mit 3V3.

    _images/connect_esp826612.png
  2. 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.

    _images/sp20220524113020.png

    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.

  3. Klicken Sie auf das NEWLINE DROPDOWN BOX, wählen Sie both NL & CR aus dem Dropdown-Menü aus, geben Sie AT ein. Wenn die Antwort OK lautet, bedeutet dies, dass das ESP8266 erfolgreich eine Verbindung mit dem R3-Board hergestellt hat.

    _images/sp20220524113702.png

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.

_images/faq_at_burn_bb.jpg

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.

    1. Firmware und Brenn-Tool herunterladen.

    2. Nach dem Entpacken werden Sie 4 Dateien sehen.

      _images/bat_firmware.png
      • 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 wie install_r3.bat, jedoch speziell für das UNO R4 Board.

    3. Doppelklicken Sie auf install_r4.bat, um das Aufspielen der Firmware zu starten. Wenn Sie die folgende Aufforderung sehen, wurde die Firmware erfolgreich installiert.

      _images/install_firmware.png

      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:

    1. 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
      
    2. Wenn esptool korrekt installiert wurde, gibt es eine Nachricht wie [usage: esptool] aus, wenn Sie python3 -m esptool ausführen.

    3. Firmware herunterladen.

    4. Nach dem Entpacken werden Sie 4 Dateien sehen.

      _images/bat_firmware.png
      • 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 wie install_r3.bat, jedoch speziell für das UNO R4 Board.

    5. Ö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"
      
    6. Wenn Sie die folgende Aufforderung sehen, wurde die Firmware erfolgreich installiert.

      _images/install_firmware_macos.png

      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

  1. Auf Basis der ursprünglichen Verkabelung verbinden Sie IO1 mit 3V3.

    _images/faq_at_burn_check_bb.jpg
  2. 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.

    _images/sp20220524113020.png

    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.

  3. Klicken Sie auf das NEWLINE DROPDOWN BOX und wählen Sie im Dropdown-Menü both NL & CR aus. Geben Sie AT ein. Wenn „OK“ zurückgegeben wird, bedeutet dies, dass ESP8266 erfolgreich eine Verbindung mit Ihrem Board hergestellt hat.

    _images/sp20220524113702.png

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.