Boris Crismancich
Published © CC0

Calliope Mini: Hindernisse erkennen und Entfernungen messen

So verwendest du einen Grove Ultraschallsensor (Distanz-Sensor) mit dem Calliope Mini um Abstände zu messen oder Hindernisse zu erkennen.

IntermediateProtip1 hour3,006
Calliope Mini: Hindernisse erkennen und Entfernungen messen

Things used in this project

Hardware components

Calliope mini
Calliope mini
×1
Calliope mini v0.3
Calliope mini v0.3
×1
Seeed Grove Ultrasonic Ranger
×1

Software apps and online services

PXT Editor for Calliope Mini

Story

Read more

Schematics

Schema des Eingangs- und Ausgangssignals

Die Grafik zeigt, wie du zuerst ein Stromimpuls sendest um die Messung zu starten und wie der Sensor dann den Antwortpuls sendet. Beides erfolgt auf der selben Leitung.
Grove ultrasonic ranger protocol signals qcmchekrbp

Code

Programmcode

Typescript
Diesen Programmcode kannst du kopieren und verwenden. Gehe dazu auf http://pxt.calliope.cc und drücke auf den Knopf "JavaScript". Hier kannst du dann den Programmcode einfügen. Wenn du dann zurück auf "Blöcke" gehst, siehst du dein Programm.
// In diesem Platzhalter wird später die Entfernung gesperichert
let abstand = 0
// Wenn Knopf A gedrückt wird
input.onButtonPressed(Button.A, () => {
   // Schalte den Strom auf PIN 16 ein
   // Das ist das Startsignal für den Sensor
   pins.digitalWritePin(DigitalPin.C16, 1)
   //Warte 30 Millisekunden
   basic.pause(30) 
   // Schalte den Strom wieder aus
   pins.digitalWritePin(DigitalPin.C16, 0) 
})
// Warte auf die Antwort (digitales Signal auf Pin 16)
// Der Sensor schaltet als Antwort den Strom auf Pin 16 an und wieder aus
// Die gemessene Entfernung entspricht dabei der Dauer, die der Strom an ist (Pulsweite)
pins.onPulsed(DigitalPin.C16, PulseValue.High, () => {
   // Abstand in cm = Pulsweite geteilt durch 58.
   abstand = pins.pulseDuration() / 58 
   // Zeige den Abstand auf dem Display an
   basic.showNumber(abstand) 
   // Zürcksetzen des Pin Modus, der Calliope kommt sonst durcheinander
   // und man müsste den Calliope sonst nach jeder Messung neu starten.
   pins.setPull(DigitalPin.P0, PinPullMode.PullNone) 
}) 

Credits

Boris Crismancich

Boris Crismancich

5 projects • 4 followers
IoT professional. Working in IIoT and industry 4.0. Supporting Girls'Day, Jugend Hackt, Open Knowledge Foundation, Code for Hamburg and more
Thanks to Stephan Noller.

Comments