FtDuino/Erste Schritte mit Scratch: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
Markierung: 2017-Quelltext-Bearbeitung
Keine Bearbeitungszusammenfassung
Markierung: 2017-Quelltext-Bearbeitung
Zeile 1: Zeile 1:
{{DISPLAYTITLE:<strong style=color:red>f</strong><strong style=color:blue>t</strong><strong style=color:darkcyan>Duino</strong>/Erste Schritte}}
{{DISPLAYTITLE:<strong style=color:red>f</strong><strong style=color:blue>t</strong><strong style=color:darkcyan>Duino</strong>/Erste Schritte}}
[[Datei:Scratchlogo.svg|180px|right|Logo]]
 
[[File:Scratchlogo.svg|180px|right|Logo]]
Unsere '''ersten Schritte''' beim Programmieren wollen wir mit [[Scratch]] unternehmen.  
Unsere '''ersten Schritte''' beim Programmieren wollen wir mit [[Scratch]] unternehmen.  


Zeile 70: Zeile 71:
#* '''dann''' den Motor mit der Schraube einschaltet.
#* '''dann''' den Motor mit der Schraube einschaltet.
}}
}}
== Roboter ==
Spannender als die ersten kleinen Automaten sind natürlich fahrende Roboter, die selbständig Aufgaben erledigen können.
Ziel ist es, am 12. Mai 2022 mit unseren ft-Robotern am Robotik-Wettbewerb der mittelfränkischen Realschulen teilzunehmen. Dort gibt es zwei Kategorien:
* [http://www.robotik-bayern.de/kategorien/einsteiger.htm Delivery-Bot II] (Einsteiger)
* [http://www.robotik-bayern.de/kategorien/fortgeschrittene.htm Pickup & Return-Robot II] (Fortgeschrittene)
=== Vorüberlegungen ===
Anstelle der LEDs einer Ampel oder eines Ventilators kannst Du auch einen Roboter mit Rädern oder Raupenketten ansteuern.
Wir verwenden Roboter, die dem [https://www.fischertechnik.de/de-de/service/elearning/spielen/txt-discovery-set TXT Discovery] und TX Explorer ähneln. Da der Arduino keinen USB-Anschluss für die USB-Kamera hat, verwenden wir den Ultraschallentfernungsmesser 133009 und den IR-Spur-Sensor 128598 von Fischertechnik, die im ausgelaufenen ROBO TX Explorer zu finden waren und sich auch nachkaufen lassen.
{{Aufgabe|# Baue einen Roboter, dessen Räder / Raupen jeweils über einen Motor angetrieben werden.
## Lasse beide Motoren mit gleicher Geschwindigkeit fahren.
#* Beobachte und beschreibe den gefahrenen Weg.
#* Erkläre, was die möglichen Ursachen dafür sein können.}}
{{Lösung versteckt|Der Roboter beginnt nach einer Weile in eine Richtung zu steuern und weicht immer mehr von der gedachten Gerade ab.
Mögliche Gründe können &hellip;
* unterschiedliche Motorstärken
* feste Achsen
* verklemmte Zahnräder
sein.
Dies ist aber nichts, was uns Sorgen machen muss  - schließlich wollen wir den Robotern so programmieren, dass er sich immer korrigiert.}}
=== Programmierung ===
Anders als im letzten Kapitel verwenden wir nun einen Motor-Ausgang. Mit ihm kann man 3 Parameter übergeben:
# Nummer des Ausgangs (M1-M8)
# Drehrichtung des Motors (Uhrzeigersinn oder Gegenuhrzeigersinn)
# Stärke (in Prozent)
[[Datei:FtDuino-Motor-Sketch-1.png|817px|alt=Sketch, der 2 Motoren steuert]]
Mit einem Klick auf die grüne Flagge werden beide Motoren für 5s angeschaltet.
Nach einer Sekunde Wartezeit werden beide Motoren wieder für 1s angeschaltet; bei Motor 2 wird aber eine andere Drehrichtung angegeben.
=== Line Follower ===
Unser erstes Modell soll ein Linienfolger (engl. ''Line Follower'') werden.
Dieser Sketch wertet kontinuierlich einen Helligkeitssensor aus, um einer schwarzen Linie zu folgen. Der Sensor wird mit seinen gelben und blauen Kabeln an zwei beliebige der Eingänge I1 bis I8 angeschlossen. Zusätzlich erfolgt über die roten und grünen Kabel die Spannungsversorgung durch den ftDuino.
{{Aufgabe|#Lies das Kapitel [https://harbaum.github.io/ftduino/www/manual/modelle.html#7.3 7.3 ROBOTICS TXT Explorer: Linienfolger] im ftDuino-Manual.
# Überlege, wie man den notwendigen Algorithmus in Pseudocode formulieren würde.
# Schreibe einen Sketch in Scratch.}}
{{#ev:youtube|JQ8TLt5MC9k}}
{{#ev:youtube|LxXY4CCOKX0}}
https://forum.makeblock.com/t/line-follower-in-scratch/882/7
muss angepasst werden
=== Hinderniserkennung ===
Zusätzlich muss unser Roboter ein Hindernis (10x10cm großer Holzklotz) erkennen und ihm ausweichen. Dabei soll er das Hindernis umfahren und dann die Spur wiederfinden.
Hier verwenden wir den Abstands-Sensor. Ein Abstandssensor ist ein technisches Bauteil, das in der Lage ist, den Abstand zwischen sich und einem Objekt zu messen. Abstandssensoren arbeiten mit Licht, Infrarotstrahlung, Radiowellen, oder Ultraschall und verwenden unterschiedliche Messmethoden. Schall breitet sich als Welle aus. Ein Echo wird zur Ultraschallquelle reflektiert, welches nun als Signal wieder gefangen und ausgewertet wird. Die Zeitdifferenz zwischen Aussenden und Empfangen des Signals gibt Aufschluss über die Distanz zwischen Hindernis und Sensor. Die Reichweite des Sensors beträgt bis zu 4 m. Der ausgegebene Zahlenwert entspricht dem Abstand in Zentimeter.
{{InArbeit}}


{{FTDuino}}
{{FTDuino}}

Version vom 15. Oktober 2022, 08:37 Uhr


Logo

Unsere ersten Schritte beim Programmieren wollen wir mit Scratch unternehmen.

Scratch hat viele Vorteile:

  • grafische Programmieroberfläche
    • Anweisungen (eckig), Bedingungen (spitz) und Werte (abgerundet) können anhand der Form der Blöcke leicht unterschieden werden.
    • Anweisungen, Kontrollstrukturen und Schleifen können mit Drag & Drop an die passende Stelle gezogen werden.
    • deutschsprachige Befehle
  • Verzicht auf das Erlernen einer Programmiersprache, die für jüngere Schüler aufgrund von Syntax und englischen Befehlen oft eine zu große Hürde darstellt.

Mein erstes Programm

Der ftDuino hat zwei eingebaute LEDs. Wird er an einen Computer angeschlossen, leuchtet eine grüne LED. Die zweite LED kann mit Scratch angesprochen werden:

ftDuino mit Scratch programmieren(eigener Screenshot)

Mit einem Klick auf die grüne Flagge wird eine Schleife 10x durchlaufen.

  1. Die LED wird eingeschaltet
  2. Es wird 1 Sekunde gewartet
  3. Die LED wird ausgeschaltet
  4. Es wird 1 Sekunde gewartet

Während die orangen Steuerblöcke bereits aus Scratch bekannt sind, kann mit den grünen ftDuino-Blöcken der Controller selbst gesteuert werden.

Ampel

Aufgabe
  1. Baue eine Ampel mit zwei Leuchten.
  2. Schließe diese an den ftDuino an.
  3. Erstelle in Scratch ein Programm, das die beiden Leuchten ein und nach je 5s umschaltet.

Schritt 1: Aktoren ansteuern

Der ftDuino hat mehrere Anschlüsse, die denen des TX-, bzw. TXT-Controllers entsprechen. Rechts finden sich 8 analoge Ausgänge (O1-O8) und 4 Zählereingänge (C1-C4); links sind die analogen Eingänge (I1-I8) für die Sensoren.[1]


Aufgabe
  1. Schließe nun 2 LEDS an O1 und O2 an (Rückführung an den PIN neben C1).
  2. Programmiere einen Scratch-Sketch, der die Lampen beim Klick auf die grüne Flagge abwechselnd laufen lässt.

[Grafik]

Schritt 2: Sensoren

Roboter und intelligente Maschinen werden eben nicht von Menschen bedient, sondern lassen ihr Programm selbstständig ablaufen. Deshalb wird die grüne Flagge der Scratch-GUI nun durch einen Taster ersetzt.

Jeder Druck auf den Taster schaltet die grüne LED nur für z.B. eine Sekunde ein, während die rote LED ausgeschaltet wird. Wird während dieser Zeit der Taster erneut gedrückt, so verlängert sich die verbleibende Zeit wieder. Nach Ablauf der zehn Sekunden verlischt das grüne Licht und das Spiel beginnt von vorn. [2]


Ftduino-2-foto.jpg

ftDuino mit Scratch programmieren(eigener Screenshot)

Schritt 3: Fußgängerampel

Aufgabe
  1. Erweitere Deine Ampel um einen Taster.
  2. Erstelle in Scratch ein Programm, das
    • wenn der Anforderungsschalters gedrückt wird,
      • dann das Grünlicht ein-
      • und nach einer Zeit von 3s (Sekunden) wieder umschaltet.
        Das YouTube-Video kann Dir helfen - du musst aber die entsprechenden Anweisungen der ftDuino -Extension verwenden.
  3. Zusatz: wie würdest du eine Nachtschaltung programmieren, in der es gelb blinkt und nur auf Anforderung Grün gibt?

Händetrockner

Aufgabe
  1. Bau einen Händetrockner, der sich einschaltet, wenn Du nah an den Ventilator herankommst.
  2. Erstelle in Scratch ein Programm, das
    • die Lichtschranke aktiviert
    • wenn die Lichtschranke unterbrochen wird,
    • dann den Motor mit der Schraube einschaltet.

Roboter

Spannender als die ersten kleinen Automaten sind natürlich fahrende Roboter, die selbständig Aufgaben erledigen können.

Ziel ist es, am 12. Mai 2022 mit unseren ft-Robotern am Robotik-Wettbewerb der mittelfränkischen Realschulen teilzunehmen. Dort gibt es zwei Kategorien:

Vorüberlegungen

Anstelle der LEDs einer Ampel oder eines Ventilators kannst Du auch einen Roboter mit Rädern oder Raupenketten ansteuern.

Wir verwenden Roboter, die dem TXT Discovery und TX Explorer ähneln. Da der Arduino keinen USB-Anschluss für die USB-Kamera hat, verwenden wir den Ultraschallentfernungsmesser 133009 und den IR-Spur-Sensor 128598 von Fischertechnik, die im ausgelaufenen ROBO TX Explorer zu finden waren und sich auch nachkaufen lassen.


Aufgabe
  1. Baue einen Roboter, dessen Räder / Raupen jeweils über einen Motor angetrieben werden.
    1. Lasse beide Motoren mit gleicher Geschwindigkeit fahren.
    • Beobachte und beschreibe den gefahrenen Weg.
    • Erkläre, was die möglichen Ursachen dafür sein können.

Der Roboter beginnt nach einer Weile in eine Richtung zu steuern und weicht immer mehr von der gedachten Gerade ab.

Mögliche Gründe können …

  • unterschiedliche Motorstärken
  • feste Achsen
  • verklemmte Zahnräder

sein.

Dies ist aber nichts, was uns Sorgen machen muss - schließlich wollen wir den Robotern so programmieren, dass er sich immer korrigiert.

Programmierung

Anders als im letzten Kapitel verwenden wir nun einen Motor-Ausgang. Mit ihm kann man 3 Parameter übergeben:

  1. Nummer des Ausgangs (M1-M8)
  2. Drehrichtung des Motors (Uhrzeigersinn oder Gegenuhrzeigersinn)
  3. Stärke (in Prozent)

Sketch, der 2 Motoren steuert

Mit einem Klick auf die grüne Flagge werden beide Motoren für 5s angeschaltet.

Nach einer Sekunde Wartezeit werden beide Motoren wieder für 1s angeschaltet; bei Motor 2 wird aber eine andere Drehrichtung angegeben.

Line Follower

Unser erstes Modell soll ein Linienfolger (engl. Line Follower) werden.

Dieser Sketch wertet kontinuierlich einen Helligkeitssensor aus, um einer schwarzen Linie zu folgen. Der Sensor wird mit seinen gelben und blauen Kabeln an zwei beliebige der Eingänge I1 bis I8 angeschlossen. Zusätzlich erfolgt über die roten und grünen Kabel die Spannungsversorgung durch den ftDuino.


Aufgabe
  1. Lies das Kapitel 7.3 ROBOTICS TXT Explorer: Linienfolger im ftDuino-Manual.
  2. Überlege, wie man den notwendigen Algorithmus in Pseudocode formulieren würde.
  3. Schreibe einen Sketch in Scratch.


https://forum.makeblock.com/t/line-follower-in-scratch/882/7

muss angepasst werden

Hinderniserkennung

Zusätzlich muss unser Roboter ein Hindernis (10x10cm großer Holzklotz) erkennen und ihm ausweichen. Dabei soll er das Hindernis umfahren und dann die Spur wiederfinden.

Hier verwenden wir den Abstands-Sensor. Ein Abstandssensor ist ein technisches Bauteil, das in der Lage ist, den Abstand zwischen sich und einem Objekt zu messen. Abstandssensoren arbeiten mit Licht, Infrarotstrahlung, Radiowellen, oder Ultraschall und verwenden unterschiedliche Messmethoden. Schall breitet sich als Welle aus. Ein Echo wird zur Ultraschallquelle reflektiert, welches nun als Signal wieder gefangen und ausgewertet wird. Die Zeitdifferenz zwischen Aussenden und Empfangen des Signals gibt Aufschluss über die Distanz zwischen Hindernis und Sensor. Die Reichweite des Sensors beträgt bis zu 4 m. Der ausgegebene Zahlenwert entspricht dem Abstand in Zentimeter.

 Gnome-devel.svg



Weblinks

  1. harbaum.gihub.io: 1.2 Der ftDuino-Controller
  2. harbaum.github.io: 6.1 Lampen-Zeitschaltung