Главная » Статьи » Радиотехника » Познавательные статьи

Arduino-синтезатор.
Предыстория:

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

Основы и принципы:

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

После 5 минут рисования, получилось следующие:



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



Собственно все, часть сборки закончена, теперь немного объяснений: Перемычки, между центральными и крайними контактами имеют большое сопротивление, более 100Ком и выполняют роль подтягивающего резистора, подтягивая аналоговые входы к 0. Так как человек имеет некоторый заряд, то как только мы прикасаемся к  «клавишам» этого муз. инструмента, на аналоговых входах мы будем иметь значение отличное от 0, на этом и основана наша программа.

Программирование:

Долго тянуть не буду и покажу код сразу.

void setup() {

 Serial.begin(9600);

 pinMode(A0, INPUT);

 pinMode(A5, INPUT);

  pinMode(7, OUTPUT);

}

void loop() {

 if(analogRead(A0)>100) Ton(1);

 if(analogRead(A5)>100) Ton(3);

}

void Ton (int v)

{

  digitalWrite(7, HIGH);

  delay(v);

  digitalWrite(7, LOW);

}

Код не замудренный, так же как и схема, но все же немного пояснений дня новичков:

void Ton (int v)

{

  digitalWrite(7, HIGH);

  delay(v);

  digitalWrite(7, LOW);

}

Описываем функцию Ton, которая и будет воспроизводить звук по средствам подачи 1 и 0 на наш динамик с определенной частотой, которая и задается входным параметром функции(НО! Важно, что чем больше входной параметр, тем меньше частота), можно(и даже нужно) использовать библиотеку Tone, но она у меня отказалась работать, так что так.

 

if(analogRead(A0)>100) Ton(1);

Проверяем, если на аналоговом входе больше 100, то играем звук(Логичный вопрос, почему больше 100, а не больше 0, ведь раньше я писал, что на входе будет 0?Все просто, и объяснено атмосферными шумами и наводками, которые могут отклонять значения на входе в не большом диапазоне).

Собственно все, все готово, прошиваем скетч и смотри на результат. Ах да, чуть  не забыл, данная схема легко расширяется до кол-ва аналоговых входов на плате, по средствам подключения аналогичных клавишных модулей и объявления этих входов в коде.



Так же можно поэкспериментировать с различными проводниками, например, бананами, но в данном случае банан к GND притягивается через резистор 100Ком и больше, чем больше тем – тем лучше( в разумных пределах), так я доводил до срабатывание на дистанции.





Собственно все, всем спасибо за внимание.

© Антон Печенев для сайта http://vladimir-z.at.ua/
Категория: Познавательные статьи | Добавил: тоха (16.06.2014)
Просмотров: 1669 | Комментарии: 2 | Теги: самоделки, своими, руками, Arduino, синтезатор | Рейтинг: 1.3/13
Всего комментариев: 2
2 ubunterro   (17.06.2014 12:36) [Материал]
Хе-хе, так и не стал заморачиваться со стандартной либой, написал свою реализацию с блекджеком и функциями! А вообще молодец, не забил на это.

1 Terminator   (16.06.2014 21:24) [Материал]
Большое спасибо за статью. Ценю такие статьи которые человек сам сделал и опубликовал. Люблю оригинальность) good

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]