-
-
Neuer Benutzer
Öfters hier
'Abstandsmesser mit dem ACS-System
'Timer_T3PWM(Par1,Par2,PS);
'Period = Par1*PS/FOSC (51*8/14,7456MHz=27,66 µs) = 36Khz
'Pulse = Par2*PS/FOSC (25*8/14,7456MHz=13,56 µs) On Time
'Timer_T3PWM(Word period,Word PW0,Byte PS) '36Khz
'Mit Par1, Par2 kann die Entfernung eingestellt werden
'ACS (Anit-Collisions-System)
#define PWM_IR 35
#define IR_left 27
#define IR_right 29
#define TSOP 26
'Rangefinder Parameter
#define TSOP_sensity 6
#define TSOP_increase 2
Dim range_left As Byte
Dim loop_cnt As Integer
Sub main()
PRO_BOT128_INIT()
'IR-LEDs aus!
Port_WriteBit(IR_left,PORT_OFF)
Port_WriteBit(IR_right,PORT_OFF)
DELAY_MS(100)
'Abszandsmessung mit den linken IR-Dioden!!!
For loop_cnt = 1 To 10
'PWM neu stellen von ca. 28 bis 36Khz (51 = 36Khz)
Timer_T3PWM(62-loop_cnt,TSOP_sensity+(loop_cnt/TSOP_increase),PS_
'linke IR-LED ein
Port_WriteBit(IR_left,PORT_ON)
Port_WriteBit(IR_right,PORT_OFF)
DELAY_MS(1)
range_left = Port_ReadBit(TSOP)
DELAY_MS(1)
Port_WriteBit(IR_right,PORT_OFF) 'aus
Port_WriteBit(IR_left,PORT_OFF)
DELAY_MS(1)
'Ausgabe der Entfernung
If range_left = 0 Then
Msg_WriteWord(loop_cnt)
Msg_WriteChar(13)
Turn_Left()
Exit
End If
Next
'objekt zuweit entfernt = 255
If range_left = 1 Then
Msg_WriteWord(255)
Msg_WriteChar(13)
End If
End Sub
Sub Turn_Left() 'Turn left
Timer_T1PWA(30)
Timer_T1PWB(180)
AbsDelay(150)
End Sub
so sieht mein programm bislang aus.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen