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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.12.2012, 00:54   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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
По умолчанию Пример работы с сервоприводом

Данный пример показывает как нужно работать с сервомотором (сервоприводом).
В предложенном мной примере:
Сервы одновременно отрабатывают, каждая в свое заданное ей положение(как в многозадачной среде)
Сервы работают в фоновом режиме и не влияют на исполнение главного цикла Loop
При задании нового угла положения серве, она моментально будет отрабатывать его
Сервы не дрожат в точках остановки, стабильно удерживают свое положение
Положение сервам задается в градусах от 0гр. до 180гр.(Максимальный угол вашей сервы нужно смотреть в DS)
Минимальное значение положения сервопривода, нужно прописать в MIN

PHP код:
#include <CyberLib.h> //использует Timer1

#define MIN 60 // минимальное положение Вашей сервы делим на 10, в моих сервах 600,
volatile uint16_t period=0//счетчик периода 
volatile uint8_t Servo1Servo2;  //переменная угла поворота сервомашинки

void callback()  //прерывания таймера
{  
  
period++; 
  if(
period==2000) { period=0; } //длительность периода 20мс
  
if((Servo1+MIN) > period D11_High;  else D11_Low//длительность, положение сервы
  
if((Servo2+MIN) > period D12_High;  else D12_Low//длительность, положение сервы
}

void setup() 

  
D11_Out;     //Servo1 настроить пин 11 на выход
  
D12_Out;     //Servo2 настроить пин 12 на выход 
  
StartTimer1(callback10); // Интервал срабатывания таймера в мкс
}                             

void loop() 
{   
//Ниже привожу пример управления сервомоторами
 
Servo1 0//положение сервы1 в градусах
 
Servo2 0//положение сервы2 в градусах
 
delay_ms(100);  //ждем пока сервы провернутся на заданный угол
 
Servo1 180;
 
Servo2 180;
 
delay_ms(100); //ждем пока сервы провернутся на заданный угол

Admin вне форума   Ответить с цитированием
 


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

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

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

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


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


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