Sparrow Viertbit-Anzeigen        

Elektronik-Labor  Projekte  AVR                  




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



Elektronik-Labor  Projekte  AVR