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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.06.2015, 11:01   #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: AirBot Zefir

Не понимаю, зачем поварачивать сервы через каждые 150мс
Они не успеют повернуться как придет следующая команда

Весь этот код можно смело упростить на две строчки, которые я привел ниже, от delay лучше отказаться
так как они будут торможить систему оправлением
PHP код:
void loop()
{
   
servoMain.write(90);  // Центровать серво
    
servoMain1.write(90);  // Центровать серво
   
delay(150);          // Пауза 0,15 сек.
   
servoMain.write(45);  // Повернуть серво влево на 45 градусов
    
servoMain1.write(135);  // Повернуть серво вправо на 45 градусов
   
delay(150);          // Пауза 0,15 сек.
   
servoMain.write(135);  // Повернуть серво вправо на 45 градусов
    
servoMain1.write(45);  // Повернуть серво влево на 45 градусов
   
delay(150);          //Пауза 0,15 сек.
   
servoMain.write(90);  // Центровать серво
   
servoMain1.write(90);  //Центровать серво
   
delay(150);          // Пауза 0,15 сек.

PHP код:
void loop()
{
   
servoMain.write(90);  // Центровать серво
   
servoMain1.write(90);  //Центровать серво 

Admin вне форума   Ответить с цитированием
Старый 06.06.2015, 17:25   #2
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: AirBot Zefir

Цитата:
Сообщение от Admin Посмотреть сообщение
Не понимаю, зачем поварачивать сервы через каждые 150мс
Они не успеют повернуться как придет следующая команда

Весь этот код можно смело упростить на две строчки, которые я привел ниже, от delay лучше отказаться
так как они будут торможить систему оправлением
Я имел в виду этот код
PHP код:
#include <CyberLib.h> 
#include <Servo.h> 

Servo leftservo
Servo rightservo

long previousMillis;
uint8_t LedStep 0// Счетчик
int i
boolean light_stat;
uint8_t inByte


#define init {D4_Out; D5_Out; D6_Out; D7_Out; D8_Out; D11_Out; D12_Out;}  

void setup()   
{  
  
leftservo.attach(9); // Подключение сервоприводов к порту 
  
rightservo.attach(10); // Подключение сервоприводов к порту 
  
init;  // Инициализация портов 
  
D11_Low// Динамик  OFF
  
randomSeed(A6_Read); //Получить случайное значение   
  
horn(); //звуковое оповещение готовности робота  
  
UART_Init(57600);// Инициализация порта для связи с роутером   
   
  
leftservo.write(90);  // Повернуть левый серво на 0 градусов
  
rightservo.write(90);  // Повернуть правый серво на 0 градусов

}   

void loop()   
{  


  if (
UART_ReadByte(inByte)) //Если что то пришло 
  

  
  

    switch (
inByte)  // Смотрим какая команда пришла 
    
{   
        case 
'x'// Газ
          
gas(); 
        break;  
         
        case 
'W'// Движение вниз 
    
          
bottom();   
        break;   
         
        case 
'D'// Поворотjт влево 
          
robot_rotation_left();  
        break; 

        case 
'A'// Поворот вправо 
          
robot_rotation_right();  
        break;  
         
        case 
'S'// Движение назад 
         
top();  
        break;  
         
        case 
'U'// Камера поднимается вверх
           
        
break;  
         
        case 
'J'// Камера опускается вниз 
         
        
break;  
         
        case 
'H'// Камера поворачивается  вправо
        
        
break;  
         
        case 
'K'// Камера поворачивается влево      
        
        
break;  
         
         case 
'B'//  Бластер 
         
D12_High
        break; 
        
        case 
'C'// Клаксон 
         
horn(); 
        break; 
         
        case 
'V'// Включить/Выключить фары 
        
if(light_stat)
        {
         
D8_Low;
         
light_stat=false;
        } else 
              {
               
D8_High;
               
light_stat=true;
              }
        break; 
    }  
         
  }  



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

void bottom() 

  
leftservo.write(45);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(45);  // Повернуть правый серво влево на 45 градусов
   
delay(150);
    
leftservo.write(90);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(90);  // Повернуть правый серво влево на 45 градусов


void gas() 

  
leftservo.write(45);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(45);  // Повернуть правый серво влево на 45 градусов
   


void top() 

 
leftservo.write(135);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(135);  // Повернуть правый серво влево на 45 градусов 
    
delay(150);
    
leftservo.write(90);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(90);  // Повернуть правый серво влево на 45 градусов


void robot_rotation_left() 

  
leftservo.write(45);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(135);  // Повернуть правый серво влево на 45 градусов
   
delay(150);
    
leftservo.write(90);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(90);  // Повернуть правый серво влево на 45 градусов 


void robot_rotation_right() 

  
leftservo.write(135);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(45);  // Повернуть правый серво влево на 45 градусов
    
delay(150);
    
leftservo.write(90);  // Повернуть левый серво влево на 45 градусов
  
rightservo.write(90);  // Повернуть правый серво влево на 45 градусов

А то, что сверху привел как пример проверки сервомоторов.
Щас попробую 2-ой вариант управления сервами.
Goblin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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


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


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