Уже не знаю что курить!
Имеется 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 я и так указываю, ну и три параметра.
вот отрывок:
Код
do {
Wire.beginTransmission(twiAddress);
Wire.write(pin);
Wire.write(pulseWidth >> 8);
Wire.write(pulseWidth & 0xFF);
errorCode = (Error)Wire.endTransmission();
} while (errorCode && --retryAttempts);
Испробован и блочный режим посылки.
уже курил обрывки из Arduino, для чего плата и предназначена (но по i2c)
понять не могу в какой последовательности что и куда передавать, хотя пытаюсь исходя из некоторых исходников. вторые сутки пошли уже.
кстати адреса 0x06 и 0x07 платы ComMotion motor driver на работу с ней только один деь потребовался.
простите если не в тот раздел написал, но всётаки буду применять Raspberry а не Arduino.
Сообщение отредактировал Paramon - May 4 2016, 06:15