derSpinner
28.04.2014, 14:13
Hey Leute.
Nach den ersten Spielereien mit blinkenden LEDs und einem eigenständig erstellten Ampelprogramm wollte ich jetzt mal die Potis nutzen. Allerdings komme ich gerade nicht weiter und bin ratlos... In meiner Schaltung ändert sich rein gar nichts durch Betätigung des Poti1.
(Diese Frage habe ich bereits "Noob will in Microcontrollerprogrammierung + Roboterbau einsteigen - Anfängerfragen" gepostet, allerdings scheint da niemand reinzugucken und ich habe bisher keine Hilfe bekommen - hoffe mit einem neuem Thread hierfür sehen es mehr Member. Sry für den Doppelpost, aber ich habe viel gelesen und gesucht und komme einfach nich weiter).
Hier mein Board (myAVR light):
28099
Ich habe Pot.1 an PortD.2 angeschlossen. Nach meinen Recherchen muss man nun dem µC sagen, dass er an PortD.2 die Spannung abgreifen soll. Dies geschieht mit dem Befehl "Getadc([Zahl])". [Zahl] ist dabei der entsprechende Port. Laut Datenblatt unterstützt das verwendete Board ADC-Abgriffe an den Ports 1-7. Ich vermute, dass damit die Zahl der Durchnummerierung der Ports gemeint ist - PortD.2 ist dann Laut Datenblatt Port 1, also heißt der Befehl bei mir: "Getadc(1)" - soweit richtig?
Hier ist mein Beispielprogramm, das die drei LEDs durchlaufen lassen soll, wobei man mit dem Poti1 die Leuchtdauer (also die Geschwindigkeit des LED-Durchlaufs) einstellen können sollte:
' BASCOM-Programm
' Stefan Hoffmann 2009
' Poti-Spannungsteiler an ADC1 5V -- Poti -- Masse
'Poti z.B. 47k
' oder
' LDR-Spanungsteiler an ADC1 5V -- LDR --+-- 10k -- Masse
'
'
' In: B.2: Poti-Mittelabgriff
' oder LDR-Spannungsteiler an ADC1
' Out: LED C.4 (rot) hoch
' Led C.2 (grün) Mittel
' LED C.3 (gelb)niedrig
'
$regfile = "m8adef.dat"
$crystal = 1200000
Config Portd.2 = Input 'Poti/LDR
Config Portc.4 = Output 'LED rot
Config Portc.2 = Output 'LED gruen
Config Portc.3 = Output 'LED gelb
Ledrot Alias Portc.4
Ledgruen Alias Portc.2
Ledgelb Alias Portc.3
Dim Analogwandler As Integer 'Variable zur Aufnahme des Wertes vom Analogwandler
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Analogwandler definieren
'Start Adc 'AD-Wandler starten (nach Config automatisch)
Do
Analogwandler = Getadc(1) 'AD-Wandler einlesen. Werte zwischen 0 und 1023
Analogwandler = Analogwandler
Ledrot = 0
Ledgruen = 0
Ledgelb = 1
Waitms Analogwandler
Ledrot = 0
Ledgruen = 1
Ledgelb = 0
Waitms Analogwandler
Ledrot = 1
Ledgruen = 0
Ledgelb = 0
Waitms Analogwandler
Loop
End
Bei mir bleibt die Durchlaufgeschwindigkeit aber immer gleich. Es ändert sich nichts durch drehen an dem Poti1.
Noch eine Frage dazu: Wozu ist auf dem Board der Anschluss AREF? Der muss doch auch etwas mit dem Poti zu tun haben???
Nach den ersten Spielereien mit blinkenden LEDs und einem eigenständig erstellten Ampelprogramm wollte ich jetzt mal die Potis nutzen. Allerdings komme ich gerade nicht weiter und bin ratlos... In meiner Schaltung ändert sich rein gar nichts durch Betätigung des Poti1.
(Diese Frage habe ich bereits "Noob will in Microcontrollerprogrammierung + Roboterbau einsteigen - Anfängerfragen" gepostet, allerdings scheint da niemand reinzugucken und ich habe bisher keine Hilfe bekommen - hoffe mit einem neuem Thread hierfür sehen es mehr Member. Sry für den Doppelpost, aber ich habe viel gelesen und gesucht und komme einfach nich weiter).
Hier mein Board (myAVR light):
28099
Ich habe Pot.1 an PortD.2 angeschlossen. Nach meinen Recherchen muss man nun dem µC sagen, dass er an PortD.2 die Spannung abgreifen soll. Dies geschieht mit dem Befehl "Getadc([Zahl])". [Zahl] ist dabei der entsprechende Port. Laut Datenblatt unterstützt das verwendete Board ADC-Abgriffe an den Ports 1-7. Ich vermute, dass damit die Zahl der Durchnummerierung der Ports gemeint ist - PortD.2 ist dann Laut Datenblatt Port 1, also heißt der Befehl bei mir: "Getadc(1)" - soweit richtig?
Hier ist mein Beispielprogramm, das die drei LEDs durchlaufen lassen soll, wobei man mit dem Poti1 die Leuchtdauer (also die Geschwindigkeit des LED-Durchlaufs) einstellen können sollte:
' BASCOM-Programm
' Stefan Hoffmann 2009
' Poti-Spannungsteiler an ADC1 5V -- Poti -- Masse
'Poti z.B. 47k
' oder
' LDR-Spanungsteiler an ADC1 5V -- LDR --+-- 10k -- Masse
'
'
' In: B.2: Poti-Mittelabgriff
' oder LDR-Spannungsteiler an ADC1
' Out: LED C.4 (rot) hoch
' Led C.2 (grün) Mittel
' LED C.3 (gelb)niedrig
'
$regfile = "m8adef.dat"
$crystal = 1200000
Config Portd.2 = Input 'Poti/LDR
Config Portc.4 = Output 'LED rot
Config Portc.2 = Output 'LED gruen
Config Portc.3 = Output 'LED gelb
Ledrot Alias Portc.4
Ledgruen Alias Portc.2
Ledgelb Alias Portc.3
Dim Analogwandler As Integer 'Variable zur Aufnahme des Wertes vom Analogwandler
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Analogwandler definieren
'Start Adc 'AD-Wandler starten (nach Config automatisch)
Do
Analogwandler = Getadc(1) 'AD-Wandler einlesen. Werte zwischen 0 und 1023
Analogwandler = Analogwandler
Ledrot = 0
Ledgruen = 0
Ledgelb = 1
Waitms Analogwandler
Ledrot = 0
Ledgruen = 1
Ledgelb = 0
Waitms Analogwandler
Ledrot = 1
Ledgruen = 0
Ledgelb = 0
Waitms Analogwandler
Loop
End
Bei mir bleibt die Durchlaufgeschwindigkeit aber immer gleich. Es ändert sich nichts durch drehen an dem Poti1.
Noch eine Frage dazu: Wozu ist auf dem Board der Anschluss AREF? Der muss doch auch etwas mit dem Poti zu tun haben???