I habe eine Freundin, die Lehrerin ist. Und da ich es selbst kenne, wollte ich ihr einen Lärmmesser bauen. Praktischerweise gibt es für die Anzeige tolle Bauanleitungen von Google: Papersignals
Hier der Link: https://papersignals.withgoogle.com/
HardwareWir brauchen praktisch nichts von der Hardware, denn wir haben ja den Calliope mini, und können gleich auf der "Get Started" Seite mit dem Ausdrucken des Countdown PaperSignals beginnen. Einfach das PDF auf A4 Ausdrucken.
Folgt der Bauanleitung, aber baut nur den runden Teil und die Halterung für den Servomotor zusammen, denn wir brauchen ein etwas grösseres Gehäuse, damit der Calliope mini und das Batteriefach hineinpassen. Ich habe dafür eine alte Medikamentenpackung benutzt.
Klebt die Anzeige vorne auf die Packung und achtet darauf, dass ein Ausschnitt für den Servo erhalten bleibt, der von innen in der Packung angeklebt wird.
Benutzt die Jumper Wires um den Servo mit dem Calliope mini zu verbinden. + und - jeweils mit den beiden Anschlüssen rechts und links vom USB Anschluß und für den Datenpin des Motors P1 am Calliope mini.
VerkabelungDamit das ganze funktioniert, muss natürlich noch Software dazu. Entweder, ihr ladet das Hexfile herunter und lasst die Datei dann per Drag & Drop auf makecode.calliope.cc fallen oder ihr kopiert den folgenden Code in die Javascript Ansicht von MakeCode:
let dummy = 0
let plot = 0
let mic = 0
let alterPlot = 0
let val = 0
alterPlot = 9999
basic.forever(() => {
val = 0
for (let i = 0; i < 100; i++) {
mic = Math.abs(pins.analogReadPin(AnalogPin.MIC))
val += pins.map(Math.abs(512 - mic), 0, 512, 0, 4)
}
plot = val / 100
if (plot != alterPlot) {
if (plot <= 1) {
basic.setLedColor(Colors.Green)
basic.showIcon(IconNames.Heart)
pins.servoWritePin(AnalogPin.P1, 175)
} else if (plot <= 2) {
basic.setLedColor(Colors.Yellow)
basic.showIcon(IconNames.StickFigure)
pins.servoWritePin(AnalogPin.P1, 120)
} else if (plot <= 3) {
basic.setLedColor(Colors.Orange)
basic.showIcon(IconNames.Ghost)
pins.servoWritePin(AnalogPin.P1, 60)
} else {
basic.setLedColor(Colors.Red)
basic.showIcon(IconNames.Skull)
pins.servoWritePin(AnalogPin.P1, 0)
}
alterPlot = plot
basic.pause(1000)
dummy = pins.digitalReadPin(DigitalPin.P1)
}
})
Oder schöner, als Blöcke, aber die müsst ihr selbst zusammenstellen:
Das Programm fragt die Werte vom Mikrofon ab und errechnet einen Mittelwert der Lautstärke, um dann daraufhin zu entscheiden, ob die Anzeige mit dem Motor in eine von vier Stellungen gebracht wird. Der Servomotor geht von 0 bis 180 Grad.
Comments
Please log in or sign up to comment.