Huh,schlecht geschlafen oder warum heulste mich an ?![]()
Huh,schlecht geschlafen oder warum heulste mich an ?![]()
Gruß
Ratber
ach ratber... keine sorge, mir gehen nur extra-sensible aufn geist ^^
so, hier iss das programm so wies gehen würde:
ich hoffe es geht auch ^^Code:'################################################### '#Lauflichtsteuerung mit 3 Verschiedenen Programmen# '################################################### $regfile = "M8def.dat" $crystal = 3686400 Ddrd = &B11100000 'PD7, PD6, PD5 als Ausgänge festlegen, rest Eingang Portd = &B00001100 'PullUps von PD2, PD3 Aktivieren Dim Zler As Byte Dim Pr1_3 As Byte On Timer1 Ontimer1 Config Timer1 = Timer , Prescale = 64 'Timertakt = Crystal / 64 Enable Timer1 'Timer1 einschalten Enable Interrupts 'Interrupts Global einschalten Const Timervorgabe = 36736 'Hat mir rnAVR so berechnet '###Deklarationen### Led_gr Alias Portd.7 'LED Grün Led_ge Alias Portd.6 'LED Gelb Led_ro Alias Portd.5 'LED Rot Prwata Alias Pind.3 'Programmwahltaster Declare Sub Pr_1 Declare Sub Pr_2 Declare Sub Pr_3 '###Hauptschleife### Do Debounce Prwata , 0 , Pr_wechs , Sub 'Programmwahltaster entprellen und zu Pr_wechsel springen Gosub Pr_wechsel Loop '###OnTimer1### Ontimer1: Timer1 = Timervorgabe If Zler = 10 Then 'Wenn Zler = 9 dann... Zler = 1 '...Zler = 0 End If Incr Zler 'Zler + 1 Return '###Unterprogramme### Pr_wechs: Incr Pr1_3 Gosub Pr_wechsel Return Pr_wechsel: If Pr1_3 = 3 Then 'Wenn Pr1_3 = 2 dann... Pr1_3 = 0 '...Pr1_3 = 0 End If If Pr1_3 = 0 Then 'Wenn Pr1_3 = 0 dann... Gosub Pr_1 End If '...zum Sub PR_1 springen If Pr1_3 = 1 Then 'Wenn Pr1_3 = 1 dann... Gosub Pr_2 '...zum sub PR_2 springen End If If Pr1_3 = 2 Then Gosub Pr_3 End If Return '---------------- Pr_1: Return '--------------- Pr_2: Return '--------------- Pr_3: Return
Martin
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Erst mal vielen dank für die gute hilfeIch werde es heute abend testen, habe leider immoment keine Zeit. Ich werde dann berichten wie es läuft.
juhuuu es läuft nun
Hier mal der fertige Code:
Code:'################################################### '#Lauflichtsteuerung mit 3 Verschiedenen Programmen# '################################################### $regfile = "M8def.dat" $crystal = 3686400 Ddrd = &B11100000 'PD7, PD6, PD5 als Ausgänge festlegen, rest Eingang Portd = &B00001100 'PullUps von PD2, PD3 Aktivieren Dim Zler As Byte Dim Pr1_3 As Byte On Timer1 Ontimer1 Config Timer1 = Timer , Prescale = 64 'Timertakt = Crystal / 64 Enable Timer1 'Timer1 einschalten Enable Interrupts 'Interrupts Global einschalten Const Timervorgabe = 36736 'Hat mir rnAVR so berechnet '###Deklarationen### Led_gr Alias Portd.7 'LED Grün Led_ge Alias Portd.6 'LED Gelb Led_ro Alias Portd.5 'LED Rot Prwata Alias Pind.3 'Programmwahltaster Declare Sub Pr_1 Declare Sub Pr_2 Declare Sub Pr_3 '###Hauptschleife### Do Debounce Prwata , 0 , Pr_wechs , Sub 'Programmwahltaster entprellen und zu Pr_wechsel springen Gosub Pr_wechsel Loop '###OnTimer1### Ontimer1: Timer1 = Timervorgabe If Zler >= 3 Then 'Wenn Zler = 10 dann... Zler = 0 '...Zler = 1 End If Incr Zler 'Zler + 1 Return '###Unterprogramme### Pr_wechs: Incr Pr1_3 Gosub Pr_wechsel Return Pr_wechsel: If Pr1_3 >= 3 Then 'Wenn Pr1_3 = 2 dann... Pr1_3 = 0 '...Pr1_3 = 0 End If If Pr1_3 = 0 Then 'Wenn Pr1_3 = 0 dann... Gosub Pr_1 End If '...zum Sub PR_1 springen If Pr1_3 = 1 Then 'Wenn Pr1_3 = 1 dann... Gosub Pr_2 '...zum sub PR_2 springen End If If Pr1_3 = 2 Then Gosub Pr_3 End If Return '---------------- Pr_1: If Zler = 1 Then Led_ro = 1 Led_ge = 1 Led_gr = 1 End If If Zler = 2 Then Led_ro = 0 Led_ge = 0 Led_gr = 0 End If If Zler = 3 Then Led_ro = 0 Led_ge = 1 Led_gr = 0 End If Return '--------------- Pr_2: If Zler = 1 Then Led_ro = 1 Led_ge = 0 Led_gr = 1 End If If Zler = 2 Then Led_ro = 0 Led_ge = 1 Led_gr = 0 End If If Zler = 3 Then Led_ro = 1 Led_ge = 1 Led_gr = 1 End If Return '--------------- Pr_3: If Zler = 1 Then Led_ro = 1 Led_ge = 0 Led_gr = 0 End If If Zler = 2 Then Led_ro = 0 Led_gr = 1 Led_ge = 0 End If If Zler = 3 Then Led_ro = 0 Led_gr = 0 Led_ge = 1 End If Return
AhhjaZitat von x-ryder
![]()
Gruß
Ratber
Eine Frage habe ich aber noch.
Wie kann ich nun die geschwindigkeit mit einem Taster erhöhen? von -100% - +100%
Am besten in 10% Schritten. Wenn er bei +100% angekommen ist Springt er auf -100% und geht dann wieder in 10% Schritten hoch.
Ich habe versucht die "const Timervorgabe" zu ändern aber das geht nicht. Gibts da einen anderen Trick?
Timervorgabe nich als Konstante sondern als Variable zu deklarieren.
Dim Timervorgabe As Interger
z.B.
Konstanten haben immer einen festen Wert. Deshlab geht es nicht. Der Rest deines Programmes wie du es abgeändert hast kennt ja noch keiner, aber ich denke du bist auf dem richtigen Weg!
Warum nehme ich denn z.B Interger und nicht Word? Das hab ich irgentwie noch nie verstanden.
Hier mal der Code wie es immoment aussieht. Aber das geht nicht weil ich Timervorgabe keinem Wert zugewiesen habe und ich wiess auch echt nicht genau wie und wo ich das machen soll.
Code:'################################################### '#Lauflichtsteuerung mit 3 Verschiedenen Programmen# '################################################### $regfile = "M8def.dat" $crystal = 3686400 Ddrd = &B11100000 'PD7, PD6, PD5 als Ausgänge festlegen, rest Eingang Portd = &B00001100 'PullUps von PD2, PD3 Aktivieren Dim Zler As Byte Dim Pr1_3 As Byte Dim Schneller As Byte Dim Timervorgabe As Double On Timer1 Ontimer1 Config Timer1 = Timer , Prescale = 64 'Timertakt = Crystal / 64 Enable Timer1 'Timer1 einschalten Enable Interrupts 'Interrupts Global einschalten '###Deklarationen### Led_gr Alias Portd.7 'LED Grün Led_ge Alias Portd.6 'LED Gelb Led_ro Alias Portd.5 'LED Rot Prwata Alias Pind.3 'Programmwahltaster Speed Alias Pind.2 Declare Sub Pr_1 Declare Sub Pr_2 Declare Sub Pr_3 '###Hauptschleife### Do Debounce Prwata , 0 , Pr_wechs , Sub 'Programmwahltaster entprellen und zu Pr_wechsel springen Debounce Speed , 0 , S_change , Sub Gosub Pr_wechsel Loop '###OnTimer1### Ontimer1: Timer1 = Timervorgabe If Zler >= 3 Then 'Wenn Zler = 10 dann... Zler = 0 '...Zler = 1 End If Incr Zler 'Zler + 1 Return '###Unterprogramme### S_change: If Schneller = 3 Then Schneller = 0 End If Incr Schneller If Schneller = 0 Then Timervorgabe = 7936 End If If Schneller = 1 Then Timervorgabe = 36736 End If If Schneller = 2 Then Timervorgabe = 46336 End If Return Pr_wechs: Incr Pr1_3 Gosub Pr_wechsel Return Pr_wechsel: If Pr1_3 >= 3 Then 'Wenn Pr1_3 = 2 dann... Pr1_3 = 0 '...Pr1_3 = 0 End If If Pr1_3 = 0 Then 'Wenn Pr1_3 = 0 dann... Gosub Pr_1 End If '...zum Sub PR_1 springen If Pr1_3 = 1 Then 'Wenn Pr1_3 = 1 dann... Gosub Pr_2 '...zum sub PR_2 springen End If If Pr1_3 = 2 Then Gosub Pr_3 End If Return
zb. direkt vor den "Deklarationen" mit "Timervorgabe = 100" (oder nem beliebigem Startwert deiner Wahl)
Gruß
Ratber
Ja das war das erste was ich ausprobiert habe, blos nimmt der das irgentwie nicht an. Ich bekomme trotzdem noch den selben Fehler wie vorher beim Compilieren...
Lesezeichen