Управляем Румбой из-под линукса
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/stat.h>
int fd;
char buf[512];
int main(void) {
port_set:
fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY | O_NDELAY);
if (fd == -1) {
printf("Error opening port.n");
} else {
// Настроим порт
struct termios options;
tcgetattr(fd, &options);
cfsetispeed(&options, B57600);
cfsetospeed(&options, B57600);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~PARODD;
options.c_cflag |= CS8;
options.c_cflag &= ~HUPCL;
options.c_cflag &= ~CSTOPB;
options.c_cflag |= CLOCAL;
tcsetattr(fd, TCSANOW, &options);
// Переведем Румбу в режим "полного послушания"
buf[0]=0x80;
write(fd, buf, 1);
sleep(1);
buf[0]=0x82;
write(fd, buf, 1);
sleep(1);
/*
// Эта последовательность скомандует Румбе ехать вперед и вперед
buf[0]=0x89;
buf[1]=0x00;
buf[2]=0xC8;
buf[3]=0x80;
buf[4]=0x00;
write(fd, buf, 5);
*/
// Эта последовательность команд заставит Румбу бегать по периметру квадрата со стороной примерно в полметра
for(;;) {
buf[0]=0x89;
buf[1]=0x01;
buf[2]=0x2C;
buf[3]=0x80;
buf[4]=0x00;
buf[5]=0x9C;
buf[6]=0x01;
buf[7]=0x90;
buf[8]=0x89;
buf[9]=0x01;
buf[10]=0x2C;
buf[11]=0x00;
buf[12]=0x01;
buf[13]=0x9D;
buf[14]=0x00;
buf[15]=0x5A;
write(fd, buf, 16);
sleep(1);
}
}
}
Откомпилировать программу можно командой
$ gcc roomba.c -o roomba
Источник:Telegamochka на ЖЖ
Похожие новости
- Как я (не) прокачивал мышление. От добродетели к творчеству.
- Партнёрство без партнёрства: как красивое слово стало маскировкой для эксплуатации
- Платёжный абсурд: как «забота о гражданах» оборачивается скрытыми налогами и возвратом к наличке
- Три ошибки технаря, который пытается вести за собой
- Почему гуманитарий не может объяснить свои выводы
- Зачем нам платят за перекладывание бумаг? Смысл бессмысленной работы
- Подданный и гражданин: налоговая анатомия неравенства
- №15 Chuyakov Project Podcast | Стихи из детства на танцполе
- Chuyakov Project Podcast #15 | Стихи из детства на танцполе
- Подданный или гражданин: в чем разница на самом деле?