er hat 7 laser übereinander, für jede reihe einen.
Castle
wow das mit dem laser ist wirklich kewl! aber sicher extrem schwierig anzusteuern...
mein prog ist so gut wie fertig und schön schlank... habe nun das grose und kleine abc eingefügt... und braucht nur 25% auf dem mega8. hier wiedermal mein prog (wenn du möchtest kanst du das kleine abc von mir kopieren...):
und noch ein bild, ich werde den ganzen rotor nochmals neu bauen da er fast auseinanderfälltCode:$regfile = "m8def.dat" $crystal = 8000000 $framesize = 512 $swstack = 512 $hwstack = 512 Config Portb = Output Dim Umdrehung As Word Dim Spaltenzeit As Byte Dim A As Byte Dim X As Byte Dim I As Byte Dim L As Byte Dim Anzeige As String * 30 Dim Zeichen As String * 1 Dim Zeichenasc As Byte Dim Spalte(150) As Byte Dim Laenge As Byte Dim Spalten As Byte Dim Index As Word Dim Stelle As Byte Config Int0 = Falling On Int0 Int0isr Enable Int0 Config Timer0 = Timer , Prescale = 64 On Timer0 Timer0isr Enable Timer0 Config Timer1 = Timer , Prescale = 8 On Timer1 Timer1isr Enable Timer1 Enable Interrupts Start Timer0 Start Timer1 Anzeige = " Roboternetz" Do If L = Laenge Then L = 0 X = 0 Stelle = 0 End If Incr L Zeichen = Mid(anzeige , L , 1) Laenge = Len(anzeige) Spalten = Laenge * 7 Zeichenasc = Asc(zeichen) If Zeichen = " " Then For I = 1 To 6 Incr Stelle Spalte(stelle) = 255 Next I End If If Zeichenasc >= 65 And Zeichenasc <= 90 Then Index = Zeichenasc - 65 Index = Index * 5 For I = 1 To 5 Incr Stelle Spalte(stelle) = Lookup(index , Abc_gross) Incr Index Next I Incr Stelle Spalte(stelle) = 255 Incr Stelle Spalte(stelle) = 255 End If If Zeichenasc >= 97 And Zeichenasc <= 122 Then Index = Zeichenasc - 97 Index = Index * 5 For I = 1 To 5 Incr Stelle Spalte(stelle) = Lookup(index , Abc_klein) Incr Index Next I Incr Stelle Spalte(stelle) = 255 Incr Stelle Spalte(stelle) = 255 End If If Zeichenasc >= 48 And Zeichenasc <= 57 Then Index = Zeichenasc - 48 Index = Index * 5 For I = 1 To 5 Incr Stelle Spalte(stelle) = Lookup(index , 123) Incr Index Next I Incr Stelle Spalte(stelle) = 255 Incr Stelle Spalte(stelle) = 255 End If Loop Int0isr: Waitms 2 Umdrehung = Timer1 Umdrehung = Umdrehung / 1200 Spaltenzeit = Umdrehung Timer1 = 0 Timer0 = 0 A = 0 Return Timer0isr: Load Timer0 , Spaltenzeit Incr A If A > Spalten Then Portb = 255 Else Portb = Spalte(a) End If Return Timer1isr: I = 0 X = 0 Return Abc_gross: Data &B10000001 , &B01101111 , &B01101111 , &B01101111 , &B10000001 Data &B00000001 , &B01101101 , &B01101101 , &B01101101 , &B10010011 Data &B11000111 , &B10111011 , &B01111101 , &B01111101 , &B01111101 Data &B00000001 , &B01111101 , &B01111101 , &B10111011 , &B11000111 Data &B00000001 , &B01101101 , &B01101101 , &B01111101 , &B01111101 Data &B00000001 , &B01101111 , &B01101111 , &B01111111 , &B01111111 Data &B10000011 , &B01111101 , &B01101101 , &B01101101 , &B01100011 Data &B00000001 , &B11101111 , &B11101111 , &B11101111 , &B00000001 Data &B11111111 , &B01111101 , &B00000001 , &B01111101 , &B11111111 Data &B11111011 , &B01111101 , &B00000001 , &B01111111 , &B11111111 Data &B00000001 , &B11101111 , &B11010111 , &B10111011 , &B01111101 Data &B00000001 , &B11111101 , &B11111101 , &B11111101 , &B11111101 Data &B00000001 , &B10111111 , &B11001111 , &B10111111 , &B00000001 Data &B00000001 , &B11011111 , &B11101111 , &B11110111 , &B00000001 Data &B10000011 , &B01111101 , &B01111101 , &B01111101 , &B10000011 Data &B00000001 , &B01101111 , &B01101111 , &B01101111 , &B10011111 Data &B10000011 , &B01111101 , &B01110101 , &B01111011 , &B10000101 Data &B00000001 , &B01101111 , &B01100111 , &B01101011 , &B10011101 Data &B10011101 , &B01101101 , &B01101101 , &B01101101 , &B01110011 Data &B01111111 , &B01111111 , &B00000001 , &B01111111 , &B01111111 Data &B00000011 , &B11111101 , &B11111101 , &B11111101 , &B00000011 Data &B00000111 , &B11111011 , &B11111101 , &B11111011 , &B00000111 Data &B00000011 , &B11111101 , &B11100011 , &B11111101 , &B00000011 Data &B00111001 , &B11010111 , &B11101111 , &B11010111 , &B00111001 Data &B00011111 , &B11101111 , &B11110001 , &B11101111 , &B00011111 Data &B01111001 , &B01110101 , &B01101101 , &B01011101 , &B00111101 Abc_klein: Data &B11111011 , &B11010101 , &B11010101 , &B11010101 , &B11100001 Data &B00000001 , &B11110101 , &B11101101 , &B11101101 , &B11110011 Data &B11100011 , &B11011101 , &B11011101 , &B11011101 , &B11111011 Data &B11110011 , &B11101101 , &B11101101 , &B11110101 , &B00000001 Data &B11100011 , &B11010101 , &B11010101 , &B11010101 , &B11100111 Data &B11101111 , &B10000001 , &B01101111 , &B01111111 , &B10111111 Data &B11001111 , &B10110101 , &B10110101 , &B10110101 , &B10000011 Data &B00000001 , &B11101111 , &B11011111 , &B11011111 , &B11100001 Data &B11111111 , &B11111111 , &B10100001 , &B11111111 , &B11111111 Data &B11111011 , &B11111101 , &B11011101 , &B01000011 , &B11111111 Data &B00000001 , &B11110111 , &B11101011 , &B11011101 , &B11111111 Data &B11111111 , &B01111101 , &B00000001 , &B11111101 , &B11111111 Data &B11000001 , &B11011111 , &B11100111 , &B11011111 , &B11100001 Data &B11000001 , &B11101111 , &B11011111 , &B11101111 , &B11100001 Data &B11100011 , &B11011101 , &B11011101 , &B11011101 , &B11100011 Data &B11000001 , &B11010111 , &B11010111 , &B11010111 , &B11101111 Data &B11101111 , &B11010111 , &B11010111 , &B11100111 , &B11000001 Data &B11000001 , &B11101111 , &B11011111 , &B11101111 , &B11101111 Data &B11101101 , &B11010101 , &B11010101 , &B11010101 , &B11111011 Data &B11011111 , &B00000011 , &B11011101 , &B11111101 , &B11111011 Data &B11000011 , &B11111101 , &B11111101 , &B11111011 , &B11000001 Data &B11000111 , &B11111011 , &B11111101 , &B11111011 , &B11000111 Data &B11000011 , &B11111101 , &B11110011 , &B11111101 , &B11000011 Data &B11011101 , &B11101011 , &B11110111 , &B11101011 , &B11011101 Data &B11001111 , &B11110101 , &B11110101 , &B11110101 , &B11000011 Data &B11011101 , &B11011001 , &B11010101 , &B11001101 , &B11011101 123:und auf jedenfall hellere LED's...
--edit--
hab gerade bemerkt das beim kleinen "r" noch ein fehler drin ist...
er hat 7 laser übereinander, für jede reihe einen.
Castle
Bluesmash
Ahaaa, interessant deine Abfrage der Zeichen.
Du grenzt also die Zeichen ein und ordnest die einfach so hintereinander, dass der Asc-Code auch zur Reihenfolge passt der Daten passen.
Sehe ich das richtig ?
Muss das mal ausdrucken und genau durchkauen
Ein Antwort bist du mir noch schuldig
Wie meintest Du das mit dem Schriftsatz von dem Bild umwandeln ?
@castle
Danke für die INfo
Aber kannst Du mir sagen, wo das steht?
Kann da nix finden .
Meine 8 Laser nebeneinander brauchen schon so ca. 12cm breite.
Bei der Home scheint es aber eher nur einer zu sein (Bild) ?!
-----------------------
DAs würde mir auch gut gefallen....
http://www.luberth.com/help/LEDSPIN.HTM
So für Silvester oder so...![]()
ja du siehst das genau richtig! ich musste einfach drei abfragen für die verschiedenen zeichengruppen machen... eine für die Grossbuchstaben, eine für die kleinen, und eine für die zahlen da sie im ascii code nicht hintereinander sind... in der tabelle sind die zeichen von a-z sortiert (jeweils eine zeile für einen buchstaben). und eine abfrage auf ein leerzeichen.
das mit dem bild meinte ich so dass ich jetzt nicht zuerst jedes zeichen aufzeichnen muss um es anschliessend im code einzutippen sonder gleich vom bild aus eintippen...
schade dass man kein grössenvergleich hat das teil sieht ja riesig aus! was hat den der für lampen dran die so schnell schalten...?
im moment bin ich gerade auf der Suche nach einem ir-receiver damit ich dem rotor vom palm aus neue daten senden kann... hast du da ev. erfahrung?
gruss bluesmash
@bluesmash
Wenn du deinen Code noch ein wenig shrinken willst, hätt ich einen Vorschlag (Du mußt ein wenig mitdenken, aber das hast du ja drauf)
Code:Dim Lowchar As Byte Dim Hichar As Byte Dim Tabadr As Word do '........................ ' dein code von oben '........................ Lowchar = 65 Hichar = 90 Tabadr = Loadlabel(abc_gross) Gosub Make_it Lowchar = 97 Hichar = 122 Tabadr = Loadlabel(abc_klein) Gosub Make_it Lowchar = 48 Hichar = 57 Tabadr = Loadlabel(123) Gosub Make_it Loop '------------------------------------------------------- Make_it: If Zeichenasc >= Lowchar And Zeichenasc <= Hichar Then Index = Zeichenasc - Lowchar Index = Index * 5 Tabadr = Tabadr + Index For I = 1 To 5 Incr Stelle Spalte(stelle) = Cpeek(tabadr) Incr Tabadr Incr Index Next I Incr Stelle Spalte(stelle) = 255 Incr Stelle Spalte(stelle) = 255 End If Return
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
danke! super idee!! darauf sollte man auch erst mal kommen... hab dein code soweit begriffen...
was bedeutet aber Cpeek(tabadr)????
gruss bluesmash
Cpeek ist, ein byte aus dem Prog-mem lesen (-->Help)
Vorteil, besonders in deinem Fall: er muß nicht 5-mal rechnen (label + index), wie bei "lookup(index, label)"addr = loadlabel( mylabel)
val = CPeek(addr)
mylabel:
DATA xx
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo Bluesmash
Habe mir deinen Code jetzt durchgeschaut.
Ein paar Fragen hätte ich dazu:
* config Portd fehlt
* Timer1isr ist umsonst.
I und X werden nicht verwendet (I nur für schleifen)
* Bei Index wollte ich schon fragen, habs aber inzwischen kapiert
Sehr schlau
(die Verbesserung von Robert muss ich mir später noch anschauen
Habs jetzt durch und ich glaube auch begriffen
Nicht schlecht!!!
Wo hast Du den diese Tricks nur her ???
Hallo
Mein Code ist jetzt soweit fertig
(Satz wird auch zentriert)
@bluesmashCode:'--------Drehlicht-----V1.13-neu--------------- ' 8MHz RC Intern $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 200 $swstack = 200 $framesize = 200 '---Config Port's ----------------- Config Portb = Output 'Leds Portb = 255 Config Portd = Input Portd = 255 '---config Int0------ Config Int0 = Falling Enable Int0 On Int0 Kontakt '--- Config Timer1 ---- Config Timer1 = Timer , Prescale = 8 Enable Timer1 '--- Config Timer0 ------ Config Timer0 = Timer , Prescale = 8 Enable Timer0 On Timer0 Spalten Enable Interrupts Load Timer0 , 255 Dim Drehzeit As Long Dim Spaltenzeit As Word Dim B1 As Byte Dim Spalte(350) As Byte Dim Array_zaehler As Word Dim A As Byte Dim I As Byte 'Saetze Dim Satz As String * 45 Dim Zeichen As String * 1 Dim Asc_zeichen As Byte Dim Satzlaenge As Word Dim X As Word 'Spaltenzaehler für Zeichen auftragen Dim Zeichenasc As Byte Dim Lowchar As Byte Dim Hichar As Byte Dim Tabadr As Word Dim Index As Word Timer1 = 0 Timer0 = 0 Array_zaehler = 0 X = 0 '--------------------Hauptprogramm-------------------------- For X = 1 To 350 'Array Löschen Spalte(x) = 255 'max. Spalten Next X X = 0 '-------------------------------------------------- Waitms 20 Do Satz = "Test Test Test Test Test Test" Gosub Auswerten Waitms 20 Satz = "0123456789" Gosub Auswerten Waitms 50 Satz = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Gosub Auswerten Waitms 50 Satz = "abcdefghijklmnopqrstuvwxyz" Gosub Auswerten Waitms 50 Satz = "Ende" Gosub Auswerten Waitms 50 Loop End '==============================Unterprogramme=================================== '--------------ISR von Int0-------------------- Kontakt: Drehzeit = Timer1 Timer1 = 0 Timer0 = 0 Spaltenzeit = Drehzeit / 510 Array_zaehler = 0 Return '------------ISR von Timer0 -------------------- Spalten: Load Timer0 , Spaltenzeit Portb = 255 'Lösche Spalte If Array_zaehler < 350 Then Incr Array_zaehler Portb = Spalte(array_zaehler) 'Werte auf Rotor auftragen End If Return '--------------------Zeichen Auswerten ---------------------- Auswerten: For X = 1 To 350 'Array Löschen Spalte(x) = 255 Next X Satzlaenge = Len(satz) 'Ermittle die Satzlänge X = Satzlaenge * 7 'Errechne die Position X = X / 2 'für den Start X = 175 - X For A = 1 To Satzlaenge 'Eine Schleife für jedes Zeichen der Satzlänge Zeichen = Mid(satz , A , 1) 'Zeichen pro Zeichen auswerten Zeichenasc = Asc(zeichen) If Zeichen = " " Then 'Leerzeichen machen For I = 1 To 7 Incr X Spalte(x) = 255 Next I End If Lowchar = 65 'Prüfe Zeichen A-Z Hichar = 90 Tabadr = Loadlabel(abc_gross) Gosub Daten_suchen Lowchar = 97 'Prüfe Zeichen a-z Hichar = 122 Tabadr = Loadlabel(abc_klein) Gosub Daten_suchen Lowchar = 48 'Prüfe Zahlen 0-9 Hichar = 57 Tabadr = Loadlabel(123) Gosub Daten_suchen Next A Return '--------------Daten von Zeichen suchen--------------------------------------- Daten_suchen: If Zeichenasc >= Lowchar And Zeichenasc <= Hichar Then Index = Zeichenasc - Lowchar Index = Index * 5 Tabadr = Tabadr + Index For I = 1 To 5 Incr X Spalte(x) = Cpeek(tabadr) 'hole Daten Incr Tabadr Incr Index Next I Incr X Spalte(x) = 255 'leere Spalte Incr X Spalte(x) = 255 'leere Spalte End If Return '----------Zeichensatz-------------------- Abc_gross: Data &B10000001 , &B01101111 , &B01101111 , &B01101111 , &B10000001 Data &B00000001 , &B01101101 , &B01101101 , &B01101101 , &B10010011 Data &B11000111 , &B10111011 , &B01111101 , &B01111101 , &B01111101 Data &B00000001 , &B01111101 , &B01111101 , &B10111011 , &B11000111 Data &B00000001 , &B01101101 , &B01101101 , &B01111101 , &B01111101 Data &B00000001 , &B01101111 , &B01101111 , &B01111111 , &B01111111 Data &B10000011 , &B01111101 , &B01101101 , &B01101101 , &B01100011 Data &B00000001 , &B11101111 , &B11101111 , &B11101111 , &B00000001 Data &B11111111 , &B01111101 , &B00000001 , &B01111101 , &B11111111 Data &B11111011 , &B01111101 , &B00000001 , &B01111111 , &B11111111 Data &B00000001 , &B11101111 , &B11010111 , &B10111011 , &B01111101 Data &B00000001 , &B11111101 , &B11111101 , &B11111101 , &B11111101 Data &B00000001 , &B10111111 , &B11001111 , &B10111111 , &B00000001 Data &B00000001 , &B11011111 , &B11101111 , &B11110111 , &B00000001 Data &B10000011 , &B01111101 , &B01111101 , &B01111101 , &B10000011 Data &B00000001 , &B01101111 , &B01101111 , &B01101111 , &B10011111 Data &B10000011 , &B01111101 , &B01110101 , &B01111011 , &B10000101 Data &B00000001 , &B01101111 , &B01100111 , &B01101011 , &B10011101 Data &B10011101 , &B01101101 , &B01101101 , &B01101101 , &B01110011 Data &B01111111 , &B01111111 , &B00000001 , &B01111111 , &B01111111 Data &B00000011 , &B11111101 , &B11111101 , &B11111101 , &B00000011 Data &B00000111 , &B11111011 , &B11111101 , &B11111011 , &B00000111 Data &B00000011 , &B11111101 , &B11100011 , &B11111101 , &B00000011 Data &B00111001 , &B11010111 , &B11101111 , &B11010111 , &B00111001 Data &B00011111 , &B11101111 , &B11110001 , &B11101111 , &B00011111 Data &B01111001 , &B01110101 , &B01101101 , &B01011101 , &B00111101 Abc_klein: Data &B11111011 , &B11010101 , &B11010101 , &B11010101 , &B11100001 Data &B00000001 , &B11110101 , &B11101101 , &B11101101 , &B11110011 Data &B11100011 , &B11011101 , &B11011101 , &B11011101 , &B11111011 Data &B11110011 , &B11101101 , &B11101101 , &B11110101 , &B00000001 Data &B11100011 , &B11010101 , &B11010101 , &B11010101 , &B11100111 Data &B11101111 , &B10000001 , &B01101111 , &B01111111 , &B10111111 Data &B11001111 , &B10110101 , &B10110101 , &B10110101 , &B10000011 Data &B00000001 , &B11101111 , &B11011111 , &B11011111 , &B11100001 Data &B11111111 , &B11111111 , &B10100001 , &B11111111 , &B11111111 Data &B11111011 , &B11111101 , &B11011101 , &B01000011 , &B11111111 Data &B00000001 , &B11110111 , &B11101011 , &B11011101 , &B11111111 Data &B11111111 , &B01111101 , &B00000001 , &B11111101 , &B11111111 Data &B11000001 , &B11011111 , &B11100111 , &B11011111 , &B11100001 Data &B11000001 , &B11101111 , &B11011111 , &B11101111 , &B11100001 Data &B11100011 , &B11011101 , &B11011101 , &B11011101 , &B11100011 Data &B11000001 , &B11010111 , &B11010111 , &B11010111 , &B11101111 Data &B11101111 , &B11010111 , &B11010111 , &B11100111 , &B11000001 Data &B11000001 , &B11101111 , &B11011111 , &B11101111 , &B11101111 Data &B11101101 , &B11010101 , &B11010101 , &B11010101 , &B11111011 Data &B11011111 , &B00000011 , &B11011101 , &B11111101 , &B11111011 Data &B11000011 , &B11111101 , &B11111101 , &B11111011 , &B11000001 Data &B11000111 , &B11111011 , &B11111101 , &B11111011 , &B11000111 Data &B11000011 , &B11111101 , &B11110011 , &B11111101 , &B11000011 Data &B11011101 , &B11101011 , &B11110111 , &B11101011 , &B11011101 Data &B11001111 , &B11110101 , &B11110101 , &B11110101 , &B11000011 Data &B11011101 , &B11011001 , &B11010101 , &B11001101 , &B11011101 123: Data &B10000011 Data &B01011101 Data &B01101101 Data &B01110101 Data &B10000011 Data &B11111111 Data &B10111101 Data &B00000001 Data &B11111101 Data &B11111111 Data &B10111101 Data &B01111001 Data &B01110101 Data &B01101101 Data &B10011101 Data &B01111011 Data &B01111101 Data &B01011101 Data &B00101101 Data &B01110011 Data &B11100111 Data &B11010111 Data &B10110111 Data &B00000001 Data &B11110111 Data &B00011011 Data &B01011101 Data &B01011101 Data &B01011101 Data &B01100011 Data &B11000011 Data &B10101101 Data &B01101101 Data &B01101101 Data &B11110011 Data &B01111111 Data &B01110001 Data &B01101111 Data &B01011111 Data &B00111111 Data &B10010011 Data &B01101101 Data &B01101101 Data &B01101101 Data &B10010011 Data &B10011111 Data &B01101101 Data &B01101101 Data &B01101011 Data &B10000111
Hatte deinen Code auch mal probiert.
Deiner reagiert ein bisschen anders als meiner.
Bei dir flackern die Led's auch, wenn der Rotor sich nicht dreht..
Bei mir nur, nach einer Drehung..
Wegen dem Zeichensatz.
Schade das man so eigentlich die 8the Led nicht benutzt. (nur 1-7)
Müsste man eventuell umschreiben... (Fleissaufgabe)
hallo roberto!
was meinst du mit "config pord fehlt"? ich benütze ja portd nicht... nur portb für die led's...
ja stimmt timer1isr und das byte x kann ich eigentlich rausschmeissen....
darf ich deine tabelle für die zahlen übernehmen?
die 8the LED habe ich extra nicht verwendet da mit 8 leds die buchstaben nicht mehr so schön symetrisch sind... deshalb werden ja auch bei den LCD's nur 7x5 punkte verwendet...
gruss bluesmash
Lesezeichen