Hallo, erstmal im Vorraus danke das Sie versuchen mir zu helfen. Nun zu meinem Problem: Ich habe einen Taster über den Port PA7/ADC7 an den Atmega32L angeschlossen. Nun möchte ich, auf meiner Platine eine Led zu testzwecken laufenlassen. Das Problem ist allerdings die Umsetzung in Bascom. Ich möchte z.b. wenn ich den Taster drücke, das danach die Led an Pin PC6 angeht. Es ist nur ein Taster an den ADC angeschlossen. Hier einmal das Programm: $regfile = "m32def.dat" Config Adc = Single , Prescaler = Auto Start Adc Dim Sensor As Word Sensor = Getadc(1) Config Portc.6 = Output Do If Sensor > 500 Then Portc.6 = 1 Else Portc.6 = 0 End If Loop End -------------------------------------------------------------- Vielen Dank für Ihre Hilfe. Ps: Wenn sie noch weitere Informationen brauchen fragen sie ruhig. Mit freundlichen Grüßen Jannis
Do Sensor = Getadc(1) If Sensor > 500 Then Portc.6 = 1 Else Portc.6 = 0 End If Loop End
Hallo, vielen Dank ersteinmal für Ihre hilfe. Leider funktioniert es noch nicht. Da die gewünschte Led immer noch nicht eingeschaltet wird. Nur wenn der Atmega32l einmal an den Strom angeschlossen wird leuchtet sie kurz auf. Ist eventuell der Wert 500 falsch? Der Stromverlauf ist ja so: Eine Leitung vom ADC zum Taster und eine 5Volt Spannung die mit einem 10 Kilo-Ohm Widerstand nahezu neutralisiert wird. Wenn der Taster gedrückt wird, dann ist er mit dem Ground verbunden.
Jannis P. schrieb: > falsch? Der Stromverlauf ist ja so: Eine Leitung vom ADC zum Taster und > eine 5Volt Spannung die mit einem 10 Kilo-Ohm Widerstand nahezu > neutralisiert wird. Wenn der Taster gedrückt wird, dann ist er mit dem > Ground verbunden. neutralisiert????? Schaltplan!!! als Bild!
Ja, beim Reset Taster hat es so funktioniert. Leider bin ich nicht so bewandert in diesem Bereich. Warscheinlich hätte man sich die 5 Volt Leitung sparen können. Einfach ADC -> Taster -> Ground oder?
Hab das obige Problem jetzt gelöst. Habe aber noch ein anderes. Ich würde jetzt gerne mit dem Atmega32l und 7 an ADC0 angeschlossenen Tastern die Led-Matrix steuren. Ersteinmal der Code: x ist der Wert den ich noch ausrechnen muss. $regfile = "m32def.dat" Config Portc = Output Config Portd = Output Config Portb = Output Disable Jtag Config Adc = Single , Prescaler = Auto Start Adc Dim Sensor As Word Do Sensor = Getadc(0) If Sensor < X Then 'Taster 7 Portc.5 = 1 Portd.0 = 1 Elseif Sensor < X Then 'Taster 6 Portc.5 = 1 Portd.1 = 1 Elseif Sensor < X Then 'Taster 5 Portc.5 = 1 Portd.2 = 1 Elseif Sensor < X Then 'Taster 4 Portc.5 = 1 Portd.3 = 1 Elseif Sensor < X Then 'Taster 3 Portc.5 = 1 Portd.4 = 1 Elseif Sensor < X Then 'Taster 2 Portc.5 = 1 Portd.5 = 1 Elseif Sensor < X Then 'Taster 1 Portc.5 = 1 Portd.6 = 1 Else Portc = 0 Portd = 0 End If Loop End ------------------------------------------------ Das Problem ist jetzt X auszurechnen. Mein Netzteil hat 9V und 400mA Spannungsregler: µA 7805 :: Spannungsregler 1,5A positiv, TO-220 bei Ausgangsspannung: 4,8…5,2 VDC Reichelt.de Muss ich jetzt um X auszurechnen die am ADC Pin anliegende Spannung mal die Versorgungsspannung (4,8 - 5,2) rechnen und das dann durch 1024 teilen? Vielen Dank für eine Antwort.
Hab die Werte jetzt, aber es leuchtet immer nur die Led für Taster 7, wenn ich die anderen Taster drücke. Was ist im Code falsch?
1 | |
2 | $regfile = "m32def.dat" |
3 | Config Portc = Output |
4 | Config Portd = Output |
5 | Config Portb = Output |
6 | |
7 | Disable Jtag |
8 | |
9 | Config Adc = Single , Prescaler = Auto |
10 | |
11 | Start Adc |
12 | |
13 | Dim Sensor As Word |
14 | |
15 | |
16 | |
17 | |
18 | Do |
19 | |
20 | Sensor = Getadc(0) |
21 | |
22 | If Sensor < 900 Then 'Taster 7 |
23 | Portc.5 = 1 |
24 | Portd.0 = 1 |
25 | |
26 | Elseif Sensor < 750 Then 'Taster 6 |
27 | Portc.5 = 1 |
28 | Portd.1 = 1 |
29 | |
30 | Elseif Sensor < 600 Then 'Taster 5 |
31 | Portc.5 = 1 |
32 | Portd.2 = 1 |
33 | |
34 | Elseif Sensor < 450 Then 'Taster 4 |
35 | Portc.5 = 1 |
36 | Portd.3 = 1 |
37 | |
38 | Elseif Sensor < 325 Then 'Taster 3 |
39 | Portc.5 = 1 |
40 | Portd.4 = 1 |
41 | |
42 | Elseif Sensor < 175 Then 'Taster 2 |
43 | Portc.5 = 1 |
44 | Portd.5 = 1 |
45 | |
46 | Elseif Sensor < 25 Then 'Taster 1 |
47 | Portc.5 = 1 |
48 | Portd.6 = 1 |
49 | |
50 | |
51 | Else |
52 | Portc = 0 |
53 | Portd = 0 |
54 | |
55 | End If |
56 | Loop |
57 | |
58 | End |
Taster Testlauf:
1 | ' ADC 7 Taster Testlauf |
2 | |
3 | $regfile = "m32def.dat" |
4 | Config Portc = Output |
5 | Config Portd = Output |
6 | Config Portb = Output |
7 | Disable Jtag |
8 | Config Adc = Single , Prescaler = Auto |
9 | Start Adc |
10 | Dim Sensor As Integer |
11 | |
12 | Do |
13 | Portc.7 = 1 |
14 | Sensor = Getadc(0) |
15 | |
16 | If Sensor > 0 Then |
17 | |
18 | Select Case Sensor |
19 | |
20 | Case Is < 25 'Taster 1 |
21 | Portc.5 = 1 |
22 | Portd.6 = 1 |
23 | |
24 | Case Is < 175 'Taster 2 |
25 | Portc.5 = 1 |
26 | Portd.5 = 1 |
27 | |
28 | Case Is < 325 'Taster 3 |
29 | Portc.5 = 1 |
30 | Portd.4 = 1 |
31 | |
32 | Case Is < 450 'Taster 4 |
33 | Portc.5 = 1 |
34 | Portd.3 = 1 |
35 | |
36 | Case Is < 600 'Taster 5 |
37 | Portc.5 = 1 |
38 | Portd.2 = 1 |
39 | |
40 | Case Is < 750 'Taster 6 |
41 | Portc.5 = 1 |
42 | Portd.1 = 1 |
43 | |
44 | Case Is < 900 'Taster 7 |
45 | Portc.5 = 1 |
46 | Portd.0 = 1 |
47 | |
48 | End Select |
49 | End If |
50 | |
51 | Loop |
52 | End |
------------------------------------------------------------------------ Starttaster Testlauf:
1 | ' Spieleanzeige Testlauf |
2 | |
3 | $regfile = "m32def.dat" |
4 | |
5 | |
6 | Config Adc = Single , Prescaler = Auto |
7 | |
8 | Start Adc |
9 | |
10 | Dim Sensor As Integer |
11 | |
12 | |
13 | Config Portc.6 = Output |
14 | |
15 | |
16 | Do |
17 | Sensor = Getadc(7) |
18 | If Sensor < 500 Then |
19 | Portc.6 = 1 |
20 | Else |
21 | Portc.6 = 0 |
22 | End If |
23 | |
24 | Loop |
25 | |
26 | End |
------------------------------------------------------------------
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.