PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe bei RNControl Programmierung - IR, Porta, Getadc .. ??



nooob
02.09.2006, 14:04
hi.. nachdem heute endlich mein Programmieradapter gekommen ist hab ich ihn angeschlossen und schon mit bascom einige programme übertragen..

funzt soweit ganz gut, nur komme ich nicht darüber hinaus was anderes tun zu lassen, als BEEPs auszuspucken :-\


ich hab am analogen Port 0(gelbe Klemme) (is glaub PortA) das Sensorkabel des 10-80cm IR-Sensors von Sharp eingesteckt und auch 5V am Board abgegriffen.. das funzt soweit..

Jetzt möchte ich den µC so programmieren, dass er geradeausfährt bis zu einem hindernis.., dann anhält und nach rechts oder links dreht (egal) und dann weiterfährt wenn platz is..

gedacht hab ich mir das so:

pwm beide motoren vollgas
dann eine If abfrage für die Spannung die der Sensor am analogen Port meldet.. wenn diese Spannung größer als X ist, soll er stoppen und der eine motor vorwärts, der andere rückwärts laufen.. (Robby chassis)
das soll aber irgendwie in ne do loop schleife, damit er misst wann wieder platz is und dann aufhört zu drehen...
-> pwm beide motoren 0 --> end if

dann loop, damit es von vorne anfängt und das teil wieder geradeaus vollgas fährt...


mein "code" wenn man das so nennen kann, baut eigentlich auf dem rncontroltest.bas auf.. dem programm das schon draufgespielt war...


seid mal bitte so net und schaut drüber...



Declare Sub Batteriespannung()
Declare Sub Motortest()
Declare Sub Lauflicht()
Declare Sub Showporta()
Declare Sub Showdigitalporta()
Declare Function Tastenabfrage() As Byte


$regfile = "m32def.dat"

Dim I As Integer
Dim N As Integer
Dim Ton As Integer
Dim D As Integer

$crystal = 16000000 'Quarzfrequenz
$baud = 9600





Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung

Config Pina.1 = Input 'input sensor
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein


Const Ref = 5 / 1023 'Für Batteriespannungsberechnung

Dim Taste As Byte
Dim Volt As Single

' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8





I = 0
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 250 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print
Print "**** RN-CONTROL V1.4 *****"
Print "Das neue Experimentier- und Roboterboard"
Print
Do




Taste = Tastenabfrage()
If Taste <> 0 Then

Select Case Taste
Case 1
Call Batteriespannung 'Taste 1 Zeigt Bateriespannung über RS232 an
Case 2
Call Motortest 'Taste 2 Motoren beschleunigen und abbremsen
Case 3
Call Lauflicht 'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
Case 4
Call Showporta 'Zeigt Messwerte an allen Port A PIN´s
Case 5
Call Showdigitalporta 'Zeigt digitalen I/O Zustand von PA0 bis PA5 an



End Select
Sound Portd.7 , 400 , 500 'BEEP
End If

Waitms 100
Loop

End




'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word


Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
If Ws < 1010 Then
Select Case Ws
Case 410 To 450
Tastenabfrage = 1
Ton = 550
Case 340 To 380
Tastenabfrage = 2
Ton = 500
Case 265 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 100 To 130
Tastenabfrage = 5
Ton = 350
End Select
Sound Portd.7 , 400 , Ton 'BEEP
End If

End Function



'Diese Unterfunktion zeigt Bateriespannung an
Sub Batteriespannung()



Do

Pwm1a = 600
Pwm1b = 600



Start Adc
D = Getadc(0)
Volt = D * Ref
Volt = Volt * 5.2941

If Volt > 2 Then

Pwm1a = 0
Pwm1b = 0

Waitms 50

Portc.6 = 0
Portc.7 = 1

Portb.0 = 0
Portb.1 = 1

Pwm1a = 200
Pwm1b = 200

Wait 1

End If


Loop









End Sub
... hier steht dann noch der rest der subs.. die hab ich unverändert gelassen...



was mir noch einfällt...
mit dem multimeter hab ich spannungen von ungefähr 2,4 volt gemessen, als die hand nah vor dem sensor war..
kann ich direkt dem µc sagen dass es >2 sein soll.. es soll ja nur ungefährer abstand sein, der zum stop führen soll..
oder wie is das signal, dass der analogport bekommt??

hab leider kein RS232.. kann also auch net schauen was an den Ports anliegt.