<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0">

<channel>

<title>Nonfinishism studious, заметки с тегом: Teremin</title>
<link>http://www.medinskiy.net/nfss/tags/teremin/</link>
<description></description>
<generator>E2 (v2842; Aegea)</generator>

<item><title>Световой терменвокс.</title><guid isPermaLink="true">http://www.medinskiy.net/nfss/all/svetovoy-termenvoks/</guid><link>http://www.medinskiy.net/nfss/all/svetovoy-termenvoks/</link><description>&lt;p&gt;А теперь мы немного помузицируем. С помощью фоторезистора и &lt;a href="http://ru.wikipedia.org/wiki/Пьезоэлектрический_громкоговоритель" target="_blank"&gt;пьезоэлемента&lt;/a&gt; мы будем делать световой терменвокс. &lt;a href="http://ru.wikipedia.org/wiki/Терменвокс" target="_blank"&gt;Терменвокс&lt;/a&gt; — это музыкальный инструмент, издающий звуки, в зависимости от движений, которые производит музыкант вокруг инструмента. Такие звуки часто используют в фильмах ужасов.&lt;/p&gt;
&lt;!--more--&gt;&lt;p&gt;У терменвокса две антенны, при изменении положения рук исполнителя относительно них  изменяется ёмкость &lt;a href="http://ru.wikipedia.org/wiki/Колебательный_контур" target="_blank"&gt;колебательного контура&lt;/a&gt; антенн. Эти антенны подключены к аналоговой схеме, которая создает звук. Одна антенна отвечает за частоту звука, а вторая за его громкость. Arduino, конечно же, не может воспроизвести загадочные звуки этого инструмента, но можно эмулировать их с помощью функции &lt;strong&gt;tone(). &lt;/strong&gt;На рисунках ниже можно увидеть разницу между модуляциями произведёнными функцией &lt;strong&gt;analogWrite() &lt;/strong&gt;и функцией &lt;strong&gt;tone()&lt;/strong&gt;. Эти модуляции заставляют воспроизводящие устройства (такие как наушники, колонки или пьезоэлементы) издавать различые звуки.&lt;/p&gt;
&lt;table&gt;
&lt;tr &gt;
&lt;td valign="middle"&gt;
Большую часть времени сигнал равен нулю, но частота такая же как и в ШИМ 150
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;img src="pictures/pwm50.jpg" align="middle"&gt;
PWM 50: analogWrite(50)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;
&lt;td valign="middle"&gt;
Большую часть времени сигнал равен единице, но частота такая же как и в ШИМ 50
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;img src="pictures/pwm150.jpg" align="middle"&gt;
PWM 150: analogWrite(50)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;
&lt;td valign="middle"&gt;
Рабочий цикл составляет 50% (половину времени сигнал есть, половину времени нет), но частота изменилась.
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;img src="pictures/tone440.jpg" align="middle"&gt;
TONE 440: tone(9,440)
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr &gt;
&lt;td valign="middle"&gt;
Рабочий цикл такой же как и в Tone 440, но частота больше вдвое.
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;img src="pictures/tone880.jpg" align="middle"&gt;
TONE 880: tone(9,440)
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Вместо определения ёмкости с помощью Arduino, мы будем использовать фоторезистор, чтобы определять количество света. Двигая руки над фоторезистором, мы будем менять количество света, которое на него попадает, так же как проекте &lt;a href="http://medinskiy.net/nfss/all/lampa-hameleon-color-mixing-lamp/" target="_blank"&gt;«Лампа хамелеон»&lt;/a&gt;. Изменение напряжения на аналоговом входе будет определять ноту какой частоты играть.&lt;/p&gt;
&lt;p&gt;Фоторезистор к Arduino мы подключим используя схему &lt;a href="http://ru.wikipedia.org/wiki/Делитель_напряжения" target="_blank"&gt;делителя напряжения&lt;/a&gt;. Ранее мы уже заметили, что когда считываем напряжение с этой схемы используя функцию &lt;strong&gt;analogRead()&lt;/strong&gt;, получаемые значения не всегда полностью покрывают диапазон от 0 до 1023 (максимальный диапазон, который может быть считан с аналогового входа). Резистор фиксированного сопротивления, подсоединённый к «земле», ограничивает считываемые значения снизу, а максимальная яркость освещения — сверху. Вместо того, чтобы ограничивать диапазон возможных значений, можно откалибровать сенсор, получив максимальное и минимальное значения, и соотнести их с частотой извлекаемого звука с помощью функции &lt;strong&gt;map()&lt;/strong&gt; (как мы уже &lt;a href="http://medinskiy.net/nfss/all/ispolzovanie-servoprivoda/" target="_blank"&gt;делали&lt;/a&gt;), таким образом, диапазон частот, которые будет издавать наш терменвокс, станет максимально возможным. Так же к нашему сенсору добавится дополнительная «фича»: куда бы мы не перенесли схему, например, в более темное помещение, она будет автоматически подстраиваться.&lt;/p&gt;
&lt;p&gt;Итак , вот схема, которую мы будем собирать:&lt;/p&gt;
&lt;div class="tiles"&gt;
            &lt;a href="pictures/Theremin_схема_1.jpg" rel="lightbox"&gt;
                &lt;img src="pictures/Theremin_схема_1.jpg" /&gt;
            &lt;/a&gt;
&lt;a href="pictures/empty.jpg" &gt;
                &lt;img src="pictures/empty.jpg" /&gt;
            &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Собранный макет:&lt;/p&gt;
&lt;div class="tiles"&gt;
            &lt;a href="pictures/photo-3_t.jpg" rel="lightbox"&gt;
                &lt;img src="pictures/photo-3_t.jpg" /&gt;
            &lt;/a&gt;
&lt;a href="pictures/empty.jpg" &gt;
                &lt;img src="pictures/empty.jpg" /&gt;
            &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Пишем программу, для управления терменвоксом:&lt;/p&gt;
&lt;pre&gt;&lt;span style="color: #cc6600;"&gt;int&lt;/span&gt; sVal;&lt;span style="color: #7e7e7e;"&gt;//Значение на фоторезисторе&lt;/span&gt;
&lt;span style="color: #cc6600;"&gt;int&lt;/span&gt; sLow=1023; &lt;span style="color: #7e7e7e;"&gt;//минимальное значение фоторезистора&lt;/span&gt;
&lt;span style="color: #cc6600;"&gt;int&lt;/span&gt; sHigh=0;&lt;span style="color: #7e7e7e;"&gt;//максимальное значение фоторезистора&lt;/span&gt;
&lt;span style="color: #cc6600;"&gt;int&lt;/span&gt; ledPin=13;&lt;span style="color: #7e7e7e;"&gt;//встроенный светодиод&lt;/span&gt;

&lt;span style="color: #cc6600;"&gt;void&lt;/span&gt; &lt;span style="color: #cc6600;"&gt;&lt;b&gt;setup&lt;/b&gt;&lt;/span&gt;(){
  &lt;span style="color: #cc6600;"&gt;pinMode&lt;/span&gt;(ledPin,&lt;span style="color: #006699;"&gt;OUTPUT&lt;/span&gt;);
  &lt;span style="color: #cc6600;"&gt;digitalWrite&lt;/span&gt;(ledPin,&lt;span style="color: #006699;"&gt;HIGH&lt;/span&gt;); &lt;span style="color: #7e7e7e;"&gt;//начало калибровки&lt;/span&gt;
  &lt;span style="color: #cc6600;"&gt;while&lt;/span&gt;(&lt;span style="color: #cc6600;"&gt;millis&lt;/span&gt;()&amp;lt;5000) { &lt;span style="color: #7e7e7e;"&gt;//калибруем в течении 5 секунд&lt;/span&gt;
    sVal=&lt;span style="color: #cc6600;"&gt;analogRead&lt;/span&gt;(A0);
    &lt;span style="color: #cc6600;"&gt;if&lt;/span&gt; (sVal&amp;gt;sHigh){
      sHigh=sVal;
    }
    &lt;span style="color: #cc6600;"&gt;if&lt;/span&gt;(sVal&amp;lt;sLow){
      sLow=sVal;
    }
  }
  &lt;span style="color: #cc6600;"&gt;digitalWrite&lt;/span&gt;(ledPin,&lt;span style="color: #006699;"&gt;LOW&lt;/span&gt;);&lt;span style="color: #7e7e7e;"&gt;//окончание калибровки&lt;/span&gt;
}

&lt;span style="color: #cc6600;"&gt;void&lt;/span&gt; &lt;span style="color: #cc6600;"&gt;&lt;b&gt;loop&lt;/b&gt;&lt;/span&gt;(){
  &lt;span style="color: #cc6600;"&gt;int&lt;/span&gt; freq;
  sVal=&lt;span style="color: #cc6600;"&gt;analogRead&lt;/span&gt;(A0);&lt;span style="color: #7e7e7e;"&gt;//считываем значение с фоторезистора&lt;/span&gt;
  freq=&lt;span style="color: #cc6600;"&gt;map&lt;/span&gt;(sVal,sLow,sHigh,50,4000);&lt;span style="color: #7e7e7e;"&gt;//приводим значение&lt;/span&gt;
  &lt;span style="color: #cc6600;"&gt;tone&lt;/span&gt;(8,freq,20);&lt;span style="color: #7e7e7e;"&gt;//извлекаем звук&lt;/span&gt;
  &lt;span style="color: #cc6600;"&gt;delay&lt;/span&gt;(10);
}&lt;/pre&gt;
&lt;p&gt;Небольшой комментарий к программе:&lt;/p&gt;
&lt;p&gt;Объявления переменных:&lt;/p&gt;
&lt;p&gt;sVal — сюда будем считывать значение с фоторезистора;&lt;/p&gt;
&lt;p&gt;sLow и sHigh — максимальное и минимальное значения, которые можно прочитать с фоторезистора. В начале программы они соответственно равны 1023 (минимальное) и 0 (максимальное). В процессе калибровки в этих переменных появятся реальные значения минимума и максимума.&lt;/p&gt;
&lt;p&gt;ledPin — пин со светодиодом, при начале калибровки включим его, по окончании выключим.&lt;/p&gt;
&lt;p&gt;Инициализация:&lt;/p&gt;
&lt;p&gt;Включаем светодиод. Втечении первых пяти секунд, в цикле считывается значение с фоторезистора, если оно меньше уже зафиксированного минимального значения (первоначально 1023), то записываем его в минимальное, если оно больше уже зафиксированного максимального значения (первоначально 0), то записываем его в максимальное. Используем функцию &lt;strong&gt;mills()&lt;/strong&gt;, для определения времени, прошедшего с момента включения Arduino.&lt;/p&gt;
&lt;p&gt;Основная программа: вобщем довольно простая, функция tone() используется для воспроизведения звука, первый её параметр — пин, на который выводить звук, второй — частота звука, третий — длительность.&lt;/p&gt;
&lt;p&gt;Вот что вышло:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe width="768" height="480" src="http://www.youtube.com/embed/CFNT91OJ66o" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Настоящий терменвокс позволяет управлять не только частотой звука, но и его громкостью. В этом примере мы можем менять только частоту. Если подсоединить потенциоментр последовательно с пьезоэлементом, то звук можно будет регулировать с помощью его ручки или можно поставить второй фоторезистор. Мы решили подключить потенциометр.&lt;/p&gt;
&lt;p&gt;Схема и фото макета ниже, а вот видео:&lt;/p&gt;
&lt;div class="e2-text-video"&gt;
&lt;iframe width="768" height="480" src="http://www.youtube.com/embed/Qnfdkh-NzWQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div class="tiles"&gt;
     &lt;a href="pictures/photo-1_t.jpg" rel="lightbox[01]"&gt;
                &lt;img src="pictures/photo-1_t.jpg" /&gt;
        &lt;/a&gt;
  &lt;a href="pictures/Theremin_схема_1.jpg" rel="lightbox[01]"&gt;
                &lt;img src="pictures/Theremin_схема_1.jpg" /&gt;
           &lt;/a&gt;
  &lt;a href="pictures/photo-3_t.jpg" rel="lightbox[01]"&gt;
                &lt;img src="pictures/photo-3_t.jpg" /&gt;
           &lt;/a&gt;
  &lt;a href="pictures/photo-2_t.jpg" rel="lightbox[01]"&gt;
                &lt;img src="pictures/photo-2_t.jpg" /&gt;
           &lt;/a&gt;
  &lt;a href="pictures/Theremin_схема_2.jpg" rel="lightbox[01]"&gt;
                &lt;img src="pictures/Theremin_схема_2.jpg" /&gt;
           &lt;/a&gt;
  &lt;a href="pictures/IMG_0198.jpg" rel="lightbox[01]"&gt;
                &lt;img src="pictures/IMG_0198.jpg" /&gt;
           &lt;/a&gt;
&lt;/div&gt;
</description><pubDate>Mon, 18 Mar 2013 12:07:18 +0300</pubDate></item>
</channel>

</rss>