Herzlich Willkommen im einzigen (deutschsprachigem) Picaxe-Forum.

Der Ursprung dieses Forum reicht bis in das Jahr 2008 zurück

AVR / Atmel

RE: Nr. 6 lebt ...

 von Naubaddi , 14.01.2020 17:17

Mit dem geschrumpften Programm klappt es ganz gut, das Gesicht von Nr. 6 lebt schon ein wenig .
Wenn nichts gemacht wird öffnet Nr. 6 Augen und Mund (wenn er schläft) oder schließt Augen und Mund (wenn er wach ist), es ist erst mal ein Versuch wie gut und sicher das Programm arbeitet. Ansonsten kann man mit den 4 Tastern eine Gesichtszusammenstellung abrufen, dabei wird die Zeit wieder auf 0 gesetzt und der Zustand schlafen oder wach hinterlegt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
 
' Compiler: Bascom-Demo 2.0.7.5
 
' Dateiname: Augen bewegen.avr
' Funktion: die Augen für Nr. 6 mit Tastern bewegen
' Datum: 12.01.2020, Stand 13.01.2020
' Von: Naubaddi
 
' --- Mikrocontroler Daten... ----------------------------------------------------------------------------------
 
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 40
$framesize = 40
 
' &HFF, &HE1, &HD9, &HFF ' 1MHz
$PROG &HFF, &HE4, &HD9, &HFF ' 8MHz
 
' --- Deklarationen... -----------------------------------------------------------------------------------------
 
M_Din alias portd.0 ' max Dateneingang
M_Cs alias portd.1 ' max Steuerung der Datenübernahme, anzeigen/nicht anzeigen
M_Clk alias portd.2 ' max Takteingang
config M_Din = output
config M_Cs = output
config M_Clk = output
 
A_Din alias portd.3
A_Cs alias portd.4
A_Clk alias portd.5
config A_Din = output
config A_Cs = output
config A_Clk = output
 
Taster_1 alias pinc.1
Taster_2 alias pinc.2
Taster_3 alias pinc.3
Taster_4 alias pinc.4
config Taster_1 = input
config Taster_2 = input
config Taster_2 = input
config Taster_3 = input
 
' --- Variablen... ---------------------------------------------------------------------------------------------
 
dim Anzahl as byte ' Anzahl der angeschloßenen max-Module
dim Modul as byte ' Zähler für die Anzahl der angeschloßenen max-Module
dim Befehl as byte ' Befehl für den max
dim Daten as byte ' Daten für den max
dim Zeile as byte ' Zähler für die Zeilen der 8x8 Matrix
dim leeren as byte ' Zähler für leeren
dim M4 as byte ' Position im Datafeld für max 4 (Mund)
dim M3 as byte ' Position im Datafeld für max 3 (Mund)
dim M2 as byte ' Position im Datafeld für max 2 (Mund)
dim M1 as byte ' Position im Datafeld für max 1 (Mund)
dim A5 as byte ' Position im Datafeld für max 5 und 6 (Augen)
dim Zeit as word ' die vergangene Zeit ohne eine Aktion von mir
dim Nr6 as byte ' der Zustand von Nr. 6
 
' --- Vorbelegung der Variablen... -----------------------------------------------------------------------------
 
M4 = 0 ' Positionen für Mund zu
A5 = 0 ' Position für Augen zu
Zeit = 0 ' die Zeit fängt an zu laufen ;-)
Nr6 = 0 ' Nr. 6 schläft
 
' --- Programm Anfang ------------------------------------------------------------------------------------------
 
Anzahl = 1 ' 2 max-Module parallel für die Augen
gosub Init_max
gosub Matrix_leeren
Anzahl = 4 ' 4 max-Module in Reihe für den Mund
gosub Init_max
gosub Matrix_leeren
waitms 1000
goto Mund ' Mund und Augen zu, es kann jetzt losgehen ;-)
 
' --- A5 M4 Nr6
' --- 0 = Augen zu 0 = Mund zu 0 = schlafen
' --- 8 = Augen auf 32 = Mund auf 1 = wach
' --- 16 = Augen unten 64 = Mund lach 2 = langweilig
' --- 24 = Augen links unten 96 = Mund traurig 3 = sauer
' --- 32 = Augen links
' --- 40 = Augen links oben
' --- 48 = Augen oben
' --- 56 = Augen rechts oben
' --- 64 = Augen rechts
' --- 72 = Augen rechts unten
 
do
 
Taster:
if Taster_1 = 1 then : Zeit = 0 : Nr6 = 0 : A5 = 0 : M4 = 0 : goto Mund : endif ' Mund zu, Augen zu
if Taster_2 = 1 then : Zeit = 0 : Nr6 = 1 : A5 = 8 : M4 = 32 : goto Mund : endif ' Mund auf, Augen auf
if Taster_3 = 1 then : Zeit = 0 : Nr6 = 1 : A5 = 32 : M4 = 64 : goto Mund : endif ' Mund lach, Augen rechts
if Taster_4 = 1 then : Zeit = 0 : Nr6 = 1 : A5 = 64 : M4 = 96 : goto Mund : endif ' Mund sauer, Augen links
 
if Zeit > 2000 then ' seit 2 Sekunden gab es keine Aktion von mir
Zeit = 0
Select Case Nr6
Case 0 : if Nr6 = 0 then : Nr6 = 1 : M4 = 32 : A5 = 8 : endif ' Mund auf, Augen auf
Case 1 : if Nr6 = 1 then : Nr6 = 0 : M4 = 0 : A5 = 0 : endif ' Mund zu, Augen zu
End Select
goto Mund
endif
 
waitms 1
incr Zeit
 
loop
 
' --- Programm Ende --------------------------------------------------------------------------------------------
 
end
 
' --- Prozeduren, Funktionen... --------------------------------------------------------------------------------
 
Augen:
for Zeile = 1 to 8
A_Cs = 0 : A_Din = 0 : A_Clk = 0 ' noch nicht anzeigen
Befehl = Zeile
Daten = lookup( A5 , Augenarten ) ' 8x8 Matrix 1 und 2 sind paralel am Port D (3-5) angeschloßen
shiftout A_Din , A_Clk , Befehl , 1 ' den Befehl senden
shiftout A_Din , A_Clk , Daten , 1 ' die Daten senden
incr A5 ' die nächste Zeile vom Auge
A_Cs = 1 ' jetzt anzeigen
next Zeile
goto Taster
 
Mund:
M3 = M4 + 8 : M2 = M3 + 8 : M1 = M2 + 8
for Zeile = 1 to 8
M_Cs = 0 : M_Din = 0 : M_Clk = 0 ' noch nicht anzeigen
Befehl = Zeile
Daten = lookup( M4 , Mundarten ) ' 8x8 Matrix 4, die letzte 8x8 Matrix
shiftout M_Din , M_Clk , Befehl , 1 ' den Befehl senden
shiftout M_Din , M_Clk , Daten , 1 ' die Daten senden
Daten = lookup( M3 , Mundarten ) ' 8x8 Matrix 3
shiftout M_Din , M_Clk , Befehl , 1 ' den Befehl senden
shiftout M_Din , M_Clk , Daten , 1 ' die Daten senden
Daten = lookup( M2 , Mundarten ) ' 8x8 Matrix 2
shiftout M_Din , M_Clk , Befehl , 1 ' den Befehl senden
shiftout M_Din , M_Clk , Daten , 1 ' die Daten senden
Daten = lookup( M1 , Mundarten ) ' 8x8 Matrix 1, die mit dem Anschluß zum Mikrocontroller
shiftout M_Din , M_Clk , Befehl , 1 ' den Befehl senden
shiftout M_Din , M_Clk , Daten , 1 ' die Daten senden
incr M4 : incr M3 : incr M2 : incr M1 ' die nächste Zeile vom Mund
M_Cs = 1 ' jetzt anzeigen
next Zeile
goto Augen
 
Init_max:
for Modul = 1 to Anzahl
Befehl = &H0C : Daten = 0 ' Shutdown an, keine Ausführung möglich
gosub Send_max
Befehl = &H09 : Daten = 0 ' auf Matrixbetrieb schalten, nicht auf 7 Segmentbetrieb
gosub Send_max
Befehl = &H0A : Daten = 0 ' Helligkeit 0-15
gosub Send_max
Befehl = &H0B : Daten = 7 ' wieviel Reihen sollen benutzt werden 0-7
gosub Send_max
Befehl = &H0F : Daten = 0 ' Test aus
gosub Send_max
Befehl = &H0C : Daten = 1 ' Shutdown aus, eine Ausführung ist wieder möglich
gosub Send_max
next Modul
return
 
Matrix_leeren:
for Modul = 1 to Anzahl
For leeren = 1 To 8
Befehl = leeren
Daten = &B00000000
Gosub Send_max
Next leeren
next Modul
Return
 
Send_max:
if Anzahl = 1 then ' 1 sind die Augen
A_Cs = 0 : A_Din = 0 : A_Clk = 0 ' die Augen noch nicht anzeigen
shiftout A_Din , A_Clk , Befehl , 1 ' den Befehl senden
shiftout A_Din , A_Clk , Daten , 1 ' die Daten senden
A_Cs = 1 ' jetzt die Augen anzeigen
else ' 4 ist der Mund
M_Cs = 0 : M_Din = 0 : M_Clk = 0 ' den Mund noch nicht anzeigen
shiftout M_Din , M_Clk , Befehl , 1 ' den Befehl senden
shiftout M_Din , M_Clk , Daten , 1 ' die Daten senden
M_Cs = 1 ' jetzt den Mund anzeigen
endif
Return
 
' --- data Reihen... -------------------------------------------------------------------------------------------
 
Augenarten:
' 0 --- Augen zu ---
data &B00100000 , &B00010000 , &B00001000 , &B00001000 , &B00001000 , &B00001000 , &B00010000 , &B00100000
' 8 --- Augen auf ---
data &B00111100 , &B01000010 , &B10000001 , &B10011001 , &B10011001 , &B10000001 , &B01000010 , &B00111100
' 16 --- Augen unten ---
data &B00111100 , &B01000010 , &B10000001 , &B10110001 , &B10110001 , &B10000001 , &B01000010 , &B00111100
' 24 --- Augen links unten ---
data &B00111100 , &B01000010 , &B10110001 , &B10110001 , &B10000001 , &B10000001 , &B01000010 , &B00111100
' 32 --- Augen links ---
data &B00111100 , &B01000010 , &B10011001 , &B10011001 , &B10000001 , &B10000001 , &B01000010 , &B00111100
' 40 --- Augen links oben ---
data &B00111100 , &B01000010 , &B10001101 , &B10001101 , &B10000001 , &B10000001 , &B01000010 , &B00111100
' 48 --- Augen oben ---
data &B00111100 , &B01000010 , &B10000001 , &B10001101 , &B10001101 , &B10000001 , &B01000010 , &B00111100
' 56 --- Augen rechts oben ---
data &B00111100 , &B01000010 , &B10000001 , &B10000001 , &B10001101 , &B10001101 , &B01000010 , &B00111100
' 64 --- Augen rechts ---
data &B00111100 , &B01000010 , &B10000001 , &B10000001 , &B10011001 , &B10011001 , &B01000010 , &B00111100
' 72 --- Augen rechts unten ---
data &B00111100 , &B01000010 , &B10000001 , &B10000001 , &B10110001 , &B10110001 , &B01000010 , &B00111100
 
Mundarten:
' 0 --- Mund zu ---
data &B00000000 , &B00000000 , &B00000000 , &B01111111 , &B01111111 , &B00000000 , &B00000000 , &B00000000
data &B00000000 , &B00000000 , &B00000000 , &B11111111 , &B11111111 , &B00000000 , &B00000000 , &B00000000
data &B00000000 , &B00000000 , &B00000000 , &B11111111 , &B11111111 , &B00000000 , &B00000000 , &B00000000
data &B00000000 , &B00000000 , &B00000000 , &B11111110 , &B11111110 , &B00000000 , &B00000000 , &B00000000
' 32 --- Mund auf ---
data &B00000000 , &B00001111 , &B00011111 , &B00011000 , &B00011000 , &B00011111 , &B00001111 , &B00000000
data &B00000000 , &B11111111 , &B11111111 , &B00000000 , &B00000000 , &B11111111 , &B11111111 , &B00000000
data &B00000000 , &B11111111 , &B11111111 , &B00000000 , &B00000000 , &B11111111 , &B11111111 , &B00000000
data &B00000000 , &B11110000 , &B11111000 , &B00011000 , &B00011000 , &B11111000 , &B11110000 , &B00000000
' 64 --- Mund lach ---
data &B00000000 , &B01100000 , &B01110000 , &B00111100 , &B00001111 , &B00000011 , &B00000000 , &B00000000
data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B11111111 , &B11111111 , &B00000000
data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B11111111 , &B11111111 , &B00000000
data &B00000000 , &B00000110 , &B00001110 , &B00111100 , &B11110000 , &B11000000 , &B00000000 , &B00000000
' 96 --- Mund traurig ---
data &B00000000 , &B00000000 , &B00000011 , &B00001111 , &B00111100 , &B01110000 , &B01100000 , &B00000000
data &B00000000 , &B11111111 , &B11111111 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000
data &B00000000 , &B11111111 , &B11111111 , &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000
data &B00000000 , &B00000000 , &B11000000 , &B11110000 , &B00111100 , &B00001110 , &B00000110 , &B00000000
 
' --------------------------------------------------------------------------------------------------------------
 



Grüßle, Naubaddi

Naubaddi
Beiträge: 288
Registriert am: 29.01.2019

Themen Überblick

Betreff Absender Datum
-
Nr. 6 lebt ... Naubaddi 03.01.2020
RE: Nr. 6 lebt ... Naubaddi 03.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 03.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 05.01.2020
RE: Nr. 6 lebt ... Naubaddi 06.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 06.01.2020
RE: Nr. 6 lebt ... Naubaddi 06.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 06.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 06.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 12.01.2020
RE: Nr. 6 lebt ... Naubaddi 12.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 12.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 12.01.2020
RE: Nr. 6 lebt ... Naubaddi 12.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 12.01.2020
RE: Nr. 6 lebt ... Naubaddi 12.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 12.01.2020
RE: Nr. 6 lebt ... Naubaddi 13.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 13.01.2020
RE: Nr. 6 lebt ... Naubaddi 14.01.2020
RE: Nr. 6 lebt ... Naubaddi 14.01.2020
RE: Nr. 6 lebt ... Naubaddi 14.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 14.01.2020
RE: Nr. 6 lebt ... Naubaddi 14.01.2020
RE: Nr. 6 lebt ... Naubaddi 14.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 14.01.2020
RE: Nr. 6 lebt ... Naubaddi 14.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 14.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 15.01.2020
RE: Nr. 6 lebt ... Naubaddi 15.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 15.01.2020
RE: Nr. 6 lebt ... Naubaddi 15.01.2020
RE: Nr. 6 lebt ... Naubaddi 15.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 15.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 15.01.2020
RE: Nr. 6 lebt ... Naubaddi 15.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 15.01.2020
RE: Nr. 6 lebt ... Naubaddi 16.01.2020
RE: Nr. 6 lebt ... Naubaddi 16.01.2020
RE: Nr. 6 lebt ... BoomBoomMagic 04.02.2020
 

Picaxe Editor 5.5.5 Download
Update auf Picaxe Editor 5.5.6 Download
Picaxe Editor 6.x.x.x Download
Manual1.pdf        -      Grundwissen Download
Manual2.pdf        -      Befehle Download
Manual3.pdf        -      Beispiele Download


Press [Backspace] for back to Menu


Counter
Xobor Forum Software ©Xobor.de | Forum erstellen
Datenschutz