Sparrow-Spiel Recall a Bit          

von Rainer R.                     
      
Elektronik-Labor  Projekte  AVR  Sparrow  Contest          





Ziel des Spiels Recall_a_Bit ist es eine zufällige Blinkfolge der zwei LEDs  auf den zwei Tastern zu wiederholen. Dabei wird bei jedem Durchgang um einen  Blinkimpuls erhöht. Begonnen wird mit einer festen Folge von zweimalig  wechselnden Blinken. Kann man die Folge korrekt wiederholen wird die Anzahl Tastendrücke durch langsames Blinken beider Leds angezeigt. Eine neue Bitfolge wird festgelegt und die Anzahl der zu wiederholenden Impulse
um eins erhöht. Macht man einen Fehler wird dies durch schnelles Blinken der beiden Leds angezeigt und alles beginnt wieder neu.


Download: Sparrow_Recall_a_Bit.zip
Direkt laden: http://tiny.systems/categorie/cheepit/RecallABit.html


'Sparrow Programming Contest Easter 2015 Recall_a_Bit Version 1.0
' http://www.elektronik-labor.de/AVR/Sparrow/SparrowContest.html

$regfile = "attiny13.dat"
$crystal = 1200000
$hwstack = 5
$swstack = 5
$framesize = 4
Config Portb = &B000011010

Declare Sub Blinkled1
Declare Sub Blinkled2
Declare Sub Blinkalarm

Dim I As Byte
Dim N As Byte
Dim Anz As Byte
Dim Blinkanz As Byte
Dim Led_id As Byte

Led1 Alias Portb.3
Led2 Alias Portb.1

S1 Alias Pinb.0
S2 Alias Pinb.2

Led1 = 0
Led2 = 0

Dim Myword As Word
Dim S1_myword As Byte
Dim S2_myword As Byte
Dim Myword_anz As Byte
Dim Myword_max As Byte
Dim Startbit_max As Byte

' Erste Startwerte für ersten level zuweisen
Myword.0 = 1
Myword.1 = 0
Myword.2 = 1
Myword.3 = 0
Myword.4 = 1
Myword.5 = 0
Myword.6 = 1
Myword.7 = 0

S1_myword = Myword
S2_myword = Myword

Myword_anz = 0

' Anzahl der ersten Abfragen bei Neustart myword_max + 1

Startbit_max = 4

Myword_max = Startbit_max - 1

Led1 = 1
Led2 = 1
Waitms 500
Led1 = 0
Led2 = 0

Startnext:

If Myword_anz > 0 Then

' Neue Zufallszahl und Erhöhung der Anzahl ( nicht beim ersten Durchlauf oder Restart)
' s1 ode s2 drücken um nächste Runde zu spielen - mit neuer Zahl und Anzahl + 1

Led1 = 1
Led2 = 1
Myword = 0
Do
Myword = Myword + 1

Loop Until S1 = 0 Or S2 = 0

End If:

Led1 = 0
Led2 = 0

Waitms 500

S1_myword = Myword
S2_myword = Myword


Myword_anz = 0

Do

Myword_anz = Myword_anz + 1

' Blinkfolge als Vorgabe zur Wiederholung anzeigen

Waitms 100
Myword = S1_myword
For I = 1 To Myword_anz
If Myword.0 = 0 Then Call Blinkled1
If Myword.0 = 1 Then Call Blinkled2
Rotate Myword , Right
Waitms 100
Next I

S2_myword = S1_myword

Waitms 50
Anz = 1

Do



If S1 = 0 Then
Call Blinkled1
Waitms 50
Do
Loop Until S1 = 1
Waitms 50
If S2_myword.0 = 0 Then
Rotate S2_myword , Right
Anz = Anz + 1
Else
Blinkanz = 30
Call Blinkalarm
' Fehler - Restart Programm
Waitms 50
Goto 0 ' Programm reatart
End If
End If

If S2 = 0 Then

Call Blinkled2
Waitms 50
Do
Loop Until S2 = 1
Waitms 50
If S2_myword.0 = 1 Then
Rotate S2_myword , Right
Anz = Anz + 1
Else
Blinkanz = 30
Call Blinkalarm
' Fehler - Restart Programm
Waitms 50
Goto 0
End If
End If
Loop Until Anz > Myword_anz
Loop Until Myword_anz > Myword_max


' Folge korrekt wiederholt - Anzeige geschaffte Bits - nächster Level

Led1 = 1
Led2 = 1
Waitms 500
Myword_max = Myword_max + 1
For N = 0 To Myword_max
Led1 = 1
Led2 = 1
Waitms 100
Led1 = 0
Led2 = 0
Waitms 500
Next N
Waitms 500
Goto Startnext

' Definition Subroutines


Sub Blinkled1
Led1 = 1
Waitms 100
Led1 = 0
Waitms 50
End Sub

Sub Blinkled2
Led2 = 1
Waitms 100
Led2 = 0
Waitms 50
End Sub

Sub Blinkalar
For N = 1 To Blinkanz
Led1 = 1
Led2 = 1
Waitms 25
Led1 = 0
Led2 = 0
Waitms 50
Next N
End Sub



Elektronik-Labor  Projekte  AVR  Sparrow Contest