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.