![]() |
|
|
|
|
#1 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Могу дать пример на PHP без либы
PHP код:
|
|
|
|
|
|
#2 |
|
Senior Member
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0 ![]() |
спасибо, а кнопочки добавляются на Jscript ?
|
|
|
|
|
|
#3 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Можно и html
PHP код:
Код для Arduino PHP код:
|
|
|
|
|
|
#4 | |
|
Senior Member
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0 ![]() |
а вот обнаружил еще такое..
у меня в скетче в setup есть вывод строчки, в которой я указываю версию скрипта: Цитата:
Serial.println("y ver 0.15"); то после инита # stty -F /dev/ttyACM0 raw speed 115200 -crtscts -hupcl и открытия порта # cat /dev/ttyACM0 оно не только прочитает то что было в порту - то есть строчку эту, но и ВЫПОЛНИТ команду и серв отработает: root@OpenWrt:~# cat /dev/ttyACM0 y ver 0.15 Yes! почему так ? что ему говорит что нужно прочитанные символы из порта обратно загнать в порт ? если там будет серия символов-команд, то оно их выполнит по очереди, уже проверял.. |
|
|
|
|
|
|
#5 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я привел сырой пример обмена данными
Для посылки команды нужно индетефицировать устройства как минимум по трем символам Или обмен данными по протоколу |
|
|
|
|
|
#6 |
|
Senior Member
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0 ![]() |
ну это для совсем крутых )
мне непонятно почему при чтении ИЗ порта происходит запись этих данных В этот же порт ? или как это еще можно объяснить.. |
|
|
|
|
|
#7 | |
|
Senior Member
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0 ![]() |
обнаружил еще одну проблему - arduino самостоятельно устанавливает положение сервов при запуске.
оказалось, что при открытии порта, чтобы передать ей команду, она зачемто выставляет на обоих сервах 93 градуса.. тестовый скетч: Цитата:
# screen /dev/ttyACM0 115200 и после нажатия кнопки t получаю такой вывод ttYes! 0 hr1 93 vr1 93 ну а последующие нажатия t приводят к ожидаемому: ttYes! 0 hr1 50 vr1 60 ttYes! 0 hr1 50 vr1 60 почему он вначале центрирует сервы ? как это отключить ? UPD: даже если открыть порт по другому: tail -f /dev/ttyACM0 или cat /dev/ttyACM0 я вижу что сервы устанавливаются в свои центральные значения - камера, что установлена на них направляется на одну точку.. Последний раз редактировалось d00m; 09.12.2012 в 01:38. |
|
|
|
|
|
|
#8 |
|
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
А что делает h_servo.read(); и vr = v_servo.read();
Я так понимаю эти функции считывают из буфера последния значения положения сервомоторов Так вот у тебя сначала считываются значения которые установлены по умолчанию, а только потом записываются новые значения И только на втором цикле уже считываются новые значения и т.д. |
|
|
|
|
|
#9 | |
|
Senior Member
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0 ![]() |
Цитата:
судя по коду приходит буква t и сразу считываются эти значения, сервы уже "отцентрировались" сразу после открытия порта и именно этим кодом я хотел узнать их положение: hr = h_servo.read(); Serial.print("hr1 "); Serial.println(hr); vr = v_servo.read(); Serial.print("vr1 "); Serial.println(vr); а то что потом этот код будет отбрадать значения следующих итераций - это понятно потому далее и рисует 50 и 60 |
|
|
|
|
|
|
#10 |
|
Senior Member
Регистрация: 06.11.2012
Сообщений: 153
Вес репутации: 0 ![]() |
http://arduino.cc/en/Reference/ServoRead
присваивают переменным последние значения положения сервов. |
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|