Wie wird aus Licht eine Zahl?
Dein Calliope mini kann messen, wie hell es ist. Hier verfolgst du den Weg des Lichts: von der Leuchtdiode über eine elektrische Spannung bis zu den Bits im Prozessor.
Probier es aus: Wähle rechts, wo dein Calliope gerade liegt, oder schiebe den Regler. Alle Stationen auf dieser Seite rechnen mit diesem Wert weiter.
Der Calliope misst gerade die Helligkeit. Womit?
Mit den LEDs der Anzeige: Einige LEDs können nicht nur leuchten, sondern auch Licht messen.
Aber wie kann eine LED Licht messen, und wie wird daraus eine Zahl?
Die LED-Anzeige zeigt den Wert als Balken. Die Zahlen sind Beispiele: Dein Calliope misst an diesen Orten andere Werte.
Die Werte in Schritt 2 und 3 stammen aus einem vereinfachten Modell. In MakeCode siehst du nur das Ergebnis aus Schritt 4.
Wo sitzt der Lichtsensor?
Auftrag: Vermutet zuerst: Wo im Calliope sitzt der Sensor? Vergleicht dann LDR und LED in der Tabelle.
Kein LDR im Calliope mini
Rote LEDs der Anzeige messen das Licht.
Licht erzeugt in der LED einen winzigen Fotostrom.
Viele vermuten im Calliope mini einen LDR, also einen lichtabhängigen Widerstand. Den gibt es dort nicht. Der Calliope misst die Helligkeit mit einigen der roten LEDs seiner 5×5-Anzeige. Diese LEDs können zwei Dinge: leuchten und Licht messen.
Das klappt, weil eine LED auch rückwärts funktioniert. Normalerweise fließt Strom hinein und Licht kommt heraus. Trifft Licht auf eine LED, entsteht ein winziger Strom, der Fotostrom. Die LED arbeitet dann wie eine kleine Fotodiode.
Einen echten LDR kannst du trotzdem benutzen. Du schließt ihn von außen an einen Pin an. Wie das geht, zeigt die Station LDR am Pin.
| Merkmal | LDR (Fotowiderstand) | LED als Fotodiode |
|---|---|---|
| Was passiert bei Licht? | Der Widerstand wird kleiner. | Ein kleiner Fotostrom entsteht. |
| Typische Größe | dunkel um 1 MΩ, hell unter 1 kΩ | Fotostrom von Nano- bis Mikroampere |
| Im Calliope eingebaut? | Nein, extern an einen Pin | Ja, in der LED-Anzeige |
| Block in MakeCode | analoge Werte von Pin lesen | Lichtstärke |
| Wertebereich | 0 – 1023 | 0 – 255 |
Licht wird zu Spannung
Auftrag: Stellt „ganz dunkel“ und „ganz hell“ ein. Vermutet vorher: Bleibt bei Licht mehr oder weniger Spannung übrig?
- Aufladen: LED in Sperrrichtung
- Warten: Licht baut die Ladung ab
- Messen: Restspannung geht zum Wandler
Viel Licht → wenig Restspannung
Ein Prozessor kann Licht nicht direkt messen. Spannungen kann er aber messen. Also muss das Licht zuerst eine Spannung verändern. Beim Calliope läuft das in drei Schritten ab, viele Male pro Sekunde:
- Aufladen. Der Prozessor legt die LED kurz „falsch herum“ an Spannung, in Sperrrichtung. Dann fließt kein Strom, aber die LED speichert etwas Ladung, wie ein winziger Kondensator.
- Entladen lassen. Der Prozessor trennt die Spannung und wartet. Der Fotostrom baut die Ladung ab. Je heller es ist, desto schneller sinkt die Spannung.
- Messen. Nach einer festen Wartezeit misst der Analog-Digital-Wandler, wie viel Spannung noch übrig ist.
Restspannung beim Messen: 2,69 V → Rohwert 834
Analog oder digital?
Auftrag: Schaltet von 1 Bit bis 10 Bit durch. Ab wie vielen Bits erkennt ihr die Form des Signals gut?
Analog: jeder Wert zwischen 0 und 3,3 V
Digital: ganze Zahlen in Stufen
Jedes Bit verdoppelt die Stufen.
Calliope-Pins: 10 Bit = 0 bis 1023
Eine Spannung ist analog. Sie kann jeden Wert zwischen 0 V und 3,3 V annehmen, zum Beispiel 2,6843 V. Ein Computer speichert aber nur ganze Zahlen aus Nullen und Einsen. Das ist digital.
Den Übergang schafft der Analog-Digital-Wandler im Prozessor, kurz ADC (englisch: analog-to-digital converter). Er teilt den Messbereich in gleich große Stufen. Wie viele Stufen es gibt, hängt von der Zahl der Bits ab. Jedes zusätzliche Bit verdoppelt die Stufen.
An seinen analogen Pins liefert der Calliope Werte mit 10 Bit, also von 0 bis 1023. Eine Stufe ist damit nur gut 3 Millivolt hoch.
8 Stufen: Die Form ist zu erkennen, aber viele Details fehlen.
Wie findet der Wandler die Zahl?
Zahlenraten: größer oder kleiner?
Erster Test: Hälfte von 3,3 V = 1,65 V
Jeder Vergleich liefert 1 Bit.
Nach 10 Vergleichen steht die Zahl fest.
Der Wandler im Calliope geht vor wie beim Zahlenraten mit „größer oder kleiner?“. Zuerst fragt er: Ist die Spannung mindestens halb so groß wie 3,3 V? Die Antwort ist das erste Bit, das mit dem Wert 512.
Dann halbiert er den Suchbereich und fragt wieder. Nach 10 Fragen steht die Zahl fest. Dieses Verfahren heißt schrittweise Annäherung (Fachwort: sukzessive Approximation).
Stell eine Spannung ein und lass den Wandler arbeiten. Rot ist die echte Spannung, blau der Bereich, in dem der Wandler noch sucht.
Der Wandler weiß noch nichts. Erster Test: Ist die Spannung mindestens 1,65 V?
Von der Zahl zu den Bits
1 Bit ist 0 oder 1.
8 Bit = 1 Byte = 256 Werte
Lichtstärke: 0 bis 255
Ein Bit kann nur 0 oder 1 sein. Acht Bits zusammen heißen ein Byte. Damit lassen sich 2⁸ = 256 verschiedene Zahlen speichern, von 0 bis 255. Genau diesen Bereich hat der Block Lichtstärke: 0 heißt dunkel, 255 heißt sehr hell.
Jedes Bit hat einen Stellenwert. Ganz rechts steht die 1, links daneben die 2, dann 4, 8 und so weiter. Du addierst die Stellenwerte aller Bits, die auf 1 stehen.
| Messwert | Bereich | Bits | Stufen |
|---|---|---|---|
Lichtstärke input.lightLevel() | 0 – 255 | 8 | 256 |
Analoger Pin pins.analogReadPin() | 0 – 1023 | 10 | 1024 |
Schwellwert, z. B. wenn dunkel | wahr / falsch | 1 | 2 |
Der Lichtregler oben bewegt sich mit. Probiere: Welche Bits brauchst du für 255? Was passiert, wenn du nur das Bit 128 einschaltest?
Ein echter LDR am Pin P1
Auftrag: Wählt „Sonne“ und „Abgedunkelt“. Wie ändern sich Widerstand, Spannung und Zahl? Begründet mit dem Spannungsteiler.
Ein LDR ändert bei Licht seinen Widerstand, keine Spannung. Damit der Calliope etwas messen kann, baust du einen Spannungsteiler: LDR und Festwiderstand in Reihe zwischen Plus und Minus. In der Mitte greifst du die Spannung ab und führst sie zu Pin P1.
Wird es heller, sinkt der Widerstand des LDR. Dann fällt an ihm weniger Spannung ab, und an Pin P1 kommt mehr an. Mehr Licht ergibt also eine größere Zahl.
| Widerstand LDR | 756 Ω |
| Spannung an P1 | 3,07 V |
analogReadPin(P1) | 951 |
| als 10 Bit | 11 1011 0111 |
| umgerechnet auf 0–255 | 237 |
Gerechnet mit typischen Werten eines Fotowiderstands der Sorte GL5528. Dein Bauteil kann davon abweichen. Lux (lx) ist die Einheit der Beleuchtungsstärke; die Orte sind grobe Richtwerte.
Programmieren in MakeCode
makecode.calliope.cc → JavaScript → einfügen → zurück zu Blöcken
Öffne makecode.calliope.cc, wechsle oben auf JavaScript und füge ein Beispiel ein. Danach kannst du zurück zu den Blöcken schalten und siehst das Programm als Puzzle.
Lichtstärke anzeigen
Zeigt die aktuelle Lichtstärke als Zahl auf der Anzeige.
basic.forever(function () {
basic.showNumber(input.lightLevel())
})
Als Balken anzeigen
Je heller, desto mehr LEDs leuchten. Gut zum Herumtragen.
basic.forever(function () {
led.plotBarGraph(input.lightLevel(), 255)
})
Nachtlicht mit Schwellwert
Aus 256 Stufen wird eine Ja-Nein-Entscheidung, also 1 Bit. Flackert das Licht, sieht der Sensor vielleicht die eigene RGB-LED. Probiere dann einen anderen Schwellwert.
// unter diesem Wert gilt es als dunkel
let schwelle = 30
basic.forever(function () {
if (input.lightLevel() < schwelle) {
basic.setLedColor(Colors.White)
} else {
basic.turnRgbLedOff()
}
})
Messreihe aufzeichnen
Schickt jede halbe Sekunde einen Wert an den Computer. Ist der Calliope per USB gekoppelt, erscheint in MakeCode unter dem Simulator ein Knopf, um die Daten als Diagramm anzuzeigen.
basic.forever(function () {
serial.writeValue("licht", input.lightLevel())
basic.pause(500)
})
Externer LDR an P1
Liest den Spannungsteiler mit 10 Bit und rechnet zusätzlich auf 0–255 um, damit du ihn mit der Lichtstärke vergleichen kannst.
basic.forever(function () {
let roh = pins.analogReadPin(AnalogPin.P1)
let byteWert = pins.map(roh, 0, 1023, 0, 255)
serial.writeValue("roh", roh)
serial.writeValue("byte", byteWert)
basic.pause(200)
})
Bits sichtbar machen
Zeigt auf Knopfdruck A die Lichtstärke als 8 Nullen und Einsen.
input.onButtonEvent(Button.A, input.buttonEventClick(), function () {
let wert = input.lightLevel()
let text = ""
for (let i = 7; i >= 0; i--) {
text = text + ((wert >> i) & 1)
}
basic.showString(text)
})
Messen, notieren, prüfen
Forscheraufträge
- Miss an fünf Orten und trag die Werte rechts ein. Die Tabelle rechnet sie in Bits um.
- Finde den Schwellwert für dein Nachtlicht: Ab welcher Lichtstärke ist es für dich „dunkel“?
- Leg zwei Calliope minis nebeneinander. Zeigen sie dieselbe Zahl? Woran könnte das liegen?
- Deck nur einen Teil der LED-Anzeige mit dem Finger ab. Ändert sich der Wert? Was verrät dir das über die messenden LEDs?
- Für Profis: Bau den Spannungsteiler mit LDR auf und vergleiche den umgerechneten Wert mit der Lichtstärke.
| Ort | Wert | Bits | Anteil |
|---|
Check dich
0 von 6 richtigBegriffe
- analog
- stufenlos; jeder Zwischenwert ist möglich, zum Beispiel 2,6843 V.
- digital
- in Stufen; als ganze Zahl aus Nullen und Einsen gespeichert.
- Analog-Digital-Wandler (ADC)
- Baustein im Prozessor, der eine Spannung in eine Zahl umwandelt.
- Auflösung
- wie fein ein Wandler messen kann. Mehr Bits ergeben kleinere Stufen.
- Bit und Byte
- Ein Bit ist 0 oder 1. 8 Bit sind 1 Byte mit 256 Möglichkeiten.
- Fotodiode
- Diode, die bei Licht einen kleinen Strom erzeugt. Eine LED kann so arbeiten.
- Sperrrichtung
- Eine Diode ist so angeschlossen, dass (fast) kein Strom fließt.
- LDR (Fotowiderstand)
- Bauteil, dessen Widerstand bei Licht kleiner wird.
- Spannungsteiler
- zwei Widerstände in Reihe; an der Verbindungsstelle liegt eine Teilspannung an.
- Schwellwert
- Grenze, ab der ein Programm umschaltet, zum Beispiel von „hell“ auf „dunkel“.
Hintergrund für Lehrkräfte
Sensorprinzip. Laut Calliope misst der Lichtsensor über einige der roten LEDs der Matrix. Die Firmware lädt die Sperrschichtkapazität der LEDs auf und wertet nach einer festen Zeit die Restspannung aus; der Fotostrom bestimmt, wie weit sie gesunken ist. Spannungs- und Rohwerte auf dieser Seite sind ein didaktisches Modell, keine Messdaten. MakeCode gibt nur den skalierten Wert 0–255 aus.
Wandler. Der Calliope mini 3 arbeitet mit einem Nordic nRF52833 (Arm Cortex-M4, 64 MHz). Dessen ADC arbeitet nach dem Verfahren der sukzessiven Approximation und kann auf bis zu 12 Bit eingestellt werden; MakeCode liefert an den Pins 0–1023 (10 Bit). Der Calliope mini 1 nutzt einen nRF51822.
Störeinflüsse. Die Lichtstärke ist relativ und geräteabhängig. Eigenes Licht der RGB-LEDs, Abdecken einzelner Matrix-Bereiche und der erste Aufruf (liefert 0) beeinflussen die Werte. Für Messreihen eignet sich die serielle Datenanzeige in MakeCode.
Didaktischer Faden. Licht → Ladung/Spannung → Quantisierung → Binärdarstellung → Schwellwert (1 Bit). Die LDR-Station verbindet das mit dem klassischen Spannungsteiler aus dem Technik- bzw. Physikunterricht.
Hinweise für Lehrkräfte
Jahrgang
Technik oder Informatik, Klasse 7–8. Calliope mini 3 und MakeCode.
Ablauf in 45 Minuten
- 5′ Einstieg: Orte laufen lassen, Frage, auflösen.
- 6′ Station 1: LED statt LDR.
- 7′ Station 2: Licht wird zu Spannung.
- 7′ Station 3: analog und digital.
- 7′ Station 4: Bits.
- 8′ Station 5: Lichtstärke in MakeCode anzeigen.
- 5′ Check.
Ablauf in 90 Minuten
- 45′ wie links.
- 10′ Wandler: schrittweise Annäherung.
- 25′ Station 6: Messen und Schwellwert finden.
- 10′ Extra: LDR am Pin.
Lernziele
- Die Schülerinnen und Schüler beschreiben, dass der Calliope mini Helligkeit mit LEDs der Anzeige misst.
- Sie erklären die Kette Licht → Spannung → Zahl → Bits.
- Sie rechnen 8-Bit-Zahlen zwischen Dual- und Dezimalschreibweise um.
- Sie programmieren die Lichtstärke in MakeCode und nutzen einen Schwellwert.
Typische Fehlvorstellungen
- „Im Calliope steckt ein LDR.“ Er misst mit LEDs.
- „Die Lichtstärke ist in Lux.“ Sie hat keine Einheit und ist geräteabhängig.
- „Mehr Licht, mehr Restspannung.“ Umgekehrt; die Software dreht es erst am Ende um.
- „In 8 Bit passen 255 Werte.“ Es sind 256 (0 bis 255).