Stas
07.06.2010, 17:40
Hallo,
was muss an diesem Quelltext geändert werden, damit die Ausgabe über LC-Display auf einem M32 Board erfolgt?
'################################################# ##
'# ultraschall.bas #
'################################################# ##
'#Dieses Programm demonstriert die Verwendung #
'#des Ultraschall Entfernungssensors SRF05 #
'#mit dem Controllerboard RN-Control #
'# #
'#Aufgabe: #
'#Entfernung wird gemessen und in Zentimetern über #
'#RS232 ausgegeben #
'################################################# ##
$regfile = "m32def.dat" ' Bestimmung des Prozessors
$crystal = 16000000 ' Quarzfrequenz
$baud = 9600 ' RS232-Uebertragungsrate
$hwstack = 32
$framesize = 32
$swstack = 32
Dim Zeitmessung As Word
Dim Entfernung As Word
Print "**** SRF05 mit RN-MINICONTROL *****"
Print "Entfernung in cm anzeigen"
' Der Ultraschallsensor wird am Port A Pin 7 angeschlossen
Config Pina.7 = Output ' Bestimme den Anschluss des Sensors und setze ihn auf Output
Do
Porta.7 = 0 'Port Low
Pulseout Porta , 7 , 40 '10uS Impuls bei 4 MHz senden (10*4=40)
Pulsein Zeitmessung , Pina , 7 , 1 ' Den Puls wieder empfangen
Zeitmessung = Zeitmessung * 10 'mal 10 da Pulsein in 10uS Einheiten Ergebnis ermittelt
'Echo-Impuls ist 100uS bis 25 mS lang. Über 30 mS bedeutet, dass kein Objekt im Bereich ist.
' Um eine Messung zu starten, wird ein Impuls von 10 us an den Triggereingang gelegt.
' Der Wandler wird darufhin für 200 us (8 Zyklen mit je 40 KHz) getaktet. Der Echo-Ausgang geht auf High.
' Das erste hereinkommende Echo schaltet den Echo-Ausgang wieder auf Low.
' Die Entfernung ergibt sich rechnerisch als Produkt aus der Schallgeschwindigkeit (344 m/s in Luft bei 21 Grad Celsius)
' und der Länge des Echoimpulses. Da die Streckes des Schalls doppelt zurück gelegt wird, ist das Ergebnis
' durch 2 zu dividieren.
' s[m] = 344 m/s * t[s] / 2
' ==> s[m] = 172 m/s * t[s]
' Je nach Genauigkeit sind Vereinfachungen möglich und Sinnvoll
' s[cm] = 172 * t[us] / 10000
' ==> s[cm] = t / (10000 / 172)
' ==> s[cm] = t / 58,14
Entfernung = Zeitmessung / 58 'Umrechnen in Zentimeter
' Beträgt die Entfernung einen Abstand von mehr als 10 cm, dann gib zwei Töne aus.
If Entfernung = 0 Then
Print "Sensor not activ!"
End If
If Entfernung > 10 Then
Sound Portd.7 , 400 , 450
Waitms 5
Sound Portd.7 , 400 , 600
Waitms 5
End If
If Entfernung = 0 Then
Print "Sensor not activ!"
End If
Print "Entfernung: " ; Entfernung ; " cm"
Wait 1
Loop
[/code]
was muss an diesem Quelltext geändert werden, damit die Ausgabe über LC-Display auf einem M32 Board erfolgt?
'################################################# ##
'# ultraschall.bas #
'################################################# ##
'#Dieses Programm demonstriert die Verwendung #
'#des Ultraschall Entfernungssensors SRF05 #
'#mit dem Controllerboard RN-Control #
'# #
'#Aufgabe: #
'#Entfernung wird gemessen und in Zentimetern über #
'#RS232 ausgegeben #
'################################################# ##
$regfile = "m32def.dat" ' Bestimmung des Prozessors
$crystal = 16000000 ' Quarzfrequenz
$baud = 9600 ' RS232-Uebertragungsrate
$hwstack = 32
$framesize = 32
$swstack = 32
Dim Zeitmessung As Word
Dim Entfernung As Word
Print "**** SRF05 mit RN-MINICONTROL *****"
Print "Entfernung in cm anzeigen"
' Der Ultraschallsensor wird am Port A Pin 7 angeschlossen
Config Pina.7 = Output ' Bestimme den Anschluss des Sensors und setze ihn auf Output
Do
Porta.7 = 0 'Port Low
Pulseout Porta , 7 , 40 '10uS Impuls bei 4 MHz senden (10*4=40)
Pulsein Zeitmessung , Pina , 7 , 1 ' Den Puls wieder empfangen
Zeitmessung = Zeitmessung * 10 'mal 10 da Pulsein in 10uS Einheiten Ergebnis ermittelt
'Echo-Impuls ist 100uS bis 25 mS lang. Über 30 mS bedeutet, dass kein Objekt im Bereich ist.
' Um eine Messung zu starten, wird ein Impuls von 10 us an den Triggereingang gelegt.
' Der Wandler wird darufhin für 200 us (8 Zyklen mit je 40 KHz) getaktet. Der Echo-Ausgang geht auf High.
' Das erste hereinkommende Echo schaltet den Echo-Ausgang wieder auf Low.
' Die Entfernung ergibt sich rechnerisch als Produkt aus der Schallgeschwindigkeit (344 m/s in Luft bei 21 Grad Celsius)
' und der Länge des Echoimpulses. Da die Streckes des Schalls doppelt zurück gelegt wird, ist das Ergebnis
' durch 2 zu dividieren.
' s[m] = 344 m/s * t[s] / 2
' ==> s[m] = 172 m/s * t[s]
' Je nach Genauigkeit sind Vereinfachungen möglich und Sinnvoll
' s[cm] = 172 * t[us] / 10000
' ==> s[cm] = t / (10000 / 172)
' ==> s[cm] = t / 58,14
Entfernung = Zeitmessung / 58 'Umrechnen in Zentimeter
' Beträgt die Entfernung einen Abstand von mehr als 10 cm, dann gib zwei Töne aus.
If Entfernung = 0 Then
Print "Sensor not activ!"
End If
If Entfernung > 10 Then
Sound Portd.7 , 400 , 450
Waitms 5
Sound Portd.7 , 400 , 600
Waitms 5
End If
If Entfernung = 0 Then
Print "Sensor not activ!"
End If
Print "Entfernung: " ; Entfernung ; " cm"
Wait 1
Loop
[/code]