Уже не знаю что курить!
Имеется Raspberry Pi с Raspbian с установленным Python и утилитами i2c.
Собственно вопрос - как заставить работать сервомашины от этой платы, по командам от RPi по i2c.
Связь по i2c есть, плата при сбросе и подаче питания дёргает сервомашинки, но перебором передавааемых байт реакции нет.
Выполнение команды:
www-data@raspberrypi ~ $ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- 06 07 -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- 47 -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
где 0x47 - адрес платы на i2c.
мной испытано:
в Python:
bus.write_byte_data(addr, saddr, p0)
bus.write_byte_data(addr, saddr + 1, p1)
bus.write_byte_data(addr, saddr + 2, p2)
bus.write_byte_data(addr, saddr + 3, p3)
проходит нормально.
где p0-p2 параметры:
p0 - номер выхода (было испытано 0 -17; затем значения адресов из исходников)
p1 - старший байт заполнения ШИМ
p2 - младший байт заполнения ШИМ
p3 -всякие варианты (и без p3 тоже)
! по смыслу из исходников (для Arduino) делается:
Wire.write(I2Caddr);
Wire.write(Pin); - понимаю, что номер выхода
Wire.write(Vol >> 8); - понимаю как старший байт значения
Wire.write(Vol & 0xFF); - соответственно младший байт
далее команда передачи
Адрес I2C я и так указываю, ну и три параметра.
вот отрывок:
Отвечаю сам себе, но может кому интересно
Заработало:
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)