Возникла интересная задача - подключить к контроллеру ROBO TX несколько обычных рулевых машинок так, чтобы ими можно было управлять из программы, созданной в ROBO Pro. Опишу решение, которое у меня получилось.
У контроллера ROBO TX нет штатных средств для управления rc-сервомашинками. Поэтому для решения задачи нам понадобится некое промежуточное устройство, которое будет принимать команды от ROBO TX и выдавать на рулевые машинки нужные сигналы управления. У меня на столе лежала не пристроенная Arduino UNO, поэтому я долго не раздумывал над выбором железки для этой задачи.
Подключение
Arduino в моем решении подключается к ROBO TX через интерфейс I2C, доступный через разъем EXT2. Назначение контактов разъема EXT2 показано на рисунке ниже:
На плате Arduino UNO интерфейс I2C выведен на следующие пины: A4 (SDA), A5 (SCL).
Четыре стандартные рулевые машинки я подключил к выходам Arduino D6, D9, D10 и D11.
Программа
Скетч для Arduino, который принимает команды через I2C и выдает управляющие сигналы на рулевые машинки, написан с использованием двух библиотек - Wire и Servo. Он настолько простой, что все понятно из исходного кода:
Код: Выделить всё
//
// Created: 2012-12-05
// Author: Mr. Kubikus
//
#include <Wire.h>
#include <Servo.h>
Servo myservo[4];
int pos[4]; // variable to store the servo position
void setup()
{
myservo[0].attach(6); // Servo connected to D6
myservo[1].attach(9); // D9
myservo[2].attach(10); // D10
myservo[3].attach(11); // D11
delay(1000);
Wire.begin(4); // join i2c bus with address #4
Wire.onReceive(receiveEvent); // register event
Serial.begin(9600); // start serial for output
}
void loop()
{
for(int ii = 0; ii < 4; ii++) {
myservo[ii].write(pos[ii]);
}
delay(100);
}
void receiveEvent(int howMany)
{
int ii = 0;
while(Wire.available() > 0)
{
pos[ii] = Wire.read();
Serial.print(pos[ii]);
Serial.print(" ");
ii+=1;
}
Serial.println(";");
}
Свойства программных элементов I2C Write №1-3:
Свойства программного элемента I2C Write №4:
Ссылки
Библиотека Wire
Библиотека Servo
Демонстрационная версия среды fischertechnik ROBO Pro