Hallo, Ich habe folgendes ungelöstes Problem, Ich habe einen BCD Schalter 0-9 mit dem möchte ich 10 Unterprogramme ansteuern. Ziel ist: 0 Alle Farben an 1 Rot 2 Gruen 3 Blau 4 Rot und Gruen 5 Gruen und Blau 6 Blau und Rot 7 Lauflicht 8 der Reihe nach durchdimmen 9 Geschwindigkeitsabhängig von Blau nach Rot übers Tachosignal dimmen Ich habe das Problem bisher so gelöst das über eine IF Abfrage der Zustand des BCD Schalters abgefragt wird und Anhand dessen Zustandes in ein Unterprogramm gesprungen wird. Dort Angekommen wird dieses Ausgeführt und am Ende wieder hoch zum Anfang gesprungen. Wie Kann ich jetzt Punkt 8 also die Farbkombinationen durchdimmen und Punkt 9 von Blau nach Rot Frequenzabhängig dimmen realisieren. Gibt es für die Abfrage des BCD Schalters noch eine elegantere Möglichkeit. Sorry habe gerade erst mit Microproz angefangen. $regfile = "m8def.dat" $crystal = 8000000 Config Pinc.0 = Input Config Pinc.1 = Input Config Pinc.2 = Input Config Pinc.3 = Input Config Pinb.0 = Output Config Pinb.1 = Output Config Pinb.2 = Output Rot Alias Portb.0 Gruen Alias Portb.1 Blau Alias Portb.2 Do Anfang: If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 0 And Pinc.3 = 0 Then Do jmp Prog0 Loop End If If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 0 And Pinc.3 = 0 Then Do jmp Prog1 Loop End If If Pinc.0 = 0 And Pinc.1 = 1 And Pinc.2 = 0 And Pinc.3 = 0 Then Do jmp Prog2 Loop End If If Pinc.0 = 1 And Pinc.1 = 1 And Pinc.2 = 0 And Pinc.3 = 0 Then Do JMP Prog3 Loop End If If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 1 And Pinc.3 = 0 Then Do jmp Prog4 Loop End If If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 1 And Pinc.3 = 0 Then Do jmp Prog5 Loop End If If Pinc.0 = 0 And Pinc.1 = 1 And Pinc.2 = 1 And Pinc.3 = 0 Then Do jmp Prog6 Loop End If If Pinc.0 = 1 And Pinc.1 = 1 And Pinc.2 = 1 And Pinc.3 = 0 Then Do jmp Prog7 Loop End If If Pinc.0 = 0 And Pinc.1 = 0 And Pinc.2 = 0 And Pinc.3 = 1 Then Do jmp Prog8 Loop End If If Pinc.0 = 1 And Pinc.1 = 0 And Pinc.2 = 0 And Pinc.3 = 1 Then Do jmp Prog9 Loop End If Prog0: Rot = 1 Gruen = 1 Blau = 1 jmp Anfang Prog1: Rot = 1 Gruen = 0 Blau = 0 jmp Anfang Prog2: Rot = 0 Gruen = 1 Blau = 0 jmp Anfang Prog3: Rot = 0 Gruen = 0 Blau = 1 jmp Anfang Prog4: Rot = 1 Gruen = 1 Blau = 0 jmp Anfang Prog5: Rot = 0 Gruen = 1 Blau = 1 jmp Anfang Prog6: Rot = 1 Gruen = 0 Blau = 1 jmp Anfang Prog7: jmp Anfang Prog8: jmp Anfang Prog9: jmp Anfang Loop Return MfG, neostrider
Hallo ROBERT; > Wie Kann ich jetzt Punkt 8 also die Farbkombinationen durchdimmen zähle einen Zähler hoch und übertrage den Inhalt an Port B. also: a=a+1 000 001 010 011 . . . 111 > Geschwindigkeitsabhängig von Blau nach Rot übers Tachosignal dimmen welches Tachosignal ? Otto
für die Abfrage des BCD Schalters noch eine elegantere Möglichkeit.... CASE... unter der annahme das basic sowas kann.. hoho
Hallo Robert, die "BCD-Abfrage" kannst Du auch in einer Schleife realisieren - ungefähr so (ich kenne BASCOM nicht): for bcd = 1 to 16 if pinc = bcd call bcd next Gruss Otto
Hallo Robert, Tja, aller Anfang ist im Nebel .... Ich programmiere auch mit Bascom. Gerade weil es für normale Lösungen super geeignet ist. Zum BCD Schalter: Bascom kennt den Befehl SELECT CASE <Variable> CASE 0 (alle Bits o) Code CASE 1 (Bit 0 ein) Code CASE 2 (bit 1 on) Code CASE 3 .... CASE ELSE Code für wenn nichts zutrifft END SELECT Das durchdimmen kannst Du auf verschiedene Arten realisieren. Es hängt aber von der Feinheit des Übergangs der Farben ab. Mit PWM geht das am besten. PWM heisst, dass ein im AVR enthaltener Zähler (meistens) ein PWM Signal erzeugen kann. Dazu übergibt man dem Zähler ein Pulsverhältnis irgendwo zwischen 0/100 und 100/0 Prozent. Der Zähler kann damit den Zählerausgang selbständig, das heisst ohne Software, dauerhaft mit dieser Impulssequenz ansteuern. In Bascom sieht das folgerndermassen aus: Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 Compare1a = 128 Compare1b = 128 Damit wird ein Tastverhältnis von 50% ein und 50% aus erziehlt. Mehr Info bekommst Du bei Bascom, oder bei ATMEL in den entsprechenden Dokus. Gruss Uwe
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1 hilfe... Wäre es nicht sinnvoller C zu nehmen..
Mmh also so langsam dimmts mir aber wie bekomm ich den BCD Schalter in die Case Variable ?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.