Да нет же, камрады, я не про то... Как подключать ТСОП я знаю, сам под него плату разводил и пару штук спаял, один на фото как раз виднеется. Я в сомнениях как подключить 4 ТСОПа, может можно (для экономии выводов) подключить все 4 ИК-диода на один выход с МК? И как 4 входа программно обрабатывать... Мне хотя бы алгоритм, а то что-то никак тяму дать не могу (( Пока программа выглядит вот так:
- Код: Выделить всё • Развернуть
- $regfile = "m8def.dat"
 $crystal = 1000000
 
 '------------  Левый двигатель
 Config Portb.2 = Output                      '1,2EN
 Config Portd.5 = Output                      '1A
 Config Portb.0 = Output                      '2A
 
 '------------  Правый двигатель
 Config Portb.1 = Output                      '3,4EN
 Config Portd.7 = Output                      '3A
 Config Portd.6 = Output                      '4A
 
 '------------  ИК-бампер
 Config Portd.1 = Output : Ir_led Alias Portd.1       'ИК-диод
 Config Pind.0 = Input                        'TSOP
 
 '------------  Индикация
 Config Portc.5 = Output : Led Alias Portc.5  'LED
 
 Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
 
 '===========================================================================
 Set Portd.0                                  'Подтяжка TSOPa
 
 Dim I As Byte
 
 Gosub Left_forward
 Gosub Right_forward
 
 Pwm1a = 180 : Pwm1b = 170                    'Задаём скорость
 
 Do
 Gosub Tsop
 
 If Pind.0 = 0 Then
 Waitms 50
 Gosub Tsop
 If Pind.0 = 0 Then
 Set Led
 Gosub Left_backward
 Gosub Right_backward
 Wait 1
 Gosub Left_stop
 Pwm1a = 255 : Pwm1b = 255
 Waitms 600                             'Время поворота
 Pwm1a = 180 : Pwm1b = 170
 End If
 End If
 Reset Led
 Gosub Left_forward
 Gosub Right_forward
 Loop
 
 End
 
 Left_forward:
 Reset Portd.5
 Set Portb.0
 Return
 
 Right_forward:
 Reset Portd.7
 Set Portd.6
 Return
 
 Left_backward:
 Set Portd.5
 Reset Portb.0
 Return
 
 Right_backward:
 Set Portd.7
 Reset Portd.6
 Return
 
 Left_stop:
 Reset Portd.5
 Reset Portb.0
 Return
 
 Tsop:
 For I = 1 To 19
 Set Ir_led
 Waitus 18
 Reset Ir_led
 Waitus 18
 Next
 Return