8

Имперский марш спикером, Arduino

Доброго времени суток, Пикабушники. Думаю вас уже достали тонны постов о программировании микроконтроллеров, в частности arduino. Да? Жаль, поэтому это ещё один пост в ту же копилку :(

Ну, если же кто-то решил читать дальше, то начнем!

Вдохновившись постами одного видеоблогера (@AlexGyver, привет :D), особенно его словами: "микроконтроллер по цене шаурмы" решил заказать себе сию приблуду. Подождав месяц, а потом ещё месяц, все запчасти наконец дошли до меня. Первым делом я тренировался, мигал встроенным светодиодом и радовался жизни. Потом переходил на "сложные вещи". Так как сразу заказал себе ультразвуковой дальномер, то собрал себе простейший парктроник (это было лишком просто и я решил не пилить об этом пост, если кто попросит, сразу расскажу). Но это все присказка, перейдем к делу!


Разобрав старый стационарный ПК я обнаружил там спикер (удивительно, да?) и, не успев выкинуть, решил посмотреть в Инете, а нельзя ли его подсоединить к Ардуине, т.к. в суровое паскалевское детство мы неплохо делали сирену на таких динамиках. Оказалось можно. И..немного поиграв с пищалкой (чем достал жену и соседей), решил сыграть что-то более гуманное  мелодичное. Выбор пал на недавнюю премьеру, а точнее самое банальное..имперский марш! Нагуглив ноты и тональность нот я приступил к сборке. Немного фото:

Моя Ардуинка собственной персоной (всегда думал что она синяя, а она красная пришла).

Спикер. Добыт из недр системного блока.


Так как просто пропищать будет немного скучно и неэффектно и никто не поверит, то решил добавить светодиод. У меня с того же сайта были заказаны как обычные, так и трехцветные, решил позабавиться с трехцветными.

Светодиод трехцветный (RGB).

Подключив все по стандартной схеме приступил к написанию кода. Приведу лишь маленькие примеры из скетча, что бы какое-то представление имелось (что-то заимствовал из Интернета, что-то писал сам).

Сначала я объявил константы в виде нот, найдя в Инете их тон:

const int c = 261; // Нота До

const int d = 294; // Нота Ре 

и т.д.

Нужно задействовать светодиод, не скажу, что гениальное решение, но ничего другого в голову не пришло.. Если тон меньше 600 Герц, то синий, выше 600, но ниже 750 - зеленый, ещё выше - красный. Пишется это очень просто:

if (ton<=600)

{

digitalWrite(2,HIGH);

digitalWrite(4,LOW);

digitalWrite(7,LOW);

Остальное по аналогии.

Немного теории: в языке ардуино есть функция tone, которая имеет параметры: вход на котором стоит динамик, тональность, длительность; но нужна ещё и задержка перед следующей нотой. Приводить код не буду, но думаю что все логично.

Я назову её beep...потому что её все так называют. И имеет она у меня два параметра нота (писал выше) и время звучания ноты. Далее все как по нотам :D

beep(a, 500);

beep(a, 500);

beep(a, 500);

beep(f, 350);

На этом все. Не претендую на уникальность и гениальность, просто немного HOW TO вам в ленту. Спасибо тем кто дочитал, если есть вопросы отвечу. Коротенькое видео того, что получилось:

Автор поста оценил этот комментарий

ну на Ардуине это любой дурак менее чем за час сделает, с нуля и без всяких уроков HOW TO.

Ты хотя бы на Stm32 сделай. Ардуино это для детей.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Возможно я бы собрал это же и на Stm32, но, к сожалению, у него рекламы гораздо меньше. И до твоего сообщения я даже не знал что это :) Т.к. стоит он чуть дороже Arduino Nano, возможно закажу. Если не трудно, расскажи об этой штуке поподробнее.

показать ответы
1
DERG
Автор поста оценил этот комментарий

Я хоть и не профессионал и сам очень уважаю ардуину, но попробую объяснить за что её ненавидят. Ардуина хорошая штука, но она построена на старом, тормозном контроллере. Плюс легкость освоения имеет подводный камень в виде ограниченных возможностей. Например если ты хочешь выдать на выход ШИМ сигнал с коэффициентом заполнения 50% то ты в две строчки пишешь

 - настроить порт на выход

 - записать в порт 128

В STM32 тебе надо

 - включить тактирование порта

 - настроить скорость порта и переключить его на альтернативную функцию

 - включить тактирование таймера

 - настроить выход таймена на соответствующие порты

 - задать параметры таймера и настроить его частоту работы.

- загрузить в таймер параметры скважности

Казалось бы STM32 излишне сложный. До тех пор пока в один прекрасный момент ты не понимаешь, что тебе не хватает 500Гц (кажется столько там по умолчанию для ШИМ) а нужно 30-50кГц, и тут начинаются проблемы. И да фанаты ардуины скажут, "ну да простой функции управляющей этим нет, но всегда можно перейти на обычный С и начать играться с регистрами настраивая все как хочется" и от части они правы, но проблема в том, что если мы отказываемся от стандартной среды и начинает писать на обычном С внезапно понимаем, что мы вляпались в те же регистры которые тебе так не нравились в STM32. А в добавок мы вляпались в в старый МК в котором нет многих полезных фишек. В результате чего многие задачи которые люди героически решают на Ардуине, для любителей STM не составляют труда. Например, если тебе на ардуине нужно несколько USART одновременно, то ты вынужден пользоваться программным USART. Который пипец какой медленный. Многие STM32 имеют несколько аппаратных USART и не испытывают по этому поводу каких то трудностей. А сколько в интернете ходит гайдов по программной фильтрации нажатий на кнопку. В STM32 ты при настройке порта можешь выбрать подтягивание порта к питанию/земле, настроить тригер шпидта, и тебе остается только рядом с кнопкой подключить конденсатор и резистор и получать красивую аппаратную фильтрацию. И таких примеров множество.


Это я к тому, что на мой взгляд платформа ардуина хорошая для обучения и не очень требовательных к платформе проектов (хотел сказать сложных, но сложность понятие относительное, например люди делали на ардуине гамма спектрометры, задача в целом не самая простая, но они не гнались за рекордами разрешения, максимального уровня и т д и им хватало ардуины). Проблема в том, что ардуина из за свей рекламы, превратилась чуть ли не в культ. И её пытаются применить там где она совсем не уместна. Например недавно на хабре был пост про управление лифтами на ардуине, там мощные электромагниты от импульсов которых ардуина защищена чуть менее чем ни как (а ардуина это игрушка для хобби, но ни как не промышленное изделие, она и не должна быть защищена) в результате чего она периодически зависала. А авторы не придумали ничего лучше чем завернуть её в фольгу, ну разве что иконок не хватало. Вот и как без фейспалма на такое решение смотреть?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Может быть очень глупое дополнение, но мне в ардуине очень нехватает многопоточности. И, читая гайды в Интернете, кроме как псевдо с программными прерываниями ничего не сделать. Хотя, я не очень силен в этом, просто было интересно реализовать некоторые идеи, которым было бы необходимо обработка данных сразу с нескольких устройств.


На счет лифтов ничего не скажу, но у нас в универе турникеты (эл. пропуска) все были сделаны на ардуине. Не так глобально как лифты, но, на мой взгляд, довольно серьезное оборудование.

показать ответы
0
Автор поста оценил этот комментарий

Надо бы с тобой на связь выйти, обменяться опытом так сказать. Ты из  какого города?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Из нерезиновой :)

показать ответы
0
DELETED
Автор поста оценил этот комментарий

Срочно скетч в студию, можно просто с музыкой без диода, плззззз.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

без светодиода 

http://roboter.livejournal.com/11159.html

как оказалось, один в один

показать ответы
0
DELETED
Автор поста оценил этот комментарий

Срочно скетч в студию, можно просто с музыкой без диода, плззззз.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

со светодиодом

https://yadi.sk/d/F2zXlx2vowQ89

0
Автор поста оценил этот комментарий

на attiny13a сделал это же. 3х3 см плата вышла

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

За размерами никто не гонится. Arduino Uno очень большая + макетная плата, которая нужна только для, собственно, макета.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества