Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.12.2016, 21:50   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Модуль "CyberBot-3"

В планах добавить кнопку "Авто"-это автоматический режим движения по УЗД сенсору
Еще можно добавить голосовое озвучка текстов, отправленных со стороны управления
Что то вроде обратной связи.

P.S.
У меня пока нет идей, что бы что то особенное добавить
Admin вне форума   Ответить с цитированием
Старый 28.02.2017, 16:48   #2
anatoliylagutenko
Member
 
Регистрация: 12.01.2016
Адрес: Кривой Рог
Сообщений: 36
Вес репутации: 0
anatoliylagutenko is an unknown quantity at this point
Cool Re: Модуль "CyberBot-3"

Цитата:
Сообщение от Admin Посмотреть сообщение
В планах добавить кнопку "Авто"-это автоматический режим движения по УЗД сенсору
Еще можно добавить голосовое озвучка текстов, отправленных со стороны управления
Что то вроде обратной связи.

P.S.
У меня пока нет идей, что бы что то особенное добавить
Я на меге на гуляющиий rx tx повесил плеер с записанными голосовыми фрагментами. В скетче прописал все возможные варианты воспроизведения команд. Добавил голосовое распознавание. Которое так же управляет воспроизведением фрагментов звука. И на ругательное слово "Эй железяка", отвечает как его зовут на самом деле. И остальные команды распознавателя так же что делают. Скажем так, минимальный диалог можно продумать.
anatoliylagutenko вне форума   Ответить с цитированием
Старый 03.04.2017, 09:41   #3
djam700
Junior Member
 
Регистрация: 01.04.2016
Сообщений: 2
Вес репутации: 0
djam700 is an unknown quantity at this point
По умолчанию

#include <CyberLib.h>
#include <Servo.h>
#include <AFMotor.h> // Подключаем библиотеку для управления двигателями

AF_DCMotor motor1(1); //создаем мотор №1
AF_DCMotor motor2(2); //создаем мотор №2
AF_DCMotor motor3(3); //создаем мотор №1
AF_DCMotor motor4(4); //создаем мотор №2
Servo myservo1;
Servo myservo2;
#define step_servo 10 //минимальный угол поворота ссервы за один клик
uint8_t min_pos=10, max_pos=170; //минимальное и максимаьное положение сервы
int i=130, i2=90; //начальное положение сервы

boolean light_stat; //состояние фар
uint8_t inByte, packid;
uint8_t speed=255; //максимальная скорость моторов по умолчанию

#define init {D3_Out; D4_Out; D5_Out; D6_Out; D7_Out; D9_Out; D10_Out; D11_Out;} //используемые порты

void setup()
{
Serial.begin(57600); //включаем передачу данных на скорости 9600 бит/c
motor1.setSpeed(255); //Скорость движка №1
motor2.setSpeed(255); //Скорость движка №2
motor3.setSpeed(255); //Скорость движка №1
motor4.setSpeed(255); //Скорость движка №2
myservo1.attach(9); // Подключение сервоприводов к порту
myservo2.attach(10); // Подключение сервоприводов к порту
myservo2.write(i2); // начальное положение сервы(горизот) при включении
myservo1.write(i); // начальное положение сервы(вертикаль) при включении
init; // Инициализация портов
D11_Low; // Динамик OFF
randomSeed(A5_Read); //Получить случайное значение
horn(); //звуковое оповещение готовности робота
UART_Init(57600); // Инициализация порта для связи с роутером
//wdt_enable (WDTO_500MS);
}

void loop()
{
if (UART_ReadByte(inByte))
{
if ( packid == 16 ) // контрольная сумма команды cm=
{
packid=0;
switch (inByte) // Смотрим какая команда пришла
{
case 'x': // Остановка робота
robot_stop();
break;

case 'W': // Движение вперед
robot_go();
break;

case 'D': // Поворот вправо
robot_rotation_left();
break;

case 'A': // Поворот влево
robot_rotation_right();
break;

case 'S': // Движение назад
robot_back();
break;

case 'U': // Серва поднимается
if(i > min_pos) myservo1.write(i -= step_servo);
break;

case 'J': // Серва опускается
if(i < max_pos) myservo1.write(i += step_servo);
break;

case 'K': // Серва поворачивается вправо
if(i2 > min_pos) myservo2.write(i2 -= step_servo);
break;

case 'H': // Серва поворачивается влево
if(i2 < max_pos) myservo2.write(i2 += step_servo);
break;

case 'B': // Бластер
D10_High;
break;

case 'C': // Клаксон
horn();
break;

case ']': // запрос состояния аналоговых датчиков
byte2char(A6_Read,A7_Read);
break;

case 'V': // Включить/Выключить фары
if(light_stat)
{
D9_Low;
light_stat=false;
} else
{
D9_High;
light_stat=true;
}
break;
}
if(inByte>47 && inByte<58) speed=(inByte-47)*17+85; //скорость вращения колес

} else packet_id(inByte);
}
// wdt_reset();
}

//**************************************** ************
void horn()
{
for(uint8_t i=0; i<12; i++) beep(70, random(100, 2000)); //звуковое оповещение
}

void robot_go()
{
motor1.run(FORWARD); //движемся вперед
motor2.run(FORWARD); //движемся вперед
motor3.run(FORWARD); //движемся вперед
motor4.run(FORWARD); //движемся вперед
}

void robot_back()
{
motor1.run(BACKWARD); //движемся назад
motor2.run(BACKWARD); //движемся назад
motor3.run(BACKWARD); //движемся назад
motor4.run(BACKWARD); //движемся назад
}

void robot_left()
{
motor2.run(FORWARD); //Повернем влево
motor3.run(FORWARD); //Повернем влево
}

void robot_right()
{
motor1.run(FORWARD); //Повернем вправо
motor4.run(FORWARD); //Повернем вправо
}

void robot_stop()
{
motor1.run(RELEASE); //Останавливаем колеса
motor2.run(RELEASE); //Останавливаем колеса
motor3.run(RELEASE); //Останавливаем колеса
motor4.run(RELEASE); //Останавливаем колеса
}

void packet_id(uint8_t inbyte) //проверяем идентификатор пакета "cm="
{
switch (inbyte)
{
case 'c':
packid=2;
break;

case 'm':
packid*=2;
//packid=packid<<1;
break;

case '=':
packid*=4;
//packid=packid<<2;
break;

default:
packid=0;
}
}

void byte2char(uint16_t inbyte0, uint16_t inbyte1)
{
char bytetochar[5];
uint8_t buf_answer[]="{\"dat1\":\"0000\",\"dat2\":\"0000\"}" ;

itoa(inbyte0+10000, bytetochar, 10);
buf_answer[9]= bytetochar[1]; buf_answer[10]= bytetochar[2]; buf_answer[11]= bytetochar[3]; buf_answer[12]= bytetochar[4];

itoa(inbyte1+10000, bytetochar, 10);
buf_answer[23]= bytetochar[1]; buf_answer[24]= bytetochar[2]; buf_answer[25]= bytetochar[3]; buf_answer[26]= bytetochar[4];

UART_SendArray(buf_answer, sizeof(buf_answer)-1);
}

Верно или зачем тебе голова мальчик?
djam700 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 7 (пользователей: 0 , гостей: 7)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 09:49. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика