Светодиодный диско-пол на Arduino

Содержание

Динамическая подсветка монитора на Arduino

Светодиодный диско-пол на Arduino

Если вы любите смотреть фильмы на компьютере в темноте или играть в игры, то можно расширить возможности вашего монитора. Динамическая подсветка визуально расширяет границы экрана и благодаря ей ваши глаза будут меньше уставать. Этот проект очень прост и так как я сам новичок в общении с Arduino, могу посоветовать начинать создавать что-то для дома именно с этого проекта.

Итак, нам понадобится:

  • Любая Arduino (UNO, Nano не важно).
  • От 1-го до 2-х метров светодиодной ленты WS2812B, о которой вы можете почитать здесь, можно заказать на Aliexpress. Советую брать 60 светодиодов на метр для более качественно эффекта, но и 30 сойдет.
  • Двусторонняя липкая лента или какой-нибудь клей.
  • Источник питания 5В 2А (зарядник от планшета, например).
  • Резистор на 220 Ом.
  • Паяльные инструменты.
  • Необходимое ПО для компьютера, а именно: Arduino IDE , AmbiBox, библиотека для Arduino IDE – FastLed.

Приступим.

Подключение

На светодиодной ленте есть три контакта – Плюс (+), Земля (G, GND) и вход (IN), а так же есть стрелочки, указывающее направление сигнала по ленте. Наша задача отрезать 4 отрезка светодиодной ленты таким образом. чтобы верхняя полоска была равна нижней, правая – левой. Отмерять будем прикладывая ленту с задней части нашего монитора. В общем нужно сделать так, как на картинке ниже.

Важно, чтоб количество светодиодов сверху и снизу было одинаковым, то же касается правой и левой стороны. Так же нужно учесть направление стрелок на самой ленте и припаять по порядку, как на картинке.
Теперь нам нужно подключить ленту к Arduino согласно схеме:

Минус от питания идет к контакту G на ленте и контакту GND на самой Arduino, Плюс напрямую к контакту (+) на ленте, а управляющий провод через резистор от ленты к нужному порту. Главное запомнить порт.

Собственно, подключение на этом закончили.

Настройка

Открываем установленную Arduino IDE и устанавливаем библиотеку FastLed (В верхнем меню выбрать “Скетч” – “Подключить библиотеку” – “Добавить ZIP библиотеку” и выбрать скачанный архив с библиотекой).

Теперь с помощью Arduino IDE заливаем в Arduino скетч:

#include “FastLED.h” #define NUM_LEDS 44 // Количество светодиодов. #define PIN 6 // Порт, к которому присоединен управляющий провод. #define serialRate 115200 // Adalight отправляет «Магическое слово» (префик) перед отправкой данных. uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i; // Инициализация ленты. CRGB leds[NUM_LEDS]; void setup() {   FastLED.addLeds(leds, NUM_LEDS);   // Тест светодиодов.   LEDS.showColor(CRGB(255, 0, 0));   delay(500);   LEDS.showColor(CRGB(0, 255, 0));   delay(500);   LEDS.showColor(CRGB(0, 0, 255));   delay(500);   LEDS.showColor(CRGB(0, 0, 0));   Serial.begin(serialRate);   Serial.print(“Ada”); // Отправляем «магическое слово» для соединения с программой. } void loop() {   // Ждем первый байт из магического слова.   for(i = 0; i < sizeof prefix; ++i)   {     waitLoop: while (!Serial.available());     // Проверка следующего байта из магического слова.     if(prefix[i] == Serial.read()) continue;     // В противном случае начинаем все с начала.     i = 0;     goto waitLoop;   }   // Ждем старший и младший байт, а так же контрольную сумму.   while (!Serial.available());   hi = Serial.read();   while (!Serial.available());   lo = Serial.read();   while (!Serial.available());   chk = Serial.read();   // Если контрольная сумма не совпала, начинаем все с начала.   if (chk != (hi lo 0x55))   {     i = 0;     goto waitLoop;   }   memset(leds, 0, NUM_LEDS * sizeof(struct CRGB));   // Получаем данные и настраиваем соответствующий светодиод.   for (uint8_t i = 0; i < NUM_LEDS; i++)   {     byte r, g, b;     while(!Serial.available());     r = Serial.read();     while(!Serial.available());     g = Serial.read();     while(!Serial.available());     b = Serial.read();     leds[i].r = r;     leds[i].g = g;     leds[i].b = b;   }   // Отобразить новое состояние ленты.   FastLED.show(); }

Перед заливкой нужно указать количество светодиодов, которое у вас получилось в сумме и порт, к которому вы припаяли управляющий провод. У меня получилось 44 светодиода и использовался 6-й порт.

Если у вас лента и Arduino уже подключена к питанию, то после заливки скетча лента должна моргнуть тремя цветами, если этого не произошло, то отсоедините USB кабель и вставьте снова.

Теперь нам нужно установить программу AmbiBox.
При установке программа спросит, какое устройство будет использоваться, нам нужно указать Adalight.
В ней нам нужно перейти во вкладку “Интеллектуальная подсветка монитора”.

Затем нажать “Больше настроек”, теперь отображаются все функции.

Нам нужно указать порт, к которому подключена Arduino (цифра 1 на картинке). Нужно указать количество светодиодов, которое у нас получилось (цифра 2 на картинке). Выбрать метод захвата экрана. Тут на ваше усмотрение, поэкспериментируйте и выберите подходящее.

У меня метод Windows 8 (цифра 3 на картинке). Так же можно нажать “Показать зоны захвата” (цифра 4) и настроить их так, как наклеена лента. Ну. например, если у вас углы остались без светодиодов, то зоны можно сместить. Не забудьте во вкладке “настройки программы” включить автозапуск с Windows.

На этом все. Все уже должно работать.

Тема на форуме.

Смотрите также

Источник: http://arduino.on.kg/dinamicheskaya-podsvetka-monitora-na-Arduino

Светодиодный диско-пол на Arduino

Светодиодный диско-пол на Arduino

Для изготовления диско-пола используются 36 мм RGB-светодиоды WS2801, которые контролируются через компьютер с помощью Arduino. Я выбрал именно 36 мм светодиоды WS2801 из-за их низкого профиля (глубина 5 мм). Это позволит разместить их вдоль плиток пола.

Шаг 1: Компоненты

  • Arduino Uno R3
  • Шилд Arduino Proto Board
  • USB 2.0 A – B кабель
  • Мини макетная плата
  • Вилка и шнур электропитания
  • 36мм светодиоды WS2801 LED
  • 12V 5A сетевой выключатель
  • Прозрачные, пластмассовые, поликарбонатные листы Lexan MARGARD толщиной 5 мм
  • Деревянные рейки толщиной 9 мм и шириной 21 мм
  • Прозрачный, белый, самоклеющийся винил
  • ПК/ноутбук на ОС Windows для запуска программы Jinx!
  • Провода для подключения светодиодов

Материалы для сборки каркаса вы можете выбрать по своему усмотрению. Я бы вам посоветовал использовать листы Lexan Margard, благодаря их механической прочности и износостойкости. Прозрачный винил я выбрал в последнюю минуту, но в итоге получил то, что хотел. Мне нравится именно матированный материал, к тому же он должен быть прозрачным, а не светонепроницаемым. Величина полученного рассеивания была вполне удовлетворительной, независимо от близкого расположения светодиодов к винилу.

Шаг 2: Электрическая схема

В данном проекте используется схема, подобная модулю Adafruit: https://learn.adafruit.com/36mm-led-pixels/pwiring

Я использовал небольшую макетную плату для разделения земляных проводников модуля Arduino и светодиодов. Это позволило использовать только 4 проводника для подключения светодиодов. Плюсовой проводник идет напрямую на светодиоды от источника питания.

Я попросил квалифицированного электрика подсоединить вилку к сетевому выключателю источника питания (не стесняйтесь пользоваться услугами профессионалов).

В качестве альтернативного источника питания устройства можно использовать блок питания на 12В от переносного ПК.

Шаг 3: Программирование Arduino

Для создания световых эффектов я запрограммировал Arduino с помощью скетча Glediator (http://www.solderlab.de/index.php/downloads/category/4-glediator).

Я подключил ноутбук напрямую через USB к Arduino, поэтому мне не понадобилось изменять скорость передачи данных, которая понадобилась бы при организации соединения по Bluetooth. Теперь загрузите скетч в микроконтроллер Arduino. Убедитесь в том, что вы выбрали правильное количество пикселей в этом месте кода:

“#define Num_Pixels 120”, номера выводов указаны ниже:

int SDI = 2;
int CKI = 3;

Шаг 4: Программное обеспечение

Как я упоминал ранее, для данного проекта наиболее приемлемо использовать программное обеспечение Jinx! и скетч Glediator для управления свечением светодиодов WS2801. Я решил использовать именно Jinx!, поскольку его легко настроить. Я не использовал опцию Bluetooth соединения, поэтому смог запустить Jinx при прямом подключении к Arduino через кабель USB 2.0 A – B.

На скриншотах показаны настройки для 120 светодиодов. При этом примите во внимание, что количество используемых каналов для светодиодов/пикселей нужно умножить на 3 (R,G и B).

Как вы можете заметить на экране Fast Patch, я выбрал опцию Snakelines из-за типа заказанных светодиодов.

Порядок каналов GBR, а не RGB, поскольку заказанные светодиоды имели тип 36 мм WS2801 Green Blue Red (Зеленый, синий, красный).

Настройки COM порта для передачи данных в Arduino могут быть изменены в Диспетчере устройств на ОС Windows.

Для выбора желаемого эффекта нажмите Setup > Start Output (Настройка – Передать на выход) и посмотреть, как будут гореть ваши светодиоды. Последняя версия Jinx! позволяет запрограммировать несколько зон, поэтому я использовал данную функцию для различного свечения 6 зон – стробирующий эффект, бегущий «авто цвет» и «управление звуком» в стиле диско 70-х!!!

На Android устройстве или iPad вы можете использовать приложение управления рабочим столом для удаленного управления вашим ПК/ноутбуком.

Загрузите программное обеспечение отсюда: http://www.live-leds.de/jinx-v2-0-a-double-jinx-in-one/

Шаг 5: Конструкция – Каркас пола

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

Размер каркаса составляет 1640 мм на 930 мм. В проекте используется 120 пикселей, их можно организовать в виде матрицы 8 на 15. Деревянные планки имеют ширину 21 мм, что позволит создать квадрат размером от 90 до 100 мм вокруг каждого пикселя.

Для экономии материалов мы поместили 16 планок в длину (1640 мм) и затем поместили более короткие планки длиной 98 мм за каждым пикселем. Для размещения проводов мы прорезали небольшие прорези под каждым элементом пикселя. Все пиксели и деревянные планки были склеены с помощью пистолета для склеивания и большого количества клея!

Шаг 6: Конструкция – пол Lexan

После проведения нескольких экспериментов я остановился на листах Lexan Margard, которые имеют защиту от «истирания» и фактически являются прозрачным, «небьющимся» плексигласом. Я выбрал листы толщиной 5мм. Благодаря каркасу с размером ячеек 10 см данная конструкция сможет выдержать стулья и высокие каблуки.

Шаг 7: Рассеивающий винил

На последнем этапе данного проекта используется рассеивающий материал. Я использовал прозрачный, самоклеющийся винил. Данный материал позволяет светодиодам светиться ярко, и в то же время оставаться невидимыми для глаз. Как вариант, можно использовать матовый винил.

Шаг 8: Заключение

Листы Lexan, с расположенным под ним прозрачным винилом, необходимо разместить наверху каркаса и приклеить по краям силиконом.

Испытайте новый эффект свечения «Chases» с помощью программного обеспечения Jinx! Я настроил различную последовательность срабатывания (посмотрите видео проекта).

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

Добавьте данный ярлык в папку автозагрузка ОС Windows и светодиоды будут загораться в требуемой последовательности при загрузке Windows.

Оригинал статьи

Прикрепленные файлы:

  • glediator_v2_0_3.zip (1305 Кб)

Источник: http://cxem.net/arduino/arduino147.php

Управление светодиодной RGB лентой через arduino

Светодиодный диско-пол на Arduino

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

Ардуино – принцип действия

плата Arduino

Плата Ардуино – это устройство, на котором установлен программируемый микроконтроллер.

К нему подключены различные датчики, органы управления или encoder и, по заданному скетчу (программе), плата управляет моторами, светодиодами и прочими исполнительными механизмами, в том числе и другими платами Ардуино по протоколу SPI.

Контроль устройства может осуществляться через дистанционный пульт, модуль Bluetooth, HC-06, Wi-Fi, ESP или internet, и кнопками. Одни из самых популярных плат – Arduino Nano и Arduino Uno, а также Arduino Pro Mini – устройство на базе микроконтроллера ATmega 328

Внешний вид Arduino Pro MiniВнешний вид Arduino UnoВнешний вид Arduino micro

Программирование осуществляется в среде Ардуино с открытым исходным кодом, установленным на обычном компьютере. Программы загружаются через USB.

Принцип управления нагрузкой через Ардуино

управление Arduino

На плате есть много выходов, как цифровых, имеющих два состояния — включено и выключено, так и аналоговых, управляемых через ШИМ-controller с частотой 500 Гц.

Но выходы рассчитаны на ток 20 – 40 мА с напряжением 5 В. Этого хватит для питания индикаторного RGB-светодиода или матричного светодиодного модуля 32×32 мм. Для более мощной нагрузки это недостаточно.

Для решения подобной проблемы во многих проектах нужно подключить дополнительные устройства:

  • Реле. Кроме отдельных реле с напряжением питания 5В есть целые сборки с разным количеством контактов, а также со встроенными пускателями.
  • Усилители на биполярных транзисторах. Мощность таких устройств ограничена током управления, но можно собрать схему из нескольких элементов или использовать транзисторную сборку.
  • Полевые или MOSFET-транзисторы. Они могут управлять нагрузкой с токами в несколько ампер и напряжением до 40 – 50 В. При подключении мосфета к ШИМ и электродвигателю или к другой индуктивной нагрузке, нужен защитный диод. При подключении к светодиодам или LED-лампам в этом нет необходимости.
  • Платы расширения.

Подключение светодиодной ленты к Ардуино

подключение светодиодной ленты к ArduinoArduino Nano могут управлять не только электродвигателями. Они используются также для светодиодных лент. Но так как выходные ток и напряжение платы недостаточны для прямого подключения к ней полосы со светодиодами, то между контроллером и светодиодной лентой необходимо устанавливать дополнительные приспособления.

Через реле

Подключение через реле

Реле подключается к устройству на цифровой выход. Полоса, управляемая с его помощью имеет только два состояния — включенная и выключенная.

Для управления red-blue-green ленточкой необходимы три реле. Ток, который может контролировать такое устройство, ограничен мощностью катушки (маломощная катушка не в состоянии замыкать большие контакты).

Для подсоединения большей мощности используются релейные сборки.

С помощью биполярного транзистора

Подключение с помощью транзистора

Для усиления выходного тока и напряжения можно использовать биполярный транзистор. Он выбирается по току и напряжению нагрузки. Ток управления не должен быть выше 20 мА, поэтому подается через токоограничивающее сопротивление 1 – 10 кОм.

Транзистор лучше применять n-p-n с общим эмиттером. Для большего коэффициента усиления используется схема с несколькими элементами или транзисторная сборка (микросхема-усилитель).

С помощью полевого транзистора

Кроме биполярных, для управления полосами используются полевые транзисторы. Другое название этих приборов – МОП или MOSFET-transistor.

Такой элемент, в отличие от биполярного, управляется не током, а напряжением на затворе. Это позволяет малому току затвора управлять большими токами нагрузки – до десятков ампер.

Подключается элемент через токоограничивающее сопротивление. Кроме того, он чувствителен к помехам, поэтому выход контроллера следует соединить с массой резистором в 10 кОм.

С помощью плат расширения

Подключение Arduino с помощью плат расширения

Кроме реле и транзисторов используются готовые блоки и платы расширения.

Это может быть Wi-Fi или Bluetooth, драйвер управления электродвигателем, например, модуль L298N или эквалайзер. Они предназначены для управления нагрузками разной мощности и напряжения. Такие устройства бывают одноканальными – могут управлять только монохромной лентой, и многоканальными – предназначены для устройств RGB и RGBW, а также лент со светодиодами WS 2812.

Пример программы

Arduino и светодиодная лента

Платы Ардуино способны управлять светодиодными конструкциями по заранее заданным программам. Их библиотеки можно [link]скачать с официально сайта[/link], найти в интернете или написать новый sketch (code) самому. Собрать такое устройство можно своими руками.

Вот некоторые варианты использования подобных систем:

  • Управление освещением. С помощью датчика освещения включается свет в комнате как сразу, так и с постепенным нарастанием яркости по мере захода солнца. Включение может также производиться через wi-fi, с интеграцией в систему «умный дом» или соединением по телефону.
  • Включение света на лестнице или в длинном коридоре. Очень красиво смотрится диодная подсветка каждой ступеньки в отдельность. При подключении к плате датчика движения, его срабатывание вызовет последовательное, с задержкой времени включение подсветки ступеней или коридора, а отключение этого элемента приведет к обратному процессу.
  • Цветомузыка. Подав на аналоговые входы звуковой сигнал через фильтры, на выходе получится цветомузыкальная установка.
  • Моддинг компьютера. С помощью соответствующих датчиков и программ цвет светодиодов может зависеть от температуры или загрузки процессора или оперативной памяти. Работает такое устройство по протоколу dmx 512.
  • Управление скоростью бегущих огней при помощи энкодера. Подобные установки собираются на микросхемах WS 2811, WS 2812 и WS 2812B.

инструкция

Источник: https://LampaExpert.ru/svetodiodnaya-lenta/podklyuchenie-i-upravlenie-arduino

Glediator

Светодиодный диско-пол на Arduino

Glediator stands for Graphical LEDInstallation AnimaTOR and is a small piece of software to control led matrix and led stripe installations.

Glediator is written in Java and thus platform independent.

Glediator can drive led installations made of:

  • our true color matrix driver boards,
  • stripes & matrices made of WS2801 pixels,
  • stripes & matrices made of WS2811 / WS2812 pixels (also called Neo-pixels),
  • any light installation that receives ArtNet data, as well as
  • any light installation that receives TPM2 & TPM2.Net data.

On this page (external link) you will find a lively discussion about Glediator and ongoing progress (became a really long thread meanwhile).

Glediator in action

This clip is showing an old version of Glediator since there are drastic changes to the curent version an updated clip will be added soon. 

Installation

Just download the zip file of the latest software version from the download section and extract it to a folder on your local hard drive.

To be able to use Glediator's serial output you will have to install the RXTX library on your system. A simple google search for “RXTX” followed by your system (e.g.

“Win 7 64bit”) will guide you easily to the RXTX page were you will find corresponding files for download as well as a short installation manual. It's really not a big deal.

just start Glediator by a double click on “Glediator.jar” or by using the command “java -jar Glediator.jar” from within a console.

Data output

Glediator can shift data out via serial interface (COM ports as well as virtual COM ports) and via Ethernet (ArtNet, TPM2.Net). The serial interface can be adjusted up to 1000000 baud allowing to push out frames as big as about 1000 pixels with a frame rate of 24 FPS.

Via Ethernet much bigger matrices can be supplied with data. Glediator has no restrictions to the matrix size. However, you will certainly come to the point were the power of your PC's CPU will not be sufficient to calculate huge matrices in the range of 200×200 Pixels.

Stripes & Matrices made of WS2801-Pixels

If you want to control an LED stripe / matrix made of the legendary WS2801 pixels and you have an Arduino you can just download the Arduino sketch from here and operate your matrix by Glediator! The baud rate in the firmware is set to 500000 baud.

If you configure Glediator output just choose this baud rate, select “Glediator Protocol” as output type and select your particular pixel oder / board order (latter one only if you divided your matrix into sub matrices). Choose your Arduino's COM port and your are done.

The firmware can handle up to 512 Pixels on an Arduino UNO / Leonardo / Micro / Mini.

If you have a bigger matrix / stripe we also have a version of the firmware for Arduino MEGA.

If you use it you have to set baud rate within Glediator to 1000000 baud!! It also may be necessary to disable the “auto reset” function of the mega (depends on your particular version).

How to do this can be figured out with a simple google search! The Mega's version of the WS2801 firmware can handle up to approx. 1024 pixels.

Note: In both version of the firmware you have to adjust the number of pixels in the header of the code before uploading it to the Arduino. You can also set the Arduino pins for DATA and CLK there.

Stripes & Matrices made of WS2811 / WS2812-Pixels (Neo-Pixel) [NEW]

Since LEDs with integrated PWM controller become more and more popular (and cheaper) many people were asking for steering these guys with Glediator. And here we go: We made a sketch for all kind of Arduino boards (UNO, Leonardo, Mini, Micro, Mega, etc.) that receives serial data and feeds stripes / matrices of WS2811/WS2812 pixels. You can download the sketch here. 

The firmware can handle up to 512 pixels. It uses a fixed baud rate of 1000000 baud. Set color order to BRG within Glediator. It's highly recommended to put a resistor (100-200Ohm) into the data line. It's also no bad choice to add a 220µF capacitor to the power line of the stripe / matrix.

Note: You have to adjust the number of pixels in the header of the code before uploading it to the Arduino. You can also set the Arduino pin for DATA there.

By the way: You can find a selection of certain Neo-pixel stripes / matrices / arrangements for moderate amount of money in the Agile Hardware web shop.

Current Version

The current Version of Glediator Software is V2.0.3. Latest changes are:

    1. Added functionality to File recorder UIB upload
    2. Number of boards is now updated when changing matrix size

A complete change log can be found here. 

Manual

Will follow within the next future. For the moment just feel free to try out. You can't do any mistakes!

GRC – Glediator Remote Control

A very small program written in JAVA that allows you to remotely control Glediator via Network. You can find GRC in the download section.

The used protocol is described here (external link).

A more detailed manual for GRC will follow in the next future.

Источник: http://www.solderlab.de/index.php/software/glediator

RGB Led strip controlled by filtered audio signals using an arduino

Светодиодный диско-пол на Arduino

This will be my first post in this blog, actually this will be my first post ever.

I started working with an arduino about two years ago and didn't really keep track of my projects, I used to build a project and then tear it down when needed some parts for a new project.

So I decided to write a bit about some former projects before starting to write about current projects, most of them are not working today but at least me or you will be able to reconstruct them using this blog.

Today I will describe a project I built about a year ago, with a led strip (RGB), where the different colors in the strip will turn higher/lower by the different frequencies of a sound wave coming from a microphone.

The red leds are controlled by the low frequencies (bass), the green by the mid frequencies and the blue by the high frequencies.

Here's a video to show you how it looks (I think I made a few more adjustments after filming this):

What you need? 1 x Arduino (Uno,nano,mini-pro…

Whatever you work best with) 4 x Resistors (The values can be adjustable) 1 x Ceramic capacitor 3 x TIP31C npn transistor

1 x Microphone sensor (EDIT: I was referred by the maker fabi that this link is to an audio sensor which outputs low values when there is sound. This is not the module I have used. I couldn't find mine on Ebay, but a similar one would be on this link )

1 x 5050 RGB led strip and…

1 x Arduino code

Our basic circuit looks this:

Arduino uno might be an easy option to choose to build this circuit, I however have used the arduino mini pro, since I wanted to make it as small as possible, put it on a PCB and take it with me to parties 😛

Output

Let's start with the easy part, the output. In order to light few dozens of leds, you will need a lot of current, much more current than the arduino can give. That's why we will use our friendly awesome electronic part – the transistor.

I chose to use the TIP31C because it can stand high currents, so basically you can connect many led strips together and it will still work. For those who never used a transistor – the idea is pretty simple, the transistor has three pins – Collector, base and emitter. We connect our circle through the collector to the emitter.

The base is the “switch”, connected to the arduino, and the arduino will control the switch by changing the pins state and allowing small amount of current to flow through it.

The output circle goes as follows – The black wire is connected from the strip to the power, usually 12V, and the red, green and blue wires which usually connected from the strip to the ground, are now connected to the collector pin, followed by the emitter pin which is connected to the ground.

Each of the base pins of the transistors is then connected to one of the PWM pins of the arduino together with a resistor. At this point I would suggest using a variable resistor and then load the arduino one of the example codes which use PWM and checks the reaction.

You will see that the PWM controls the entire strip, turning the leds brighter and darker, and the variable resistor does the same. After you play with it a bit you will find the right resistor to connect the base pin (I used 470 Ohm).

Important note at this point – I've used the same power supply for the strip and the arduino, connecting it to the Vin/Raw pin. Most arduino can take 7-12V from this pin. If you use different power sources remember to connect both grounds!!!

Input

After we have convinced it is easy to control the strip we can connect the microphone. All modules usually have the same pins – “Vin”,”GND” and “OUT”. My module was designed such that 12V were needed at “Vin” but sometimes it can be less so make sure you are not supplying more voltage than needed.

The “GND” connection is obvious, and the “OUT” goes to one of the Analog Pins of the arduino. The signals you would received from the microphone are voltage values which change according to the voice perceived. The human ear can hear sounds up to 20Khz, for this project signals up to 8Khz would be enough.

There are not so many music instruments who has energy only at high frequencies. In order to filter the signal up to 8Khz we use an analog Low Pass Filter (LPF), using resistor and capacitor. As seen in the scheme, the “OUT” pin goes through the resistor, then to A0 pin, and the capacitor connects the resistor/A0 and the ground.

It is recommended to use ceramic capacitor because it has a better frequency response. To simplify, the values of the electronic parts can be determine by the next rule: Assuming we have resistor with value R and capacitor with value C.

The frequency f where: $f = \frac{1}{2 \pi R C}$ is the cut-off frequency, meaning that lower frequencies will be almost not filtered at all and higher frequencies will be almost filtered completely. I chose capacitor of 100nF and resistor of 220 Ohm which gives cut-off frequency of around 7.23Khz.

CODE

Everything is connected and we can finally go to the code. My code can be found on github, however it was one of the first codes I ever wrote to an arduino so it is pretty messed up. I'll give some notes on the code but if you build this project and re-write the code I'll be happy to publish your code here instead and give you the credit.

Sampling

According to the Nyquist–Shannon sampling theorem, when sampling analog signals into digital signals we must use sampling of at least twice the maximum frequency of the signal. If we use lower sampling rate the sampled data will be distorted.

In our case the sampling frequency should be at least 16Khz since the maximum frequency is 8Khz (Hey, don't you glad we used that LPF before? That was the main reason!).
Usually we will use the digitalRead() function in order to get the analog values from the A0 pin but this function can be rather slow and might not be fast enough for our sampling rate.

Therefore, we can set the A2D to 8 bits instead of 10 bits, read the register directly, and by that save a lot of time. Here is the code that should be in the setup:

ADCSRA = 0; ADCSRB = 0; ADMUX |= (1

Источник: http://www.whatimade.today/lets-make-some-signal-processing-with-an-arduino/

Ардуино: управление светодиодной матрицей 8×8

Светодиодный диско-пол на Arduino

На предыдущих уроках мы научились управлять группой из восьми светодиодов при помощи сдвигового регистра. Это оказалось немного сложнее, чем зажигать 1-2 светодиода напрямую с выводов общего назначения.

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

Теперь пришло время еще немного усложнить задачу: учимся работать со светодиодной матрицей.

1. Матричный индикатор

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

А что будет, если мы разместим светодиоды не в виде цифры или шкалы, а в виде сетки? Получится уже вполне себе графический индикатор. То есть такой, на котором можно отобразить не только число, но и какое-то изображение.

Такая сетка называется матричным индикатором, а в случае использования светодиодов —  светодиодной матрицей. Разрешение матричного индикатора — это количество точек по горизонтали и вертикали. Например, самые распространенные индикаторы имеют разрешение 8×8 точек.

Если требуется светодиодная матрица с большим разрешением, то её просто-напросто составляют из нескольких 8×8 индикаторов. Как это делать, мы увидим позже. А пока разберемся как соединяются все 64 светодиода внутри матрицы.

Конечно, можно бы было как и в случае семисегментного индикатора соединить все светодиоды общим катодом или анодом. В этом случае нам бы потребовалось либо 64 вывода контроллера, либо 8 сдвиговых регистров. Оба варианта весьма расточительны.

Более правильный вариант — объединить светодиоды в группы по 8 штук с общим катодом. Пусть это будут столбцы матрицы. Затем, параллельные светодиоды в этих столбцах объединить снова в группы по 8 штук уже с общим анодом. Получится вот такая схема:

Предположим, стоит задача зажечь светодиод R6C3. Для этого нам потребуется подать высокий уровень сигнала на вывод R6, а вывод C3 соединить с землей.

Не выключая эту точку, попробуем зажечь другую — R3C7. Положительный контакт питания соединим с R3 и землю с C7. Но в таком случае строки R6 и R3 будут пересекаться с колонками C3 и C7 не в двух, а  в четырех местах! Следовательно и зажжется не две, а четыре точки. Проблема!

Очевидно, что помочь сможет всё та же динамическая индикация. Если мы будем включать точки R6C3 и R3C7 по-очереди очень быстро, то сможем использовать персистентность зрения — способность интерпретировать быстро сменяющиеся изображения как одно целое.

2. Светодиодная матрица и сдвиговые регистры

В нашем уроке мы будем подключать к Ардуино Уно самую простую светодиодную матрицу 8×8 красного свечения. Нумерация выводов начинается с нижнего левого угла. При этом, нумерация ног 1-16 не связана никакой логикой с нумерацией колонок и строк C и R.

Ориентируясь на урок про динамическую индикацию, попробуем использовать в схеме управления матричным индикатором 8-битные сдвиговые регистры. Один регистр подключим к выводам индикатора, отвечающим за колонки, а второй к выводам строк.

Принципиальная схема

Важное замечание №1. Необходимо, чтобы резисторы в этой схеме были на линиях, идущих от первого сдвигового регистра. Этот сдвиговый регистр отвечает за колонки. При таком подключении, каждый резистор будет задавать ток только для одного светодиода на каждом шаге динамического алгоритма. Следовательно, все светодиоды будут светиться равномерно.

Важное замечание №2. Указанная выше схема носит сугубо ознакомительный характер. Правильнее будет включить в разрыв между вторым регистром и матрицей дополнительную силовую микросхему, например транзисторную сборку ULN2003.

3. Программа

Чтобы было веселей, попробуем высветить на индикаторе смайлик. Как уже было сказано, для вывода изображения на матрицу воспользуемся динамической индикацией. А именно, будем высвечивать нашу картинку построчно. Сначала зажжем нужные колонки в самой верхней строке, затем во второй, в третьей, и так все 8 строк.

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

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

Исходный код

const byte data_pin = PD2;const byte st_pin = PD3;const byte sh_pin = PD4; unsigned long tm, next_flick;const unsigned int to_flick = 500; byte line = 0; const byte data[8] = { 0b00111100, 0b01000010, 0b10100101, 0b10000001, 0b10100101, 0b10011001, 0b01000010, 0b00111100}; void latchOn(){ digitalWriteFast(st_pin, HIGH); digitalWriteFast(st_pin, LOW);} void fill( byte d ){ for(char i=0; i

Источник: http://robotclass.ru/tutorials/arduino-led-matrix-8x8/

:

DC-DC регулируемый преобразователь 1.5-37В 2А с индикаторомКупить 5 $ ВетрогенераторКупить 150 $ AVR-программатор USB ASPКупить 4 $

Для изготовления диско-пола используются 36 мм RGB-светодиоды WS2801, которые контролируются через компьютер с помощью Arduino. Я выбрал именно 36 мм светодиоды WS2801 из-за их низкого профиля (глубина 5 мм). Это позволит разместить их вдоль плиток пола.

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография

0

Средний балл статьи: 0 Проало: 0 чел.

Источник: https://readtiger.com/cxem.net/arduino/arduino147.php

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.