Die Rotationsanzeige
Das war ein kleines Spaßprojekt, für einen verregneten Sonntagnachmittag. Die Schaltung ist auf einer Lochrasterplatine aufgebaut. Um die Energieversorgung während der Rotation sicher zu stellen, ist ein 9Volt-Batteriehalter mit auf der Platine angebracht. Die Schaltung beschränkt sich auf eine 5V Spannungsstabilisierung und einen AtTiny2313 mit acht über Vorwiderständen angeschlossenen Leds. Die Rotationsachse sollte unbedingt im Schwerpunkt der Platine liegen. Die Schrift blinkt in der Realität allerdings nicht, muss wohl eine Resonanzfrequenz mit der Handycam gewesen sein.
Die Schaltung:
Auf meiner Anzeige habe ich den Schalter S1 weggelassen. Bei der Verwendung anderer LEDs kann es aber sein, dass die MISO, MOSI, SCK Pins zu niederohmig mit Masse verbunden sind. Dann würde sich der Controller nicht mehr über die ISP-Schnittstelle programmieren lassen.
Zum Programmieren Schalter auf, für den Betrieb Schalter zu.
Programm:
Der Quellcode sieht schlimmer aus, als er in Wirklichkeit ist. Das eigentliche Programm steht zwischen dem "DO-LOOP" Befehl und besteht nur aus 11 Zeilen. Die darin verwendeten Zeiten wurden experimentell ermittelt und können je nach Antrieb abweichen.
Quellcode: (Syntax highlighted mit
G
e
S
H
i
mit Anpassungen für BascomAVR von mir)' ******************************* ' * Rotationsanzeige * ' * mit ATtiny2313 * ' * © by Weigert * ' ******************************* ' Beschaltung: ' PB0-PB6: weiße Leds mit Rv=100Ohm $regfile = "attiny2313.dat" 'Dem Compiler vorgeben welcher Controller benutzt wird $crystal = 8000000 'Taktfrequenz in MHz vorgeben (damit Zeitroutinen richtig berechnet werden) Ddrb = &B11111111 'PortB.0 - PortB.7 als Ausgänge definieren Dim Buchstabe_sram(20) As Byte At &H60 'Array im SRam anlegen Dim Text As String * 20 At &H60 Overlay 'Stringvariable über Array legen Dim Stelle As Byte 'Variable vom Typ Byte definieren Dim Spalte As Byte 'Variable vom Typ Byte definieren Dim Pointer As Word 'Variable vom Typ Word definieren Init: Text = "Hallo TBS 1 Bochum" 'hier müssen exakt 20 Zeichen stehen (falls weniger -> mit Leerzeichen auffüllen) Main: Do 'Anfang Endlosschleife For Stelle = 1 To 20 'Zählschleife für die Buchstaben For Spalte = 0 To 4 'jeder Buchstabe besteht aus 5 Spalten (0-4) Pointer = Buchstabe_sram(stelle) * 5 'Pointer einstellen Pointer = Pointer + Spalte 'Pointer einstellen Portb = Lookup(pointer , Alphabet) 'Daten aus dem Alphabet holen und entsprechende LEDs einschalten Waitus 220 'kurz warten um mit den LEDs in die "Luft" schreiben zu können Next Spalte 'nächste Spalte Portb = 0 'hinter jedem Buchstaben ein "Leerzeichen" Waitus 500 'Zeit für das "Leerzeichen" Next Stelle 'nächster Buchstabe Waitms 9 'nach dem letzten Buchstaben Zeit für die restliche Umdrehung abwarten Loop 'Wiederholung der Endlosschleife '********************************************************************************************** '* Die Asciiwerte des oben eingegebenen Textes werden hier in die 5x8 Matrix umgewandelt * '********************************************************************************************** Alphabet: Data 0 , 0 , 0 , 0 , 0 ' Ascii 0 = NUL (Null) Data 0 , 0 , 0 , 0 , 0 ' Ascii 1 = SOH (Start of Heading) Data 0 , 0 , 0 , 0 , 0 ' Ascii 2 = STX (Start of Text) Data 0 , 0 , 0 , 0 , 0 ' Ascii 3 = ETX (End of Text) Data 0 , 0 , 0 , 0 , 0 ' Ascii 4 = EOT (End of Transmission) Data 0 , 0 , 0 , 0 , 0 ' Ascii 5 = ENQ (Enquiry) Data 0 , 0 , 0 , 0 , 0 ' Ascii 6 = ACK (Acknowledge) Data 0 , 0 , 0 , 0 , 0 ' Ascii 7 = BEL (Bell) Data 0 , 0 , 0 , 0 , 0 ' Ascii 8 = BS (Backspace) Data 0 , 0 , 0 , 0 , 0 ' Ascii 9 = HT (Horizontal Tabulation) Data 0 , 0 , 0 , 0 , 0 ' Ascii 10 = LF (Line Feed) Data 0 , 0 , 0 , 0 , 0 ' Ascii 11 = VT (Vertical Tabulation) Data 0 , 0 , 0 , 0 , 0 ' Ascii 12 = FF (Form Feed) Data 4 , 14 , 21 , 4 , 252 ' Ascii 13 = CR (Carriage Return) Data 0 , 0 , 0 , 0 , 0 ' Ascii 14 = SO (Shift Out) Data 0 , 0 , 0 , 0 , 0 ' Ascii 15 = SI (Shift In) Data 0 , 0 , 0 , 0 , 0 ' Ascii 16 = DLE (Dataline Escape) Data 0 , 0 , 0 , 0 , 0 ' Ascii 17 = DC1 (Devive Control 1) Data 0 , 0 , 0 , 0 , 0 ' Ascii 18 = DC2 (Devive Control 2) Data 0 , 0 , 0 , 0 , 0 ' Ascii 19 = DC3 (Devive Control 3) Data 0 , 0 , 0 , 0 , 0 ' Ascii 20 = DC4 (Devive Control 4) Data 0 , 0 , 0 , 0 , 0 ' Ascii 21 = NAK (Negative Acknowledge) Data 0 , 0 , 0 , 0 , 0 ' Ascii 22 = SYN (Syncronous Idle) Data 0 , 0 , 0 , 0 , 0 ' Ascii 23 = ETB (End of Transmission Block) Data 0 , 0 , 0 , 0 , 0 ' Ascii 24 = CAN (Cancel) Data 0 , 0 , 0 , 0 , 0 ' Ascii 25 = EM (End of Medium) Data 0 , 0 , 0 , 0 , 0 ' Ascii 26 = SUB (Substitute) Data 0 , 0 , 0 , 0 , 0 ' Ascii 27 = ESC (Escape) Data 0 , 0 , 0 , 0 , 0 ' Ascii 28 = FS (File Separator) Data 0 , 0 , 0 , 0 , 0 ' Ascii 29 = GS (Group Separator) Data 0 , 0 , 0 , 0 , 0 ' Ascii 30 = RS (Record Separator) Data 0 , 0 , 0 , 0 , 0 ' Ascii 31 = US (Unit Separator) Data 0 , 0 , 0 , 0 , 0 ' Ascii 32 = SP (Space) Data 0 , 0 , 242 , 0 , 0 ' Ascii 33 = ! Data 0 , 224 , 0 , 224 , 0 ' Ascii 34 = Anführungszeichen Data 40 , 254 , 40 , 254 , 40 ' Ascii 35 = # Data 36 , 84 , 254 , 84 , 72 ' Ascii 36 = $ Data 196 , 200 , 16 , 38 , 70 ' Ascii 37 = % Data 108 , 146 , 170 , 132 , 10 ' Ascii 38 = & Data 0 , 160 , 192 , 0 , 0 ' Ascii 39 = ' Data 0 , 56 , 68 , 130 , 0 ' Ascii 40 = ( Data 0 , 130 , 68 , 56 , 0 ' Ascii 41 = ) Data 40 , 16 , 124 , 16 , 40 ' Ascii 42 = * Data 16 , 16 , 124 , 16 , 16 ' Ascii 43 = + Data 0 , 5 , 6 , 0 , 0 ' Ascii 44 = , Data 16 , 16 , 16 , 16 , 16 ' Ascii 45 = - Data 0 , 6 , 6 , 0 , 0 ' Ascii 46 = . Data 4 , 8 , 16 , 32 , 64 ' Ascii 47 = / Data 124 , 138 , 146 , 162 , 124 ' Ascii 48 = 0 Data 0 , 66 , 254 , 2 , 0 ' Ascii 49 = 1 Data 66 , 134 , 138 , 146 , 98 ' Ascii 50 = 2 Data 132 , 130 , 162 , 226 , 156 ' Ascii 51 = 3 Data 24 , 40 , 72 , 254 , 8 ' Ascii 52 = 4 Data 228 , 162 , 162 , 162 , 156 ' Ascii 53 = 5 Data 60 , 82 , 146 , 146 , 12 ' Ascii 54 = 6 Data 128 , 142 , 144 , 160 , 192 ' Ascii 55 = 7 Data 108 , 146 , 146 , 146 , 108 ' Ascii 56 = 8 Data 96 , 146 , 146 , 148 , 120 ' Ascii 57 = 9 Data 0 , 54 , 54 , 0 , 0 ' Ascii 58 = : Data 0 , 53 , 54 , 0 , 0 ' Ascii 59 = ; Data 16 , 40 , 68 , 130 , 0 ' Ascii 60 = < Data 40 , 40 , 40 , 40 , 40 ' Ascii 61 = = Data 0 , 130 , 68 , 40 , 16 ' Ascii 62 = > Data 64 , 128 , 138 , 144 , 96 ' Ascii 63 = ? Data 76 , 146 , 158 , 130 , 124 ' Ascii 64 = @ Data 126 , 144 , 144 , 144 , 126 ' Ascii 65 = A Data 254 , 146 , 146 , 146 , 108 ' Ascii 66 = B Data 124 , 130 , 130 , 130 , 68 ' Ascii 67 = C Data 254 , 130 , 130 , 130 , 124 ' Ascii 68 = D Data 254 , 146 , 146 , 146 , 146 ' Ascii 69 = E Data 254 , 144 , 144 , 144 , 144 ' Ascii 70 = F Data 124 , 130 , 146 , 146 , 92 ' Ascii 71 = G Data 254 , 16 , 16 , 16 , 254 ' Ascii 72 = H Data 0 , 130 , 254 , 130 , 0 ' Ascii 73 = I Data 132 , 130 , 130 , 130 , 252 ' Ascii 74 = J Data 254 , 16 , 40 , 68 , 130 ' Ascii 75 = K Data 254 , 2 , 2 , 2 , 2 ' Ascii 76 = L Data 254 , 64 , 32 , 64 , 254 ' Ascii 77 = M Data 254 , 64 , 32 , 16 , 254 ' Ascii 78 = N Data 124 , 130 , 130 , 130 , 124 ' Ascii 79 = O Data 254 , 144 , 144 , 144 , 96 ' Ascii 80 = P Data 124 , 130 , 134 , 130 , 125 ' Ascii 81 = Q Data 254 , 144 , 152 , 148 , 98 ' Ascii 82 = R Data 100 , 146 , 146 , 146 , 76 ' Ascii 83 = S Data 128 , 128 , 254 , 128 , 128 ' Ascii 84 = T Data 252 , 2 , 2 , 2 , 252 ' Ascii 85 = U Data 248 , 4 , 2 , 4 , 248 ' Ascii 86 = V Data 254 , 4 , 8 , 4 , 254 ' Ascii 87 = W Data 198 , 40 , 16 , 40 , 198 ' Ascii 88 = X Data 192 , 32 , 30 , 32 , 192 ' Ascii 89 = Y Data 134 , 138 , 146 , 162 , 194 ' Ascii 90 = Z Data 0 , 254 , 130 , 130 , 0 ' Ascii 91 = [ Data 64 , 32 , 16 , 8 , 4 ' Ascii 92 = \ Data 0 , 130 , 130 , 254 , 0 ' Ascii 93 = ] Data 32 , 64 , 128 , 64 , 32 ' Ascii 94 = ^ Data 2 , 2 , 2 , 2 , 2 ' Ascii 95 = _ Data 0 , 128 , 64 , 32 , 0 ' Ascii 96 = ` Data 4 , 42 , 42 , 42 , 30 ' Ascii 97 = a Data 254 , 18 , 34 , 34 , 28 ' Ascii 98 = b Data 28 , 34 , 34 , 34 , 34 ' Ascii 99 = c Data 28 , 34 , 34 , 18 , 254 ' Ascii 100 = d Data 28 , 42 , 42 , 42 , 24 ' Ascii 101 = e Data 16 , 126 , 144 , 128 , 64 ' Ascii 102 = f Data 24 , 37 , 37 , 37 , 62 ' Ascii 103 = g Data 254 , 16 , 32 , 32 , 30 ' Ascii 104 = h Data 0 , 34 , 190 , 2 , 0 ' Ascii 105 = i Data 4 , 2 , 34 , 188 , 0 ' Ascii 106 = j Data 254 , 8 , 20 , 34 , 0 ' Ascii 107 = k Data 0 , 130 , 254 , 2 , 0 ' Ascii 108 = l Data 62 , 32 , 24 , 32 , 30 ' Ascii 109 = m Data 62 , 16 , 32 , 32 , 30 ' Ascii 110 = n Data 28 , 34 , 34 , 34 , 28 ' Ascii 111 = o Data 63 , 36 , 36 , 36 , 24 ' Ascii 112 = p Data 24 , 36 , 36 , 36 , 63 ' Ascii 113 = q Data 62 , 16 , 32 , 32 , 16 ' Ascii 114 = r Data 18 , 42 , 42 , 42 , 4 ' Ascii 115 = s Data 32 , 254 , 34 , 2 , 4 ' Ascii 116 = t Data 60 , 2 , 2 , 4 , 62 ' Ascii 117 = u Data 56 , 4 , 2 , 4 , 56 ' Ascii 118 = v Data 60 , 2 , 12 , 2 , 60 ' Ascii 119 = w Data 34 , 20 , 8 , 20 , 34 ' Ascii 120 = x Data 48 , 10 , 10 , 10 , 60 ' Ascii 121 = y Data 34 , 38 , 42 , 50 , 34 ' Ascii 122 = z Data 0 , 16 , 108 , 130 , 0 ' Ascii 123 = { Data 0 , 0 , 254 , 0 , 0 ' Ascii 124 = | Data 0 , 130 , 108 , 16 , 0 ' Ascii 125 = } Data 16 , 32 , 16 , 8 , 16 ' Ascii 126 = ~ Data 0 , 0 , 0 , 0 , 0 ' Ascii 127 = DEL (Delete) '************************************************************************************** ' ab hier ANSI plus Eurozeichen sonst ohne True Types '************************************************************************************** Data 40 , 124 , 170 , 130 , 68 ' ANSI 128 = Eurozeichen Data 0 , 0 , 0 , 0 , 0 ' ANSI 129 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 130 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 131 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 132 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 133 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 134 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 135 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 136 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 137 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 138 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 139 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 140 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 141 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 142 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 143 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 144 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 145 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 146 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 147 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 148 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 149 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 150 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 151 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 152 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 153 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 154 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 155 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 156 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 157 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 158 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 159 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 160 = nicht definiert Data 0 , 0 , 0 , 0 , 0 ' ANSI 161 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 162 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 163 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 164 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 165 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 166 = Data 2 , 89 , 165 , 154 , 64 ' ANSI 167 = § Pahagraph Data 0 , 0 , 0 , 0 , 0 ' ANSI 168 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 169 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 170 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 171 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 172 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 173 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 174 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 175 = Data 96 , 144 , 144 , 96 , 0 ' ANSI 176 = ° Grad Data 0 , 0 , 0 , 0 , 0 ' ANSI 177 = Data 0 , 0 , 200 , 152 , 232 ' ANSI 178 = ² hoch Data 0 , 0 , 136 , 168 , 208 ' ANSI 179 = ³ hoch Data 0 , 0 , 0 , 160 , 192 ' ANSI 180 = ` Hochkomma Data 61 , 2 , 2 , 4 , 62 ' ANSI 181 = µ Data 0 , 0 , 0 , 0 , 0 ' ANSI 182 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 183 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 184 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 185 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 186 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 187 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 188 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 189 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 190 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 191 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 192 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 193 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 194 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 195 = Data 62 , 208 , 80 , 208 , 62 ' ANSI 196 = Ä Data 0 , 0 , 0 , 0 , 0 ' ANSI 197 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 198 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 199 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 200 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 201 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 202 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 203 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 204 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 205 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 206 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 207 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 208 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 209 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 210 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 211 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 212 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 213 = Data 60 , 194 , 66 , 194 , 60 ' ANSI 214 = Ö Data 0 , 0 , 0 , 0 , 0 ' ANSI 215 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 216 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 217 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 218 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 219 = Data 60 , 130 , 2 , 130 , 60 ' ANSI 220 = Ü Data 0 , 0 , 0 , 0 , 0 ' ANSI 221 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 222 = Data 127 , 144 , 146 , 146 , 108 ' ANSI 223 = ß Data 0 , 0 , 0 , 0 , 0 ' ANSI 224 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 225 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 226 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 227 = Data 4 , 170 , 42 , 170 , 30 ' ANSI 228 = ä Data 0 , 0 , 0 , 0 , 0 ' ANSI 229 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 230 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 231 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 232 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 233 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 234 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 235 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 236 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 237 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 238 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 239 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 240 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 241 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 242 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 243 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 244 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 245 = Data 28 , 162 , 34 , 162 , 28 ' ANSI 246 = ö Data 0 , 0 , 0 , 0 , 0 ' ANSI 247 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 248 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 249 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 250 = Data 0 , 0 , 0 , 0 , 0 ' ANSI 251 = Data 28 , 66 , 2 , 66 , 28 ' ANSI 252 = ü Data 0 , 0 , 0 , 0 , 0 ' ANSI 255 =