En gammel telefon

Gamle fastnet-telefoner med drejeskive som billedet nedenfor, kan være sjovt legetøj. De er genkendelige og indeholder skiven, en højtaler, mikrofon, afbryder og evt. en klokke, som man kan manipulere med fx ifm escape room.

20091023 Kirk F68

De gamle drejeskrive-telefoner anvender mekanik som hurtigt lukker og åbner et kredsløb, når drejeskiven kører tilbage. Det resulterer i et antal elektriske puls-slag svarende til det nummer, som er valgt på drejeskiven. Nogle drejeskive-telefoner bruger vist en lysmåler og små LED-er på drejeskiven, til at fremkalde pulsene.

Micro:bit har en tidstæller (running time), der kan anvendes til at registrere hvor lang hver puls er. Hvis en puls er under 200 ms lang inkrementeres nummerviseren, og når der ikke er flere pulser, vises resultatet (tal mellem 0 og 9) på micro:bit’en. Koden i JS:

pins.onPulsed(DigitalPin.P0, PulseValue.Low, function () {
    led.plot(0, 0)
})

pins.onPulsed(DigitalPin.P0, PulseValue.High, function () {
    led.unplot(0, 0)
    pulseCount += 1
    lastPulseMs = input.runningTime()
})

let lastPulseMs = 0
let pulseCount = 0
pins.setPull(DigitalPin.P0, PinPullMode.PullUp)

basic.forever(function () {
    serial.writeValue("x", pins.digitalReadPin(DigitalPin.P0))
    if (pulseCount > 0 && input.runningTime() - lastPulseMs > 200) {
        basic.showNumber(pulseCount - 1)
        pulseCount = 0
    }
})

Det er afgørende at forsyne den pin, som pulserne skal måles på, med en pull up modstand. Denne er indbygget i Micro:biten og kan aktiveres med kommandoen pins.setPull(DigitalPin.P0, PinPullMode.PullUp) hvilket vist kun fungerer for et udvalg af pins fx p0, p1 og p2.

Målet er nu, at bygge en Micro:bit ind i telefonen. Bit’en sender signal til en anden Micro:bit “udenfor” telefonen med de tal, som der drejes på skiven.

En udfordring er feedback, men måske kan det gives via Micro:biten udenfor telefonen eller gennem den højttaler, som er indbygget i telefon-røret.

De ben i telefonen, som giver adgang til hhv. drejeskrive, højttaler og afbryder kan findes ved at bruge en Mirco:bit som et simpel multimeter til at måle om der er forbindelse i kredsløbet. Igen gives anvendes en pull-up setting på pin p0, og der tilføjes (JS): “serial.writeValue(“x”, pins.digitalReadPin(DigitalPin.P0))”.

Herefter kan de to ledninger forbundet til hhv. GND og p0 placeres på forskellige ben i telefonen, og p0 status kan aflæses over tid i et diagram i MakeCode-interfacet (klik på device).

Her er fx målt på afbryderen, når denne aktiveres tre gange, og signalet fra p0 dermed skifter fra 1 til 0.

Enjoy

Dette indlæg blev udgivet i Elektronik, Informatik, Micro:bit, Programmering. Bogmærk permalinket.