Чтож на ютуб по каким то не понятным причинам видео не грузится, поэтому загрузил на ютубру. ТОЛЬКО ЗВУК ЗАРАНЕЕ ВЫКЛЮЧИТЕ. Почему то после загрузки вместо звука шум.

pashteet писал(а):Выглядит прелесно![]()
Еще бы чуть чуть по плавнее сделать и вообще будет айс
как лучше будет управлять 3-мя дальномерами работающих на объезд препятствий. Значит 3 датчика зафиксировано на платформе один прямо другие направлены вправо и влево под углом 45. Один на подвижной туреле(движения влево-вправо, вверх-вниз, но он скорей всего будет на измерения расстояния работать, поэтому по возможности его не трогаем). С боковым всё понятно препятствие слева поворачиваем вправо и т.д. А как быть с центральным. Допустим ножка стула, не делать же отъезд назад чтоб робот поехал снова вперёд и наткнулся на эту ножку снова. А разворот лишь в одну сторону не то. Если есть идеи внимательно слушаю
) и использовать результаты накопленных в них событий... сколько до этого было поворотов направо или налево.... сколько пройдено расстояния вообще и от последнего поворота...например: если последний поворот был налево и пройдено большое расстояние (например по времени) то поворот налево ещё раз, так как впереди скорее всего стена...
ну или, как то так...
. Ну несколько не обязательно достаточно одной будет. Можно попробовать сделать переменную которая будет изменяться. Типо первый раз перед сабой видит стену, поворачивает влево и изменяет переменную с 0 на 1. А в след. раз когда увидит препятствие уже будет проверять чему равна данная переменная если 0, значит влево, если 1 значит вправо, затем обнуляем переменную.
$regfile = "m16def.dat"
$crystal = 16000000
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Pind.2 = Output : M1f Alias Portd.2
Config Pind.3 = Output : M1b Alias Portd.3
Config Pind.4 = Output : M2f Alias Portd.4
Config Pind.5 = Output : M2b Alias Portd.5
Enable Interrupts
Dim АЦП As Word , Q As Byte
Q = Inp(&H800) 'Q равняется ячеки памяти по адресу &H800
Do
If АЦП >= 500 Then
If Q = 0 Then : Gosub Разворот_вправо : End If
If Q = 1 Then : Gosub Разворот_влево : End If
Else : Gosub Вперёд : End If
Loop
Вперёд:
M1f = 1 : M2f = 1
M1b = 0 : M2b = 0
Return
Разворот_вправо:
Out &H800 , 1 ' записать 1 по адресу &H800
M1f = 1 : M2f = 0
M1b = 0 : M2b = 1
Return
Разворот_влево:
Out &H800 , 0
M1f = 0 : M2f = 1
M1b = 1 : M2b = 0
Return
:$regfile = "m16def.dat"
$crystal = 16000000
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Pind.2 = Output : M1f Alias Portd.2
Config Pind.3 = Output : M1b Alias Portd.3
Config Pind.4 = Output : M2f Alias Portd.4
Config Pind.5 = Output : M2b Alias Portd.5
Enable Interrupts
Dim АЦП As Word , Q As Bit
Q = 0
Do
Start Adc : АЦП = Getadc(2)
If АЦП >= 500 Then : Gosub Отъехать_от_препятствия_спереди : Else : Gosub Вперёд : End If
Loop
Вперёд:
M1f = 1 : M2f = 1
M1b = 0 : M2b = 0
Return
Отъехать_от_препятствия_спереди:
M1f = 0 : M2f = 0
M1b = 1 : M2b = 1
Wait 1
If Q = 0 Then
M1f = 1 : M2f = 0
Else
M2f = 1 : M1f = 0
End If
Wait 1
If Q = 0 Then
M2f = 1 : M1f = 0
Else
M1f = 1 : M2f = 0
End If
'переустанавливаем переменную
If Q = 0 Then
Q = 1
Else
Q = 0
End If
CiSi писал(а):...а что если с помощью этих дальномеров сканировать область перед роботом (или да же вокруг него)..
типа "обнюхать" и решить, что дальше делать 
просто прикольно, обнухал с двух сторон и дальше...Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0