Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

LEGO Wall-E mit Arduino

Komponenten und Verbrauchsmaterialien

LEGO Wall-E
Musste eine zweite Hand bekommen, weil sie sie nicht mehr herstellen
× 1
Arduino Nano R3
× 1
DC-Motor (generisch)
× 2
L298N Dual-Motor-Controller
× 1
Zweifarbige LED
mit 3 Stecknadeln
× 1
Infrarotsensor
× 1
Summer
Eine, die verschiedene Töne spielen kann
× 1
9-V-Batterie
× 1
Widerstand 330 Ohm
× 3
Jumper (generisch)
× 20

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Jeder kennt den Film Wall-E (und wenn nicht, schau ihn dir jetzt an!) und den gelben Helden, der versucht, die Erde zu säubern. In diesem Projekt habe ich eine Lego-Version unseres kleinen Freundes verwendet und ihm beigebracht, wie man Hindernisse vermeidet. Dies war mein erstes Projekt und eine großartige Lernerfahrung, um die Grundlagen der Elektronik herauszufinden.

Schritt 1 – Der Code

Als gelernter Softwareentwickler überlegte ich mir, was ich von ihm wollte und begann mit dem Code.

 // Dieses Programm soll den Wall-E Lego-Roboter steuern. // Wall-E fährt herum. Wenn er ein Hindernis sieht, stoppt er, um sich umzusehen und wählt einen anderen Weg. // Arduino Nano hat 21 Pins, die für digitalRead und digitalWrite verwendet werden können // PWM-Pins 3, 5, 6, 9, 10, 11 können verwendet werden für analogWrite // Pins 0 und 1 können für TTL verwendet werden // Pins 2 und 3 können für externe Interrupts verwendet werden // Pins 10, 11, 12, 13 unterstützen SPI-Kommunikation // Pin 13 kann interne LED sein // Pins 14 bis 21 sind auch analoge Pins A0 bis A7 und können für analogRead verwendet werden #define INFRA_RED 9 // kann ein beliebiger Pin sein #define GREEN_LED 7 // kann ein beliebiger Pin sein, benötigt aber einen Widerstand, vielleicht 220 Ohm - oder der Massepin bekommt 1 kOhm # define RED_LED 8 // kann ein beliebiger Pin sein, braucht aber einen Widerstand, vielleicht 220 Ohm - oder der Massepin bekommt 1 kOhm#define BUZZER 10 // muss PWM-Pin sein, um die Frequenz einzustellen, braucht einen Widerstand, vielleicht 1 kOhm // MR ist der rechter Motor, ML ist der linke Motor#define MR_1 A1 // kann ein beliebiger Pin sein, also lassen Sie sie den Pin-Nummern auf dem L289N-Schild entsprechen #define MR_2 A2 // kann jeder Pin sein, also lassen Sie sie uns entsprechen P in Zahlen auf dem L289N-Schild#define MR_ENABLE 5 // muss PWM-Pin für die Geschwindigkeitssteuerung sein#define ML_1 A3 // kann ein beliebiger Pin sein, also lassen Sie sie uns den Pinnummern auf dem L289N-Schild entsprechen#define ML_2 A4 // kann ein beliebiger Pin sein, also lassen Sie sie uns den Pin-Nummern auf dem L289N-Schild entsprechen #define ML_ENABLE 6 // muss ein PWM-Pin für die Geschwindigkeitssteuerung sein // seine normale Geschwindigkeit auf Maximum setzen int NORMAL_SPEED =255;void setup () { // Warten Sie direkt nach dem Drücken der Reset-Taste etwas, damit wir ihn ausschalten können, ohne Komponenten durch Spannungsspitzen zu beschädigen Verzögerung (2000); // LEDs und Summer PinMode (GREEN_LED, OUTPUT) initialisieren; PinMode (RED_LED, OUTPUT); // PinMode (BUZZER, OUTPUT); // nicht notwendig // LED auf grün zurücksetzen digitalWrite (RED_LED, LOW); digitalWrite (GRÜN_LED, HOCH); // DC-Motorstifte einstellen PinMode (MR_ENABLE, OUTPUT); // Motor rechts PinMode (MR_1, OUTPUT); pinMode (MR_2, AUSGANG); pinMode (ML_ENABLE, OUTPUT); // Motor linker PinMode (ML_1, OUTPUT); pinMode (ML_2, AUSGANG); // Infrarot-PinMode (INFRA_RED, INPUT) initialisieren; // Zufallszahlengenerator für zufällige Drehungen initialisieren randomSeed (analogRead (0)); // hallo sagen playHello();}void loop() { // normaler Betrieb driveForwards(NORMAL_SPEED); // LED auf Grün setzen DigitalWrite (RED_LED, LOW); digitalWrite (GRÜN_LED, HOCH); // auf Hindernisse prüfen if (digitalRead (INFRA_RED) ==LOW) {// LOW bedeutet Hindernis erkannt // LED auf rot ändern digitalWrite (GREEN_LED, LOW); digitalWrite (RED_LED, HIGH); // Motoren stoppen stopDriving (); // äh-oh-Sound spielen playUhOh (); // überprüfen Sie links abbiegen (500); boolesches HindernisLeft =false; if (digitalRead (INFRA_RED) ==LOW) { hindernisLeft =true; } // zurück zur Mitte Verzögerung (100); rechts abbiegen (500); // warte ein wenig, wir wollen nicht überstürzt wirken delay(500); // rechts abbiegenRight (500); boolesches HindernisRight =false; if (digitalRead (INFRA_RED) ==LOW) { HindernisRight =true; } // zurück zur Mitte Verzögerung (100); links abbiegen (500); // jetzt überprüfe, wie du hier rauskommst if (obstacleLeft &&HindernisRight) { driveBackwards(NORMAL_SPEED / 3); // Piepton beim Rückwärtsgehen für 5 Sekunden für (int i =0; i <5; i++) { Tone (BUZZER, 1000, 500); Verzögerung (1000); } // Um ​​nicht irgendwo hängen zu bleiben, biegen Sie zufällig in eine Richtung ab, bevor Sie die Fahrt fortsetzen randomTurn(800, 1600); aufrechtzuerhalten. Sonst if (obstacleLeft) { turnRight (1000); aufrechtzuerhalten. Sonst if (obstacleRight) { turnLeft(1000); aufrechtzuerhalten. Sonst { RandomTurn (1000, 1800); } } // Mache zufällige Sachen für mehr Interaktion int number =random(100); // erzeugt eine Zufallszahl zwischen 0 und 99 if (number ==0) { randomTurn(200,2000); }} void driveForwards (int speed) {// Stellen Sie die Motoren so ein, dass sie in die gleiche Richtung gehen DigitalWrite (MR_1, LOW); digitalWrite (MR_2, HOCH); digitalWrite (ML_1, HOCH); digitalWrite (ML_2, LOW); setSpeed ​​(speed);} void driveBackwards (int speed) {// die Motoren so einstellen, dass sie in die entgegengesetzte Richtung gehen digitalWrite (MR_1, HIGH); digitalWrite (MR_2, LOW); digitalWrite (ML_1, NIEDRIG); digitalWrite (ML_2, HOCH); setSpeed(speed);}void turnLeft(int duration) {// links abbiegen, indem man mit dem rechten Rad vorwärts und mit dem linken Rad rückwärts fährt digitalWrite (MR_1, HIGH); digitalWrite (MR_2, LOW); digitalWrite (ML_1, HOCH); digitalWrite (ML_2, LOW); // verlangsamen, um SetSpeed ​​(NORMAL_SPEED / 2) zu drehen; Verzögerung (Dauer); stopDriving ();}void turnRight (int Dauer) {// rechts abbiegen, indem man mit dem rechten Rad rückwärts und mit dem linken Rad vorwärts geht digitalWrite (MR_1, LOW); digitalWrite (MR_2, HOCH); digitalWrite (ML_1, NIEDRIG); digitalWrite (ML_2, HOCH); // verlangsamen, um SetSpeed ​​(NORMAL_SPEED / 2) zu drehen; Verzögerung (Dauer); stopDriving ();}void stopDriving () {// alle Motorpins ausschalten DigitalWrite (MR_1, LOW); digitalWrite (MR_2, LOW); digitalWrite (ML_1, NIEDRIG); digitalWrite (ML_2, LOW); // nicht sicher, was mit den ENABLE-Pins zu tun ist, aber es schadet nicht, sie auch auszuschalten, denke ich, digitalWrite (MR_ENABLE, LOW); digitalWrite (ML_ENABLE, LOW);}void setSpeed ​​(int speed) {// Geschwindigkeit muss zwischen 0 und 255 liegen Geschwindigkeit =Constraint (Geschwindigkeit, 0, 255); // Stellen Sie die Geschwindigkeit ein, um die Motoren auf analogWrite (MR_ENABLE, speed) zu schalten; analogWrite(ML_ENABLE, speed);}void randomTurn(int minimum, int maximum) { unsigned long time =millis(); int Dauer =zufällig (Minimum, Maximum); if (Zeit % 2) { turnRight (Dauer); aufrechtzuerhalten. Sonst { turnLeft (Dauer); }}void playHello () { Ton (BUZZER, 262, 250); // spielt C4-Verzögerung (300); Ton (SUMMER, 330, 250); // spielt E4 Verzögerung (300); Ton (SUMMER, 392, 250); // spielt G4-Verzögerung (300); Ton (SUMMER, 523, 500); // spielt C5 Verzögerung (550);}void playUhOh () { Tone (BUZZER, 523, 250); // spielt C5-Verzögerung (300); Ton (SUMMER, 415, 500); // spielt Gis4 delay(600);} 

Wenn Sie einen laufenden Motor trennen, können Spannungsspitzen auftreten und Ihre Elektronik beschädigen. Deshalb lasse ich Wall-E zwei Sekunden warten, bevor er etwas tut. Das bedeutet, dass ich einfach die Reset-Taste am Arduino drücken und die Batterie schnell trennen kann, ohne etwas zu beschädigen.

Er spielt eine kleine Melodie, wenn er aufwacht und fährt dann los. Wenn er ein Hindernis sieht, hält er an, spielt ein "Oh-oh"-Geräusch und sieht sich um, um den besten Weg zu bestimmen. Der Infrarotsensor, den ich verwendet habe, hat auf der Rückseite eine kleine Schraube, mit der Sie die Entfernung bestimmen können, in der er ein Signal erzeugt. Deshalb gibt es im Code keine Entfernungsberechnungen. (Ich wollte zuerst einen Ultraschallsensor verwenden, aber er passt nicht zu seinen Augen.)

Wall-E prüft zuerst, ob die linke Seite frei ist und dann, ob die rechte Seite frei ist. Sind beide Seiten blockiert, fährt er piepsend rückwärts wie eine schwere Maschine auf einer Baustelle, dreht sich dann in eine beliebige Richtung und fährt weiter. Wenn nur eine Seite blockiert ist, geht er zur anderen Seite weiter. Sind beide Seiten frei, wählt er zufällig eine aus und setzt seinen Weg fort.

Ich habe versucht, ihn dazu zu bringen, zufällige Drehungen zu machen, aber dieser Teil ist noch nicht ganz abgeschlossen. Ich versuche, den eingebauten Arduino-Timer zu verwenden. Lass es mich in den Kommentaren wissen, wenn du eine Idee hast, wie man es optimieren kann!

Schritt 2 – Verkabeln

Als erstes musste der Infrarotsensor in das Auge eingebaut werden, damit er nicht zu auffällig aussieht. Ich habe es auseinandergenommen, einen Lego-Stift mit Sekundenkleber an den Sensor geklebt (damit sich sein Auge nach oben und unten bewegen kann) und dann mit Blue-Tack die Lego-Stücke wieder um den Sensor gelegt:

Das Wichtigste an den Motoren war, dass sie genug Drehmoment haben, denn das Setup der Wall-E-Räder erfordert einiges an Kraft, um sich zu bewegen. Ich musste Drähte an die Motoren löten und sie so befestigen, dass sie sicher mit dem Lego verbunden sind. Also habe ich seine Räder auseinandergenommen, eine ganze Tüte Lego Technic Pins bestellt, mit Gipsband (so nennt man das? Es ist wie weiches Klebeband, das auf die Haut gehen kann) um die Motorwellen gewickelt und in zwei Pins gesteckt das wurde die Hauptachse für jedes Rad. Dies funktionierte einige Minuten lang, aber dann war die Reibung zu hoch, um den Kleber im Klebeband zu halten. Zum Glück haben die Technic-Pins kleine Rillen an der Seite, so dass das Klebeband einen Platz zum Festhalten hatte, was sie glücklicherweise taten, nachdem sie in Sekundenkleber getränkt wurden.

Ich nahm auch ein bisschen von seiner Brust, um die LED durchzustecken. Dann habe ich alle Teile und das Arduino angeschlossen.

Der Motorschild nur passen in seinen Bauch:

Das Diagramm ist auch nicht ganz klar, aber ich habe versucht, die Drähte zur besseren Übersicht farblich zu kennzeichnen:

Gemäß der Konvention sind alle roten Drähte positiv ("Strom liefern") und alle schwarzen Drähte sind negativ ("Strom empfangen"). Das gelbe Kabel oben rechts führt das Signal für den Infrarotsensor; die orangefarbenen und grünen Drähte sind für die dreipolige zweifarbige LED, die lila Drähte zeigen der Motorabschirmung an, in welche Richtung die Motoren gedreht werden sollen, und die blauen Kabel sagen der Motorabschirmung, wie schnell sie gedreht werden sollen.

Das Motorschild hatte ein sehr gutes Tutorial, das das Anschließen und Verwenden einfach machte. Leider hatte das Fritzing-Teil nicht die beiden Pins zum Einstellen der Geschwindigkeit, so dass die blauen Kabel im Diagramm einfach zufällig auf dem Motorschild landen.

Ein weiteres Problem, mit dem ich beim Zusammenkleben konfrontiert war, war ein Mangel an Spannungs- und Massestiften. Ich wollte die Motoren direkt durch das Motorschild speisen, damit sie so viel Strom wie möglich bekommen, aber ich musste irgendwie auch 5V an den Arduino und den Infrarotsensor speisen. Also tat ich, was so ziemlich jeder im Internet sagte, ich sollte es nicht tun:Ich habe den 5V-Ausgang des Motorschilds als Eingang mit dem 5V-Pin des Arduino verbunden. Jetzt mit dem Shield, das ich verwende, kann ich absolut sicher sein, dass es geregelte 5V ohne böse Spikes ausgibt, die mein Arduino beschädigen könnten. Wenn Sie an diesem Pin eine ungeregelte Stromquelle anschließen, werden Sie wahrscheinlich etwas braten. Ich wollte zuerst den Vin-Pin verwenden, aber dieser hat einen eingebauten Mechanismus, der alles herunterreguliert, so dass meine 5V in 3,8V oder so umgewandelt worden wären, was für das Arduino nicht ausreicht, um richtig zu funktionieren. Stattdessen habe ich das kostenlose Vin verwendet, um den Infrarotsensor mit 5 V zu versorgen (!), da ich keine Kabelsplitter hatte und ich wusste, dass auch dort 5 V herauskommen würden. Ja, zu diesem Zeitpunkt fühlte es sich ein bisschen wie Frankenstein an. Aber es hat funktioniert!

Schritt 3 – Wall-E in Aktion

Hier sind ein paar Videos, die ihn in Aktion zeigen:

Und hier habe ich getestet, was er tun würde, wenn er in einer Ecke stecken würde:

Das war also mein erstes kleines Projekt. Ich plane jetzt, die Kabelverbindungen zu optimieren und vielleicht einen Servomotor hinzuzufügen, damit er den Kopf drehen kann. Vielleicht kaufe ich sogar Splitter und ein kleineres Motorschild und -brett, damit ich alles in seinen Bauch passen kann.

Und also Wall-E lebte glücklich immer nach. Die Ende.

Code

  • Wall_e_control
Wall_e_controlArduino
Dies ist die zentrale Steuerdatei für Wall-E. Es ist einfach, aber alles was er im Moment braucht.
// Dieses Programm soll den Wall-E Lego Roboter steuern.// Wall-E fährt herum. Wenn er ein Hindernis sieht, stoppt er, um sich umzusehen und wählt einen anderen Weg. // Arduino Nano hat 21 Pins, die für digitalRead und digitalWrite verwendet werden können // PWM-Pins 3, 5, 6, 9, 10, 11 können verwendet werden für analogWrite // Pins 0 und 1 können für TTL verwendet werden // Pins 2 und 3 können für externe Interrupts verwendet werden // Pins 10, 11, 12, 13 unterstützen SPI-Kommunikation // Pin 13 kann interne LED sein // Pins 14 bis 21 sind auch analoge Pins A0 bis A7 und können für analogRead verwendet werden #define INFRA_RED 9 // kann ein beliebiger Pin sein #define GREEN_LED 7 // kann ein beliebiger Pin sein, benötigt aber einen Widerstand, vielleicht 220 Ohm - oder der Massepin bekommt 1 kOhm # define RED_LED 8 // kann ein beliebiger Pin sein, braucht aber einen Widerstand, vielleicht 220 Ohm - oder der Massepin bekommt 1 kOhm#define BUZZER 10 // muss PWM-Pin sein, um die Frequenz einzustellen, braucht einen Widerstand, vielleicht 1 kOhm // MR ist der rechter Motor, ML ist der linke Motor#define MR_1 A1 // kann ein beliebiger Pin sein, also lassen Sie sie den Pin-Nummern auf dem L289N-Schild entsprechen #define MR_2 A2 // kann jeder Pin sein, also lassen Sie sie uns entsprechen P in Zahlen auf dem L289N-Schild#define MR_ENABLE 5 // muss PWM-Pin für die Geschwindigkeitssteuerung sein#define ML_1 A3 // kann ein beliebiger Pin sein, also lassen Sie sie uns den Pinnummern auf dem L289N-Schild entsprechen#define ML_2 A4 // kann ein beliebiger Pin sein, also lassen Sie sie uns den Pin-Nummern auf dem L289N-Schild entsprechen #define ML_ENABLE 6 // muss ein PWM-Pin für die Geschwindigkeitssteuerung sein // seine normale Geschwindigkeit auf Maximum setzen int NORMAL_SPEED =255;void setup () { // Warten Sie direkt nach dem Drücken der Reset-Taste etwas, damit wir ihn ausschalten können, ohne Komponenten durch Spannungsspitzen zu beschädigen Verzögerung (2000); // LEDs und Summer PinMode (GREEN_LED, OUTPUT) initialisieren; PinMode (RED_LED, OUTPUT); // PinMode (BUZZER, OUTPUT); // nicht notwendig // LED auf grün zurücksetzen digitalWrite (RED_LED, LOW); digitalWrite (GRÜN_LED, HOCH); // DC-Motorstifte einstellen PinMode (MR_ENABLE, OUTPUT); // Motor rechts PinMode (MR_1, OUTPUT); pinMode (MR_2, AUSGANG); pinMode (ML_ENABLE, OUTPUT); // Motor linker PinMode (ML_1, OUTPUT); pinMode (ML_2, AUSGANG); // Infrarot-PinMode (INFRA_RED, INPUT) initialisieren; // Zufallszahlengenerator für zufällige Drehungen initialisieren randomSeed (analogRead (0)); // hallo sagen playHello();}void loop() { // normaler Betrieb driveForwards(NORMAL_SPEED); // LED auf Grün setzen DigitalWrite (RED_LED, LOW); digitalWrite (GRÜN_LED, HOCH); // auf Hindernisse prüfen if (digitalRead (INFRA_RED) ==LOW) { // LOW bedeutet Hindernis erkannt // LED auf rot ändern digitalWrite (GREEN_LED, LOW); digitalWrite (RED_LED, HIGH); // Motoren stoppen stopDriving (); // äh-oh-Sound spielen playUhOh (); // überprüfen Sie links abbiegen (500); boolesches HindernisLeft =false; if (digitalRead (INFRA_RED) ==LOW) { hindernisLeft =true; } // zurück zur Mitte Verzögerung (100); rechts abbiegen (500); // warte ein wenig, wir wollen nicht überstürzt wirken delay(500); // rechts abbiegenRight (500); boolesches HindernisRight =false; if (digitalRead (INFRA_RED) ==LOW) { HindernisRight =true; } // zurück zur Mitte Verzögerung (100); links abbiegen (500); // jetzt überprüfe, wie du hier rauskommst if (obstacleLeft &&HindernisRight) { driveBackwards(NORMAL_SPEED / 3); // Piepton beim Rückwärtsgehen für 5 Sekunden für (int i =0; i <5; i++) { Tone (BUZZER, 1000, 500); Verzögerung (1000); } // Um ​​nicht irgendwo hängen zu bleiben, biegen Sie zufällig in eine Richtung ab, bevor Sie die Fahrt fortsetzen randomTurn(800, 1600); aufrechtzuerhalten. Sonst if (obstacleLeft) { turnRight (1000); aufrechtzuerhalten. Sonst if (obstacleRight) { turnLeft(1000); aufrechtzuerhalten. Sonst { RandomTurn (1000, 1800); } } // Mache zufällige Sachen für mehr Interaktion int number =random(100); // erzeugt eine Zufallszahl zwischen 0 und 99 if (number ==0) { randomTurn(200,2000); aufrechtzuerhalten. aufrechtzuerhalten. aufrechtzuerhalten. digitalWrite (MR_2, HOCH); digitalWrite (ML_1, HOCH); digitalWrite (ML_2, LOW); setSpeed ​​(speed);} void driveBackwards (int speed) {// die Motoren so einstellen, dass sie in die entgegengesetzte Richtung gehen digitalWrite (MR_1, HIGH); digitalWrite (MR_2, LOW); digitalWrite (ML_1, NIEDRIG); digitalWrite (ML_2, HOCH); setSpeed(speed);}void turnLeft(int duration) {// links abbiegen, indem man mit dem rechten Rad vorwärts und mit dem linken Rad rückwärts fährt digitalWrite (MR_1, HIGH); digitalWrite (MR_2, LOW); digitalWrite (ML_1, HOCH); digitalWrite (ML_2, LOW); // verlangsamen, um SetSpeed ​​(NORMAL_SPEED / 2) zu drehen; Verzögerung (Dauer); stopDriving ();}void turnRight (int Dauer) {// rechts abbiegen, indem man mit dem rechten Rad rückwärts und mit dem linken Rad vorwärts geht digitalWrite (MR_1, LOW); digitalWrite (MR_2, HOCH); digitalWrite (ML_1, NIEDRIG); digitalWrite (ML_2, HOCH); // verlangsamen, um SetSpeed ​​(NORMAL_SPEED / 2) zu drehen; Verzögerung (Dauer); stopDriving ();}void stopDriving () {// alle Motorpins ausschalten DigitalWrite (MR_1, LOW); digitalWrite (MR_2, LOW); digitalWrite (ML_1, NIEDRIG); digitalWrite (ML_2, LOW); // nicht sicher, was mit den ENABLE-Pins zu tun ist, aber es schadet nicht, sie auch auszuschalten, denke ich, digitalWrite (MR_ENABLE, LOW); digitalWrite (ML_ENABLE, LOW);}void setSpeed ​​(int speed) {// Geschwindigkeit muss zwischen 0 und 255 liegen Geschwindigkeit =Constraint (Geschwindigkeit, 0, 255); // Stellen Sie die Geschwindigkeit ein, um die Motoren auf analogWrite (MR_ENABLE, speed) zu schalten; analogWrite(ML_ENABLE, speed);}void randomTurn(int minimum, int maximum) { unsigned long time =millis(); int Dauer =zufällig (Minimum, Maximum); if (Zeit % 2) { turnRight (Dauer); aufrechtzuerhalten. Sonst { turnLeft (Dauer); }}void playHello () { Ton (BUZZER, 262, 250); // spielt C4-Verzögerung (300); Ton (SUMMER, 330, 250); // spielt E4 Verzögerung (300); Ton (SUMMER, 392, 250); // spielt G4-Verzögerung (300); Ton (SUMMER, 523, 500); // spielt C5 Verzögerung (550);}void playUhOh () { Tone (BUZZER, 523, 250); // spielt C5-Verzögerung (300); Ton (SUMMER, 415, 500); // spielt Gis4 delay(600);}

Schaltpläne

Bedeutung der Kabelfarben:
rot =Spannung (positiv)
schwarz =Masse (negativ)
gelb =Signal für Infrarotsensor
orange und grün =Anschlüsse für rote und grüne LED-Eingänge
lila =Motorrichtungskontrolle
blau =Motordrehzahlregelung (leider hatte das Fritzing-Teil nicht die beiden Pins, die meine Motorbrücke für diese Verbindungen hatte, daher sieht es im Moment nach lockeren Drähten aus) wall-e2_3P6X71BCnP.fzz

Herstellungsprozess

  1. CO2-Überwachung mit K30-Sensor
  2. taubblinde Kommunikation mit 1Sheeld/Arduino
  3. Münzprüfer mit Arduino steuern
  4. Automatisierter Lego-Shooter
  5. Hindernisse vermeiden Roboter mit Servomotor
  6. Arduino mit Bluetooth zur Steuerung einer LED!
  7. Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
  8. Linienfolger-Roboter
  9. Mit Nextion Display spielen
  10. Nunchuk-gesteuerter Roboterarm (mit Arduino)