Zitat von
Robzilla
Ich stehe gerade vor einem ähnlichen Problem. Gibt es schon eine Lösung Der Bastler?
Ja Moin Robzilla
Ich habe es Ausprobiert mit einen ATtin2313 und 4 eingänge
PORTD0 bis 3 als eingang genommen
PORTB0 Bis 7 Led als ausgänge genommen
Hier ein ausschnitt von mein programm
Code:
im Kodierschalter As Byte
Dim B As Byte
Declare Sub Prog_0
Declare Sub Prog_1
Declare Sub Prog_2
Declare Sub Prog_3
Declare Sub Prog_4
Declare Sub Prog_5
Declare Sub Prog_6
Declare Sub Prog_7
Declare Sub Prog_8
Declare Sub Prog_9
Declare Sub Prog_10
Declare Sub Prog_11
Declare Sub Prog_12
Declare Sub Prog_13
Declare Sub Prog_14
Declare Sub Fehler
Do
Kodierschalter = Pind And &B0000_1111
Select Case Kodierschalter
Case 0 : Gosub Prog_0 'LEER
Case 1 : Gosub Prog_1 'LEER
Case 2 : Gosub Prog_2 'LEER
Case 3 : Gosub Prog_3 'PORTD.0 und PORTD.1 = LICHT
Case 4 : Gosub Prog_4 'LEER
Case 5 : Gosub Prog_5 'LEER
Case 6 : Gosub Prog_6 'PORTD.0 und PORTD.3 = LED TEST
Case 7 : Gosub Prog_7 'PORTD.3 = FEIL LINKS
Case 8 : Gosub Prog_8 'LEER
Case 9 : Gosub Prog_9 'LEER
Case 10 : Gosub Prog_10 'LEER
Case 11 : Gosub Prog_11 'PORTD.2 = FEIL RECHTS
Case 12 : Gosub Prog_12 'LEER
Case 13 : Gosub Prog_13 'PORTD.1 = KTEUTZ
Case 14 : Gosub Prog_14 'PORTD.0 = LEER LASSEN Weil Platine keine led hat
Case Else : Gosub Fehler 'Ohne Funktion
End Select
Loop
Hier werden wenn ich richtig liege, 15 Programme gebraucht und wenn du siehst welchen
Prog_xx Welcher Port liegt. wenn ich richtig erklärt habe...
Den es wird nicht nur Portd >Taster< Gnd
Sondern auch
Portd > Taster< 5V+ ausgwertet
Hier kannst du es auch noch mal lesen--->
Hallo bastler,
mit drei Dipschaltern, kann man 2^3=8 binäre Kombinationen einstellen.
1. 000
2. 001
3. 010
4. 011
5. 100
6. 101
7. 110
8. 111
Dezimal sind das die Zahlen von 0 bis 7. Deshalb würde ich die Dipschalter an einen Port des µCs, beginnend mit Portpin 0, anschließen. Durch kann man die Schalter recht einfach abfragen und mit der SELECT-CASE Anweisung weiterverarbeiten.
Im Code werden durch "and &B0000_0111" nur die Zustände der Dipschalter an PINB.0, PINB.1 und PINB.2 in die Variable Kodierschalter übernommen und Bit 3 bis Bit 7 in Kodierschalter auf 0 gesetzt.
Danach einfach mit SELECT-CASE die Unterprogramme anspringen.
Code:
Dim Kodierschalter As Byte
Kodierschalter = PINB And &B0000_0111
Select Case Kodierschalter
Case 0 : Gosub Prog_0
Case 1 : Gosub Prog_1
Case 2 : Gosub Prog_2
' Case 3 : Gosub Prog_3
' Case 4 : Gosub Prog_4
Case 7 : Gosub Testlauf
' Case Else: gosub xy
End Select
Gruß
Searcher
Lesezeichen