Радиомастер гид в мире электроники » Статьи » Программирование » LaunchPad » Имперский марш на сервоприводах и MSP430
Информация к новости
  • Просмотров: 9395
  • Добавил: Kail
  • Дата: 28 октября 2012
28 октября 2012

Имперский марш на сервоприводах и MSP430

Категория: Статьи » Программирование » LaunchPad

Все началось с того, что я заказал сервы. Думал что это одна большая, а оказалось, что 5, но маленьких. Нужный мне груз они не потянули, но раз что-то есть в закромах родины, значит это что-то надо применить.

Имперский марш на сервоприводах и MSP430


Сначала я хотел сделать из них часы, идущие в обратную сторону, но ошибся в задержках и получил звук «Зз-Зз-Зз-ЗЗЗЗЗ», который показался мне интересным.
Дальше были выходные и неспешное ковыряние в коде, который претерпел несколько изменений, был потерян и переписан для MSP430 и Wiring вместо BASCOM(потому что мне было ленивее набирать программу второй раз, нежели написать ее на другом языке), и в итоге принял такой вид:
ОСТОРОЖНО! Быдлокод!

#include <Servo.h> //Подключаем бибилотеку
Servo myservo1;//Определяем имена
Servo myservo2;
    int x = 0; //Разные переменные
    int y = 0;
    int z = 0;
    int w = 0;
    int g = 0;    
    int h = 0;
    int q = 0;
    
void setup()
{
myservo1.attach(7, 600, 800); //Определяем порты серв и параметры(длительность паузы и импульса) управления
myservo2.attach(8, 600, 800);
myservo1.write(0); //Устанавливаем в ноль
myservo2.write(0);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
digitalWrite(GREEN_LED, LOW);
digitalWrite(RED_LED, LOW);
}

void loop()
{


delay(2000);//Ждем перед началом 2 секунды, чтоб не смазывать начало

q=song(80,40,0);//Начинаем звучать
q=song(80,40,0);//Формат такой:
q=song(-80,40,0);//Первая цифра - относительный угол поворота, причем надо следить, чтоб он был не больше 180 и не меньше 0

q=song(-50,30,-50);//Вторая - длительность паузы. Нормализованная - поворот на 30 градусов и 30 единиц паузы равны по времени
q=song(-5,15,0); //Третья - Угол поворота второй сервы,все тоже самое что и у первой.
q=song(-80,20,0);

q=song(-10,10,-10);
q=song(-10,10,0);
q=song(-100,70,0);

q=song(-80,32,-80);
q=song(-40,32,-80);
q=song(-80,32,-80);

q=song(-70,32,0);
q=song(-10,10,0);
q=song(-100,20,-80);

q=song(-70,40,0);
q=song(-10,10,0);
q=song(-100,20,-80);

q=song(-70,40,0);
q=song(-10,10,0);
q=song(-100,50,0);

q=song(-80,32,-80);
q=song(-40,32,0);
q=song(-10,10,0);

q=song(-80,32,-80);
q=song(-40,32,0);
q=song(-10,10,0);

q=song(-80,32,-80);
q=song(-40,40,-40);
q=song(-10,10,0);

q=song(-10,8,-10);
q=song(-10,8,-10);
q=song(-10,32,-10);

delay(2000000); 
}

int song(int y, int z, int g){
    x=x+y; //Превращаем относительный угол поворота в абсолютный
    h=h+g;//Тоже самое для второй сервы
    w=(abs(y)*3.75+z*10/1.6)/2;//Нормализуем длительность паузы. Сначала вычисляем время, необходимое для поворота сервопривода на заданный угол, потом добавляем к этому значению время паузы

    if (g != 0) // надо двигать одну или две сервы?
    {
    myservo2.write(h);
    digitalWrite(GREEN_LED, HIGH);
    myservo1.write(x);
    digitalWrite(RED_LED, HIGH);
    }
    else
    {
    myservo1.write(x);
    digitalWrite(RED_LED, HIGH);
    }
    g=0;
    delay(w);//Две задержки - чтоб светодиоды вспыхивали красиво
    digitalWrite(GREEN_LED, LOW);
    digitalWrite(RED_LED, LOW);
    delay(w);
    }


Фотка для отвлечения внимания и разбавления текста:

Имперский марш на сервоприводах и MSP430


Так как у меня не получилось подобрать на слух, я пошел на хитрость — скачал midi, открыл в редакторе и замерил длительность звучания нот и пауз. Те ноты, чья тональность отличалась слишком сильно — озвучивала вторая сервомашинка, она имеет другой звук.
Еще одна фотка:

Имперский марш на сервоприводах и MSP430


Так как сервы питаются от стабилизатора платы, коэффициенты рассчитаны на напряжение 3в, при бОльшем — будет различаться длительность пауз, из-за увеличения скорости движения.

И, наконец, самое интересное — видео.



Источник: habrahabr.ru

Метки к статье: MSP430



<
a_komolow

30 октября 2012 18:43

Информация к комментарию
  • Группа: Радиомастер
  • ICQ:
  • Регистрация: 20.02.2012
  • Статус: Пользователь offline
  • Публикаций: 0
  • Комментариев: 190
Херня


Награды:
0
<
vaciliu1

30 октября 2012 21:03

Информация к комментарию
  • Группа: Радиомастер
  • ICQ: 586531421
  • Регистрация: 17.04.2010
  • Статус: Пользователь offline
  • Публикаций: 0
  • Комментариев: 29
а зачем так сурово херня походу автор делает первые шаги, а вы так строго


Награды:
+1
<
UU5JPP

31 октября 2012 13:15

Информация к комментарию
  • Группа: Радиолюбитель
  • ICQ:
  • Регистрация: 31.08.2011
  • Статус: Пользователь offline
  • Публикаций: 0
  • Комментариев: 2
А что это было? что то я не понял winked


Награды:
0
<
vaciliu1

31 октября 2012 16:34

Информация к комментарию
  • Группа: Радиомастер
  • ICQ: 586531421
  • Регистрация: 17.04.2010
  • Статус: Пользователь offline
  • Публикаций: 0
  • Комментариев: 29
UU5JPP,
мелодию слышали в фоне на видео. так вот автор попытался сыграть отрывок из нее на сервах


Награды:
0
<
xcom14

31 октября 2012 23:07

Информация к комментарию
  • Группа: Радиомастер
  • ICQ:
  • Регистрация: 7.06.2010
  • Статус: Пользователь offline
  • Публикаций: 0
  • Комментариев: 27
Это конечно не http://www.youtube.com/watch?v=w68qZ8JvBds

Но автор молодец! Старается!


Награды:
0
<
TANGO

6 ноября 2012 14:22

Информация к комментарию
  • Группа: Радиомастер
  • ICQ:
  • Регистрация: 7.09.2010
  • Статус: Пользователь offline
  • Публикаций: 1
  • Комментариев: 25
Прикольно, конечно, но хотелось бы более практичное применение этой штуковины увидеть.


Награды:
--------------------

0
<
xcom14

6 ноября 2012 14:46

Информация к комментарию
  • Группа: Радиомастер
  • ICQ:
  • Регистрация: 7.06.2010
  • Статус: Пользователь offline
  • Публикаций: 0
  • Комментариев: 27
Практичное применение - это опыт работы с шаговыми двигателями и программировании контроллера. Порой из таких "игрушек" вырастает много полезного.


Награды:
0
<
art_maestro

1 января 2013 22:46

Информация к комментарию
  • Группа: Радиолюбитель
  • ICQ:
  • Регистрация: 14.08.2012
  • Статус: Пользователь offline
  • Публикаций: 0
  • Комментариев: 8
Трудно понять если мелодии не знаешь.
Но автор молодец!


Награды:
0

Добавление комментария

Имя:*
E-Mail:*
Введите два слова, показанных на изображении: *

Друзья и партнеры:

Архив новостей

Декабрь 2016 (1)
Ноябрь 2016 (1)
Сентябрь 2016 (3)
Июнь 2016 (1)
Май 2016 (1)
Апрель 2016 (1)
^
 
-->