Новогодние праздники давно окончились, а после крещения многие уже избавились от своих новогодних деревьев. Конечно, если только это не HNYDuino R2 - с ней можно развлекаться хоть круглый год. Рассмотрим более подробно, как именно это делается ;)
Первым делом, подключим HNYDuino R2 к компьютеру через прилагающийся к ней mini-USB кабель. Следите, чтобы движок переключателя питания (слева) был установлен в нижнее положение (USB). В ArduinoIDE надо выбрать плату Arduino Leonardo:
Если все ОК, в системе появится новое устройство на шине USB, а после нажатия на сброс центральный светодиод начнет плавно переливаться красным. Установите драйверы - бутлоадера (отсюда) и Leonardo (из папки ArduinoIDE). Откройте скетч-пример Blink (Примеры -> 01. Basics -> Blink) и загрузите его в по Ctrl-U в устройство. После загрузки центральный светодиод начнет мигать красным (уже без плавного переливания).
Все получилось? Тогда двигаемся дальше!
Расположенный в центре трехцветный светодиод подключен к пинам с аппаратной поддержкой ШИМ, поэтому есть возможность плавно мигать и переливаться каждым из трех цветов через analogWrite():
- красный - пин D13
- зеленый - пин D10
- синий - пин D5
Через гребенку на подставку дополнительно выведены:
- VCC - напряжение питания MCU, в нашем случае +5В. Переключатель питания коммутирует туда напряжение питания с USB или выход микросхемы-стабилизатора 7805;
- VIN - входное напряжение от разъема питания на подставке (плюс в центре). Рекомендуется подавать +7..+12В, от переполюсовки спасет расположенный на той же подставке диод 1N4007;
- A4 - аналоговый вход, и он же - цифровой пин D22;
- A5 - аналоговый вход, и он же - цифровой пин D23;
- D17 - цифровой пин, аппаратно это PB0 - сигнал SS или PCINT0;
- D7 - цифровой пин, аппаратно это PE6 - сигнал INT6/AIN0.
Вывод осуществляется при помощи функции setState(byte greenDataOut, byte redDataOut), где надо указать два байта, для G1..G8 и R1..R8 соответственно. Если мысленно выстроить образуемый ими контур в линию, могло бы получиться следующее:
Чтобы отобразить произвольный орнамент, надо сформировать два байта в двоичном виде и передать их функции setState. Например, чтобы зажечь линейку из четырех самых нижних светодиодов (G1, R1, G8 и R8), подставим на их места единицы, получится:
1 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1
Теперь можно отдавать команду setState(B10000001,B10000001) - префикс 'B' предваряет число в двоичной записи. Если кому-то по душе шестнадцатеричная запись, тоже самое будет по setState(0x81,0x81).
Датчик звука собран в виде узла с электретным микрофоном (такие обычно можно встретить в телефонных аппаратах) и операционного усилителя LM386, выход которого подключен к аналоговому пину A0:
Усиленное звуковое колебание с выхода усилителя попадает на RC-цепочку C10 и R25, причем резистор - переменный, что дает возможность регулировки чувствительности (резистор расположен с противоположной стороны):
Таким образом, регулировать можно и аппаратно, и программно. Вот примерный скетч, демонстрирующий работу датчика:
#define BLUE 5 const int thresholdvalue=400;//The threshold to turn the led on void setup() { pinMode(BLUE,OUTPUT); } void loop() { int sensorValue = analogRead(A0);//use A0 to read the electrical signal if(sensorValue>thresholdvalue) { digitalWrite(BLUE,HIGH);//if the value read from A0 is larger than 400,then light the LED delay(200); digitalWrite(BLUE,LOW); } }
В цикле постоянно проверяется значение, считываемое с A0, и если оно превысило константу thresholdvalue, трехцветный светодиод вспыхивает на 0,2 секунды синим цветом. Если после загрузки вы уже отбили себе хлопками все руки, а реакции все нет - не забудьте покрутить переменный резистор.
Более подробную информацию можно найти в нашем wiki.
Комментариев нет:
Отправить комментарий