Hi, so, nun melde ich mich nochmal zu Wort
Also passt auf. Mein Sensor funktioniert soweit, nurhab ich wohl noch das gleiche Problem wie Lenox, dass meine Werte Springen, und auch über 256 hinausgehen. Eigendlich hab ich ja die Zeile so angegeben, wieso er das nicht macht ist mir eigendlich unklar. Ich werde es einfach nochmal aufspielen, vielleicht hab ich was falsch gemacht.
Nun habe ich aber noch ein anderes Problem.
Ich möchte, dass mir die Gradanzahl ausgegeben wird, d.h. ich benötige eine Kleine Rechnung in meinem Code, die er jedoch als falsch erkennt.
Als Fehlermeldung bekomm ich "Source variable does not match the target variable" das bezieht sich auf die Zeile: Grad = Sensor *(360 / 1024)
Schaut es euch einfach mal an
Code:
'Erster Test des Displays Wintek 27 * 4 von Pollin
'Besondere Lernleistung von Felix König
$regfile = "m168def.dat"
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
'$hwstack = 32
'$framesize = 32
'$swstack = 32
'Die üblichen Definitionen bei Standardprogrammen auf Miniboard
Config Lcd = 40 * 4 'Bascom kennt keine Display mit 27 * 4 Zeichen,
'daher 40 * 4 verwenden
Config Lcdpin = Pin , Db4 = Portb.5 , Db5 = Portb.0 , Db6 = Portd.7 , Db7 = Portd.6 , E = Portb.3 , E2 = Portc.3 , Rs = Portd.3 , 'Rw = Portc.2
'man achte auf die Ergänzung E2
Dim ___lcdno As Byte ' Systemvariable der LCD-Bibliothek
___lcdno = 0 ' wählt den ersten Chip aus
Initlcd 'die beiden oberen Zeilen initialisieren
Cls 'die beiden oberen Zeilen löschen
___lcdno = 1 'auf Chip 2 schalten
Initlcd 'die beiden unteren Zeilen initialisieren
Cls 'die beiden unteren Zeilen löschen
___lcdno = 0 ' wählt die obere Zeile aus
Locate 1 , 1 ' schreibt in die erste Zeile an Position 1
Lcd " Besondere Lernleistung "; ' den Text in Anführungszeichen
Locate 2 , 1 ' schreibt in die zweite Zeile an Position 1
Lcd " von Felix Koenig 13 BGD"
Cursor Off ' unterdrückt den Cursor
___lcdno = 1 ' wählt die beiden unteren Zeilen aus
Locate 1 , 1
Lcd "Windrichtung : ";
Locate 2 , 1
Lcd "Grad : "
Cursor Off ' unterdrückt den Cursor
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Konfiguriert den AD Wandler
Start Adc 'Startet den AD Wandler
Config Pinc.2 = Input 'ADC 2 an Ctrl
Dim Sensor As Byte 'Deklariert "Sensor" als Byte
Dim Grad As Byte 'Deklariert die Gradvariable "Grad" als Byte
Do ' Beginnt die Abfrageschleife zur Werteerfassung
Sensor = Getadc(2) ' Der AD Wert wird am Pin C2 abgelesen und in die Veriable "Sensor" geschrieben
Grad = Sensor *(360 / 1024)
'Print "Sensor " ; Sensor
___lcdno = 1 'wählt die unteren 2 Zeilen aus
If Grad = 0 Then '
Locate 2 , 8
Lcd "0° / 360°"
Else
Locate 2 , 8
Lcd Grad ; "°"
End If
Waitms 500 '500 ms Wartezeit zwischen der Abfragewiederholung
Loop 'Ende der Abfrageschleife, Sprung zum Anfang der Schleife
End 'Programmende
Vieleicht könnt ihr mir ja noch so einen wunderbaren und hilfreichen tipp geben.
Viele Grüße Felix
Lesezeichen