Lieber Besucher, herzlich willkommen bei: Das Wettringer Modellbauforum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Mach' im Lichtleiter-Thread endlich mal weiter!>
).
.



@Micha: Wie man den Maßstab berechnet, ist mir schon klar. Warum aber gerade 24? 20 oder 25 wären dekadisch naheliegend.
|
|
Quellcode |
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 |
'*****************************************
'
'
' Blinker (8-Kanal) mit Modusumschaltung
'
'
'*****************************************
' Verwendung des ULN2803A
' PortB.x -- ULN In --- ULN Out -- Kathode LED -- Anode LED --- 1k -- +12 oder +5 V.
' Taster an Pin 11 --- GND
'
' ***** Genutzter Microcontroller, Takt in Hz, Stacks & Framesize
$regfile = "attiny4313.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32
'***** Variable
Dim I As Byte ' Standard-Zählvariable
Dim Modus_nummer As Byte ' selbsterklärend
Dim Led_sequenz(8) As Word ' 8 LED-Sequenzen à 16 Schaltzustände
Dim Impuls As Byte ' legt die Impulsdauer fest
Dim Sequenz As Byte ' Länge der Sequenz Werte 0 - 15 entsprechen 1 - 16 Sequenzbits
'*******************************
'*
'* Spielwiese 1
'*
'*******************************
Impuls = 150 ' Impulsdauer in Millisekunden
Sequenz = 15 ' s. o.
'*******************************
'*
'* Ende Spielwiese 1
'*
'*******************************
'
'***** Configs & Interrupts
' Portpin-Configs & Alias
Config Portb = Output
Led1 Alias Portb.0
Led2 Alias Portb.1
Led3 Alias Portb.2
Led4 Alias Portb.3
Led5 Alias Portb.4
Led6 Alias Portb.5
Led7 Alias Portb.6
Led8 Alias Portb.7
Config Portd.6 = Input ' Eingabeportpin bestimmen
Modus_plus Alias Pind.6 ' Aufpassen:Nicht PORTD.6 sondern PIND.6 - wir fragen ja einen INput ab
Portd.6 = 1 ' Pullupwiderstand einschalten
'Modus_minus Alias Pin... ' Hausaufgabe ;-)
Do
For I = 0 To Sequenz
Led1 = Led_sequenz(1).i
Led2 = Led_sequenz(2).i
Led3 = Led_sequenz(3).i
Led4 = Led_sequenz(4).i
Led5 = Led_sequenz(5).i
Led6 = Led_sequenz(6).i
Led7 = Led_sequenz(7).i
Led8 = Led_sequenz(8).i
Waitms Impuls
If Modus_plus = 0 Then
Incr Modus_nummer ' addiert 1 auf Modus_nummer. Wir könnten auch schreiben: Modus_nummer = Modus_nummer + 1
Gosub Modusumschaltung
End If
Next I
Loop
End
'*******************************
'*
'* Unterprogramm & Spielwiese 2
'*
'*******************************
Modusumschaltung: ' Name des Unterprogramms. Doppelpunkt nicht vergessen!
Waitms 20 ' Tastenprellung abwarten
Bitwait Modus_plus , Set ' Taster nicht mehr gedrückt?
'If Modus_nummer = 255 Then Modus_nummer = 0 ' Hausaufgabe ;-)
If Modus_nummer > 3 Then Modus_nummer = 0 ' Wir haben nur drei Modi
I = 0 ' Sequenzbitzähler zurücksetzen
Select Case Modus_nummer
Case 0:
Led_sequenz(1) = &B0000000000000000 ' Alle Sequenzen aus; Led_sequenz(x) = 0 geht auch.
Led_sequenz(2) = &B0000000000000000
Led_sequenz(3) = &B0000000000000000
Led_sequenz(4) = &B0000000000000000
Led_sequenz(5) = &B0000000000000000
Led_sequenz(6) = &B0000000000000000
Led_sequenz(7) = &B0000000000000000
Led_sequenz(8) = &B0000000000000000
Case 1:
Led_sequenz(1) = &B0000000000000000 ' Sequenzen für Led7 und 8
Led_sequenz(2) = &B0000000000000000
Led_sequenz(3) = &B0000000000000000
Led_sequenz(4) = &B0000000000000000
Led_sequenz(5) = &B0000000000000000
Led_sequenz(6) = &B0000000000000000
Led_sequenz(7) = &B1100110011001100
Led_sequenz(8) = &B0011001100110011
Case 2:
Led_sequenz(1) = &B0000000000000000 ' Sequenzen für Led4 - 6
Led_sequenz(2) = &B0000000000000000
Led_sequenz(3) = &B0000000000000000
Led_sequenz(4) = &B1111000011110000
Led_sequenz(5) = &B0101000001010000
Led_sequenz(6) = &B0001010100010101
Led_sequenz(7) = &B0000000000000000
Led_sequenz(8) = &B0000000000000000
Case 3:
Led_sequenz(1) = &B0000010100000101 ' Alle Sequenzen an
Led_sequenz(2) = &B0001010000101000
Led_sequenz(3) = &B0000111100001111
Led_sequenz(4) = &B1111000011110000
Led_sequenz(5) = &B0101000001010000
Led_sequenz(6) = &B0001010100010101
Led_sequenz(7) = &B1100110011001100
Led_sequenz(8) = &B0011001100110011
End Select
Return
|
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Do
For I = 0 To [color=#ff0000]Sequenz[/color]
Led1 = Led_sequenz(1).i
Led2 = Led_sequenz(2).i
Led3 = Led_sequenz(3).i
Led4 = Led_sequenz(4).i
Led5 = Led_sequenz(5).i
Led6 = Led_sequenz(6).i
Led7 = Led_sequenz(7).i
Led8 = Led_sequenz(8).i
Waitms [color=#ff0000]Impuls[/color]
[color=#0000ff]If Modus_plus = 0 Then
Incr Modus_nummer[/color]
[color=#00ffff]Gosub Modusumschaltung[/color]
End If
Next I
Loop
|
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Do
For I = 0 To [color=#ff0000]15[/color]
Led1 = Led_sequenz(1).i
Led2 = Led_sequenz(2).i
Led3 = Led_sequenz(3).i
Led4 = Led_sequenz(4).i
Led5 = Led_sequenz(5).i
Led6 = Led_sequenz(6).i
Led7 = Led_sequenz(7).i
Led8 = Led_sequenz(8).i
Waitms [color=#ff0000]150[/color]
[color=#0000ff]If Modus_plus = 0 Then[/color]
[color=#00ffff]Incr Modus_nummer : Gosub Modusumschaltung[/color]
End If
Next I
Loop
|
)|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Select Case Farbwahl
Case 0 : Rot = Y : Gruen = Y : Blau = Y : Color = 0 ' ALLE LED AUS
Case 1 : Rot = X : Gruen = Y : Blau = Y : Color = 1 ' ROT
Case 2 : Rot = X : Gruen = X_orange : Blau = Y : Color = 2 ' ORANGE
Case 3 : Rot = X : Gruen = X_hellgruen : Blau = Y : Color = 3 ' HELLGRÜN
Case 4 : Rot = X : Gruen = X : Blau = Y : Color = 4 ' GELB
Case 5 : Rot = Y : Gruen = X : Blau = Y : Color = 5 ' GRÜN
Case 6 : Rot = X : Gruen = X : Blau = X_blau : Color = 6 ' WEISS
Case 7 : Rot = Y : Gruen = X : Blau = X_blau : Color = 7 ' AZUR
Case 8 : Rot = Y : Gruen = Y : Blau = X_blau : Color = 8 ' BLAU
Case 9 : Rot = X : Gruen = Y : Blau = X_blau : Color = 9 ' VIOLET
Case 10 : Rot = X : Gruen = Y : Blau = X_pink : Color = 10 ' PINK
Case 11 : Rot = Y : Gruen = Y : Blau = X_blau : Color = 11 ' COLOR-FADING
End Select
|

|
|
Quellcode |
1 2 3 4 5 6 7 8 |
Select Case Brightness
Case 0 : X = 0 : X_pink = 910 : : X_orange = 796 : X_hellgruen = 682 : X_blau = 768 : Schrittpause = 6 : Lux = 100
Case 1 : X = 341 : X_pink = 947 : X_orange = 863 : X_hellgruen = 746 : X_blau = 853 : Schrittpause = 9 : Lux = 090
Case 2 : X = 568 : X_pink = 973 : X_orange = 922 : X_hellgruen = 871 : X_blau = 910 : Schrittpause = 13 : Lux = 080
Case 3 : X = 720 : X_pink = 989 : X_orange = 966 : X_hellgruen = 922 : X_blau = 947 : Schrittpause = 20 : Lux = 070
Case 4 : X = 821 : X_pink = 1000 : X_orange = 981 : X_hellgruen = 956 : X_blau = 973 : Schrittpause = 30 : Lux = 060
Case 5 : X = 889 : X_pink = 1007 : X_orange = 992 : X_hellgruen = 978 : X_blau = 989 : Schrittpause = 45 : Lux = 050
End Select
|
.


.
). Würdest du es nicht auch so sehen, dass es wesentlich übersichtlicher ist, wenn Code-Bausteine zusammenhängend als Ganzes ersichtlich sind und nicht erst zusammengesucht werden müssen?
Der Microcontroller kennt kein echtes ">" (Größer als), sondern nur "<" und "=" ('Kleiner als' und 'Ist gleich').
Zitat
was machst du, wenn dein Programm so groß geworden ist, dass es auf jedes einzelne Byte ankommt?
Dann programmier mal einen pinkompatiblen 8kB-Controller mit der Demo...
Das heißt doch, auch du hast mal mit dem kleinen 1x1 angefangen, aus deinen Fehlern gelernt, und erst dann mit Hilfe schrittweise deine Kenntnisse weiterentwickelt. Die Fehler hast du aber nicht vergessen. Das nennt man Erfahrung sammeln.
Zitat
Im Grunde musste ich mir alles selbst von der Pieke auf beibringen....
Das hat mir damals ein Mensch beigebracht, der wesentlich klüger ist als ich.
1 Besucher
Blinker, Blitzer, led, Mikrocontroller, Schrittmotor, Sensor, Servo, Sound, Soundmodul
Forensoftware: Burning Board®, entwickelt von WoltLab® GmbH