Sparrow Viertbit-Anzeigen
Eine
LED steht im Normalfall für ein Bit. Mit den beiden LEDs auf dem
Sparrow kann man daher eine 2-Bit-Anzeige realisieren und Zahlen
zwischen Null und Drei darstellen. Aber es geht auch anders. Zwei Bit
pro LED sind machbar, wenn man bestimmte Blinkmuster zusätzlich
verwendet: 0 = Aus, 1 = Kurze Lichtblitze, 2 = Langes Blinken, 3 = An.
Insgesamt hat man jetzt vier Bit an zwei LEDs und kann Zahlen im Bereich
0...15 darstellen. Damit lassen sich viele nützliche Apps
entwickeln.
Sparrow Up/Down-Counter 0...15
Oft will man irgendwelche Ereignisse, Dinge oder Personen
zählen und sich dabei nicht allein auf den eigenen Kopf verlassen. Wenn
man dann teilweise auch noch rückwärts zählen muss wird es noch
schwieriger. Wie viele Leute sind in den Raum gegangen, und einige
kamen zwischendurch wieder raus. Eine Sparrow-App kann helfen. Die
Anzeige nutzt zwei Bits pro LED (0 = Aus, 1 = kurze Lichtblitze,
2 =langes Blinken, 3 = An). Der Zähler wird mit S2 um eins erhöht und
mit S1 um eins verringert. Die beiden LEDs zeigen den momentanen
Zählerstand im Bereich 0...15. Beispiel: LED2 zeigt kurze Blitze (1 x
4), LED1 zeigt Dauer-An (3), der Zählerstand ist 7. Nach dem Neustart
lautet der Zählerstand übrigens 15 (beide LEDs an), einfach nur damit
man sieht, die App ist aktiv. Ein Druck auf S2 bringt den
Zähler-Überlauf und setzt damit den Zählerstand auf Null. Der
Up/Down-Counter ist bereit.
Download: Sparrow_UpDown.zip
Direkt laden: http://tiny.systems/categorie/cheepit/SparrowCounter.html
'ATtiny13 Sparrow Up/Down Counter 0...15
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4
Config Portb = &B000011010
Dim N As Byte
Dim H As Byte
Dim L As Byte
Led1 Alias Portb.1
Led2 Alias Portb.3
S1 Alias Pinb.0
S2 Alias Pinb.2
Do
If S2 = 0 Then
Waitms 50
N = N + 1
Do
Loop Until S2 = 1
Waitms 50
End If
If S1 = 0 Then
Waitms 50
N = N - 1
Do
Loop Until S1 = 1
Waitms 50
End If
L = N And 3 'Anzeige N = 0...15
H = N
Shift H , Right , 2
H = H And 3
If L = 0 Then Led1 = 0 Else Led1 = 1
If H = 0 Then Led2 = 0 Else Led2 = 1
Waitms 50
If L < 2 Then Led1 = 0
If H < 2 Then Led2 = 0
Waitms 100
If L < 3 Then Led1 = 0
If H < 3 Then Led2 = 0
Waitms 100
Loop
End
Sparrow-Watch bis vier Stunden
Hier geht
es nicht eigentlich um die Uhrzeit sondern um eine einfache und übersichtliche
Zeitmessung. Eine Tätigkeit soll z.B. möglichst nicht länger als zwei Stunden
dauern. Auf ein paar Minuten kommt es nicht an, aber deutlich mehr ist nicht
geplant. Da reicht eine Auflösung von Viertelstunden. Die Uhr ist ganz einfach
abzulesen (0 = Aus, 1 = kurze Lichtblitze, 2 =langes Blinken, 3 = An). Die rote
LED zeigt volle Stunden, die grüne LED Viertelstunden. Und es gibt einen Taster
um die Uhr auf Null zu setzen und damit neu zu starten. Nach einem Neustart
steht die Uhr zunächst nicht auf Null sondern auf 1 Stunde, einfach damit man
sieht, dass das Programm aktiv ist. Ein Druck auf S2 setzt die Uhr zurück.
Beide LEDs sind aus. Nach einer Viertelstunde zeigt die grüne LED ihr kurzes
Blitzen, nach einer halben Stunde das längere Blinken. Diese Uhr kann man auch
auf langwierige Besprechungen mitnehmen. Dabei kann es von Vorteil sein, dass
nicht jeder sie lesen kann. Und man ist ja nicht so unhöflich, dauernd auf die Uhr
zu schauen. Trotzdem behält man den Überblick. Rot aus, Grün zeigt langes
Blinken: Der Chef redet jetzt schon seit einer halben Stunde...
Download: Sparrow_Watch.zip
Direkt laden: http://tiny.systems/categorie/cheepit/SparrowWatch.html'ATtiny13 Sparrow Watch 0...4 h
$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 8
$swstack = 4
$framesize = 4
Config Portb = &B000011010
Dim T As Word
Dim N As Byte
Dim H As Byte
Dim L As Byte
Led1 Alias Portb.1
Led2 Alias Portb.3
S1 Alias Pinb.0
S2 Alias Pinb.2
N = 4
Do
For T = 1 To 3600 '3600*250 ms = 15 Min
If S2 = 0 Then 'Time Reset
Waitms 50
T = 0
N = 0
Do
Loop Until S2 = 1
Waitms 50
End If
L = N And 3 'Anzeige N = 0...15
H = N
Shift H , Right , 2
H = H And 3
If L = 0 Then Led1 = 0 Else Led1 = 1
If H = 0 Then Led2 = 0 Else Led2 = 1
Waitms 50
If L < 2 Then Led1 = 0
If H < 2 Then Led2 = 0
Waitms 100
If L < 3 Then Led1 = 0
If H < 3 Then Led2 = 0
Waitms 100
Next T
N = N + 1
Loop
End