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...
Code: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.







Zitieren

Lesezeichen