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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.03.2014, 14:46   #1
aleksanmoro
Junior Member
 
Регистрация: 12.03.2014
Сообщений: 17
Вес репутации: 0
aleksanmoro is an unknown quantity at this point
Unhappy Wi-fi боевой робот

Всем привет. Вот начал сборку робота.
Нажмите на изображение для увеличения
Название: NsRlUS1a0Gw.jpg
Просмотров: 245
Размер:	123.1 Кб
ID:	1605
Было куплено шасси и ардуино с моторшилдом 2 версии.
На шасси установлен LiPo аккумулятор 7.4v, dc-dc преобразователь с 7.4 до 5 вольт, с целью подключения роутера по uart. Ардуино питается от 7.4в. Потом для удобства зарядки аккумулятора я распаял разъем rs232 под зарядник. Все работает, батарейка заряжается.
Нажмите на изображение для увеличения
Название: X0qURR3-Ok0.jpg
Просмотров: 275
Размер:	176.6 Кб
ID:	1606 Нажмите на изображение для увеличения
Название: upfozbWqsf8.jpg
Просмотров: 317
Размер:	155.4 Кб
ID:	1608
Собрана голова робота со светодиодными индикаторами (игрушка короче). Подключал к ардуине и мигал глазами.
Сейчас контроллер прошит вот этим кодом. Все ездит.

PHP код:
/*******************************************************************************
* ROBOT
* Filename : MyRobot01.pde
********************************************************************************/
#include <AFMotor.h> // подключили библиотеку для работы с ДПТ и ШД
AF_DCMotor Motor3(3MOTOR12_1KHZ); // используем 1-й порт на частоте ШИМ 1 кГц (можно 1,2,8,64)
AF_DCMotor Motor4(4MOTOR12_1KHZ); // используем 2-й порт на частоте ШИМ 1 кГц (можно 1,2,8,64)
int dalnomer 4// дальномер
int gp2;
float distance;

// -----------------------------------------------------------------
void setup(){
Motor3.setSpeed(200); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(200); // устанавливаем скорость вращения двигателя на 2-м порту
// end setup
// -----------------------------------------------------------------
// О С Н О В Н О Й Ц И К Л П Р О Г Р А М М Ы
void loop(){

  
Go();
}
// -----------------------------------------------------------------

// -----------------------------------------------------------------
void Go() { // БЛУЖДАЮЩИЙ ЦИКЛ  // зациклить с условием while 

gp2=analogRead(dalnomer);
distance=(2914/(gp2+5))-1// Перевод в сантиметры  

do
{
Forward (250); delay(2000);
Spin_Left(); delay(2000);
Forward(200); delay(2000);
Spin_Right(); delay(2000);
Backward (150); delay(2000);
} while (
distance 6);
 
Stop (); delay (1000);
 
Backward (250); delay (2000);
   
Spin_Right(); delay(2000);
// end loop

// ПОДПРОГРАММЫ ДВИЖЕНИЙ
// -----------------------------------------------------------------
void Forward (int speed){ // движение вперед
Motor3.setSpeed(speed); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(speed); // устанавливаем скорость вращения двигателя на 2-м порту
Motor3.run(FORWARD); // 1-й моторчик вперед крутится
Motor4.run(FORWARD); // 2-й моторчик вперед крутится
// end Forward

void Backward (int speed){ // движение вперед
Motor3.setSpeed(speed); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(speed); // устанавливаем скорость вращения двигателя на 2-м порту
Motor3.run(BACKWARD); // 1-й моторчик назад крутится
Motor4.run(BACKWARD); // 2-й моторчик назад крутится
// end Forward

void Release (){ // выбег с остановом
Motor3.run(RELEASE);
Motor4.run(RELEASE);
// end Release

void Stop (){ // останов
Motor3.run(BRAKE);
Motor4.run(BRAKE);
// end Stop

void Spin_Right (){ // поворот влево
Motor3.setSpeed(500); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(500);
Motor3.run(FORWARD); // 1-й моторчик вперед крутится
Motor4.run(BACKWARD);
delay (2000);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
// end Spin_Right

void Spin_Left (){ // поворот влево
Motor3.setSpeed(500);// устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(500);
Motor4.run(FORWARD); // 2-й моторчик вперед крутится
Motor3.run(BACKWARD);
delay (2000);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
// end Spin_Left

// ----------------------------------------------------------------- 
Нажмите на изображение для увеличения
Название: jUib7LU5R8w.jpg
Просмотров: 210
Размер:	153.8 Кб
ID:	1611

Сейчас подключил роутер. Связь есть, порт ардуины видно ttyUSB, светодиоды rx-tx при нажатии клавиш на компе моргают. Но оно не едет!
Программа выглядит так

PHP код:
#include <CyberLib.h>
#include <AFMotor.h>

//#define motors_init {D8_Out; D9_Out; D10_Out; D11_Out;} 
//#define robot_go {D8_Low; D9_High; D10_High; D11_Low;} 
//#define robot_back {D8_High; D9_Low; D10_Low; D11_High;}
//#define robot_stop {D8_Low; D9_Low; D10_Low; D11_Low;} 
//#define robot_rotation_left {D8_Low; D9_High; D10_Low; D11_High;} 
//#define robot_rotation_right {D8_High; D9_Low; D10_High; D11_Low;}
AF_DCMotor Motor3(3MOTOR12_1KHZ); // используем 1-й порт на частоте ШИМ 1 кГц (можно 1,2,8,64)
AF_DCMotor Motor4(4MOTOR12_1KHZ); // используем 2-й порт на частоте ШИМ 1 кГц (можно 1,2,8,64)
uint8_t inByte;

void setup()  

Motor3.setSpeed(200); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(200); // устанавливаем скорость вращения двигателя на 2-м порту
  //motors_init;  //инициализация выходов моторов 
  
D11_Out;  D11_Low;    //динамик
  
randomSeed(A6_Read); //Получить случайное значение 
  
for(uint8_t i=0i<12i++) beep(70random(1002000)); //звуковое оповещение готовности робота  
  
UART_Init(57600);//инициализация порта для связи с роутером  
  
wdt_enable (WDTO_500MS);    //Сторожевая собака 0,5сек.   
}  

void loop()  
{  
  if (
UART_ReadByte(inByte)) //если что то пришло
  
{  
    switch (
inByte)  //смотрим какая команда пришла
    
{  
        case 
'x':  //стор
          
Stop;
        break; 
        
        case 
'W':  //вперед
          
Forward;  
        break;  
        
        case 
'D':  //лево
          
Spin_Right
        break;

        case 
'A'//право
          
Spin_Left
        break; 
        
        case 
'S':  //назад
          
Backward
        break;      
    }          
  } 
 
wdt_reset(); //покормить собаку 


// ПОДПРОГРАММЫ ДВИЖЕНИЙ
// -----------------------------------------------------------------
void Forward (int speed){ // движение вперед
Motor3.setSpeed(speed); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(speed); // устанавливаем скорость вращения двигателя на 2-м порту
Motor3.run(FORWARD); // 1-й моторчик вперед крутится
Motor4.run(FORWARD); // 2-й моторчик вперед крутится
// end Forward

void Backward (int speed){ // движение вперед
Motor3.setSpeed(speed); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(speed); // устанавливаем скорость вращения двигателя на 2-м порту
Motor3.run(BACKWARD); // 1-й моторчик назад крутится
Motor4.run(BACKWARD); // 2-й моторчик назад крутится
// end Forward

void Release (){ // выбег с остановом
Motor3.run(RELEASE);
Motor4.run(RELEASE);
// end Release

void Stop (){ // останов
Motor3.run(BRAKE);
Motor4.run(BRAKE);
// end Stop

void Spin_Right (){ // поворот влево
Motor3.setSpeed(500); // устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(500);
Motor3.run(FORWARD); // 1-й моторчик вперед крутится
Motor4.run(BACKWARD);
delay (2000);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
// end Spin_Right

void Spin_Left (){ // поворот влево
Motor3.setSpeed(500);// устанавливаем скорость вращения двигателя на 1-м порту
Motor4.setSpeed(500);
Motor4.run(FORWARD); // 2-й моторчик вперед крутится
Motor3.run(BACKWARD);
delay (2000);
Motor3.run(RELEASE);
Motor4.run(RELEASE);
// end Spin_Left

// ----------------------------------------------------------------- 
Помогите, пожалуйста. Что не так? Очень хочу закончить проект.
Миниатюры
Нажмите на изображение для увеличения
Название: mMEMmf4W_Os.jpg
Просмотров: 355
Размер:	155.1 Кб
ID:	1607   Нажмите на изображение для увеличения
Название: D-JxEZaPj44.jpg
Просмотров: 351
Размер:	251.9 Кб
ID:	1609   Нажмите на изображение для увеличения
Название: -4jiECjC-V0.jpg
Просмотров: 321
Размер:	253.8 Кб
ID:	1610  
aleksanmoro вне форума   Ответить с цитированием
 


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

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

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

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


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


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