Перейти к содержимому

Open

Фотография
- - - - -

Простой контроллер

Arduino Nano

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 93

#1 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 04 Сентябрь 2015 - 15:24

Всем добрый день.
В процессе вспоминания синтаксиса набросал небольшую программку для Arduino Nano, который может выполнять роль контроллера светодиодов.
Изначально, до углубленного знакомства с темой контроллеров я именно такую "машинку" и искал. Набросав программку, подумал, вдруг кому то пригодится. Сразу скажу, что на комментарии я потратил столько же, а может и больше времени, чем на саму программу, поэтому не обольщайтесь, она чудеса творить не будет. Но если аккуратно подходить к заполнению переменных и следовать инструкции она свою функцию выполнит.
 
Получить результат может любой. Если Вы интересуетесь этим, то вы в состоянии подключить Arduino Nano к RTS и как следствие к драйверу и к светодиодам.
 
Я уверен, что это никто не воспроизведет и пользоваться этим не будет. Но возможно это поможет Вам начать самому разбираться в контроллерах, так же как и мне когда-то соседние темы этого форума.
 
И так:
 
Что может:
 
- Имеет шесть каналов
- Регулируется каждый канал по мощности
- Регулируется общая мощность светильника
- Настройка происходит из ПО Arduino IDE, путем внесения изменений в сам сетч.
- Изменение мощности происходит раз в секунду.
 
 
Что нужно:
 
- ПК
- Arduino Nano $3.48 (MINI USB Nano V3.0 ATmega328P CH340G 5V 16M Micro-controller board for Arduino), например вот по этой ссылке http://www.ebay.com/...=item41923901f2
- RTC-module $0.99 (Arduino I2C RTC DS1307 AT24C32 Real Time Clock Module For AVR ARM PIC SMD), например вот по этой ссылке http://www.ebay.com/...=item27cb0c9d5e
- батарейка для модуля времени (RTC-module), LIR2032, ну это в любом магазине. Я купил за 70р.
 
p.s.: Arduino Nano и РТС-модуль при заказе через Ебэй нужно ждать от трех до пяти недель. Но я знаю, что и в России вполне можно приобрести данные вещи, правда немного по другой цене.
p.p.s.: Почему АрдуиноНано? Потому, что это достаточный дивайз с мини-usb на борту.
 
Что можно еще:
 
- Купить вот такую платку http://www.ebay.com/...=item1c3532201e
- Отдельный блок питания для питания Arduino Nano в то время, когда он не подключен к ПК.
- Драйвера http://www.ebay.com/...=item25a5dec0da, но это уже углубление в конструкцию светильника.
- Плату светодиодов. Я долго не искал, вот например первая попавшаяся (на мой взгляд вариант 2 более предпочтителен) http://www.ebay.com/...=item1c4fc4d871, но еще раз повторюсь это не относится к теме.
 
Ложка дегтя:
 
- Поддерживать данный проект не буду.
- Развивать данный проект некуда. Хотя можно основываясь на этом же принципе добавить http://www.ebay.com/...=item3d01cbc642и получить 12 битный шим на 16 каналов.
- При малой мощности и при быстрых рассветах и закатах будет виден скачек освещенности на канале. Вызвано низким шимом и дискретностью в одну секунду.
- Настройка производится прямо в программе, что может повлечь за собой нечаянные действия по изменению кода. Надо быть немного внимательным и аккуратным при вводе и все будет ОК.
 
p.s.: Уже чую комментарии "бывалых"... )))
 
 
И так:
 
1. Покупка.
- Arduino Nano $3.48 (MINI USB Nano V3.0 ATmega328P CH340G 5V 16M Micro-controller board for Arduino), например вот по этой ссылке http://www.ebay.com/...=item41923901f2
- RTC-module $0.99 (Arduino I2C RTC DS1307 AT24C32 Real Time Clock Module For AVR ARM PIC SMD), например вот по этой ссылке http://www.ebay.com/...=item27cb0c9d5e
- батарейка для модуля времени (RTC-module), LIR2032, ну это в любом магазине. Я купил за 70р.
 
желательно сразу рассмотреть приобретение драйверов, светодиоды, блок питания светодиодов и радиатор для светодиодов.
 
2. Подготовка ПК.
- Скачиваем на официальный сайт и скачиваемым программу в соответствии с Вашим ПК https://www.arduino..../Main/Software/
- Устанавливаем программу Arduino IDE (программа для программирования контроллеров).
- Подключаем (на макетной плате, с помощью паяльника - без разницы) Arduino Nano к RTC-module. У меня нет программы визуализации, но на RTC-module четыре выхода:
  VCC - подключаем к +5 Arduino Nano или БП
  GND - Подключаем к "земле"
  SDA - Подключаем к выходу A0 Arduino Nano. 
  SCL - Подключаем к выходу A1 Arduino Nano. Данные выходы можно легко менять в программе на любые другие.
- Подключаем Arduino Nano к ПК чезер USB кабель.
- Подключаем БП к Arduino Nano и RTC-module. Важно, все выходы "земля" должны быть соединены между собой.
- Скачиваем скетч (так называется программа для контроллера). http://файлообменник...6th40l83ex.html
- Запускаем скетч, он открывается в программе Arduino IDE.
 
3. Настройка.
- Мы видим вот такую картинку и нам нужно выбрать тип нашего Ардуино. Делаем так:
2.png
 
- После подключения Arduino Nano к ПК в Диспетчере устройств ПК должен появиться новый порт
4.png
 
- Указываем новый порт в программе Arduino IDE
3.png
 
- Перед собой вы видите готовый скетч для загрузки в Arduino Nano. В нем вы можете и должны производить необходимые для Вас настройки:
На картинке ниже поле 1: Это общая мощность светильника.
На картинке ниже поле 2: При первоначальном запуске необходимо убрать знак "//" вначале строки это необходимо для первоначальной установки времени в RTC-module.
На картинке ниже поле 3: Тут при первоначальной установки времени необходимо ввести дату и время.
На картинке ниже поле 4: Это основные настройки параметров рассвета и заката. Дикое неудобство в там, что вносить данные нужно в минутах с начала дня. В комментариях это объяснено. Надеюсь не запутаетесь.
5.png
 
- Еще одно место для внесения данных это на рисунке ниже. В большей степени тут ничего изменять не нужно, это просто справочные данные. При просмотре моих скриншотов ориентируйтесь на номера строк
На картинке ниже поле 5: Номера строк
На картинке ниже поле 6: Это номера выходов у Arduino Nano, которые ответствуют каналам. 
6.png
 
- После внесение желаемых диапазонов работы каналов, их мощности нужно загрузить эти данные в контроллер. Открываем "Монитор последовательного порта", <поле 7> и жмем на "Вгрузить", <поле 8>
7.png
 
- Сначала, после открытия "Монитор последовательного порта" увидим это
9.png
 
- А после удачной загрузки это:
8.png
 
- И это
10.png
 
p.s. А вообще дурная идея. Программа делается час. Описывается часа три... )))

Прикрепленные изображения

  • 1.png

  • mr. J, basopotam, lexx8691 и еще 1 это нравится

#2 bbasil

bbasil

    Штатный зануда

  • Пользователи
  • PipPipPip
  • Cообщений: 3 124
  • Меня зовут:Василий
  • Откуда:Моск.обл., Одинцовский р-н,"КП Опушка" (Кокошкино)

Отправлено 04 Сентябрь 2015 - 16:40

а интерфейс пользователя где ?:)



#3 Age

Age

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 401
  • Меня зовут:Саша
  • Откуда:USA

Отправлено 04 Сентябрь 2015 - 22:11

:biggrin:  дык вот же: post-379-0-23587600-1441367899.png


  • Sleepy, DNK и mascod это нравится

#4 romica

romica

    Новичок

  • Пользователи
  • Pip
  • Cообщений: 44
  • Меня зовут:Роман
  • Откуда:Москва Крылатское, МО Красногорск

Отправлено 05 Сентябрь 2015 - 21:06

Класс! Сегодня заказал на "Али" плату за 180руб, , часы с батарейкой за 74 руб.  Через месяц буду пробовать! Если все заработает, то это будет не контроллер..., а ХАЛЯВА! Спасибо, Sinnpriest!



#5 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 09 Сентябрь 2015 - 13:34

Обнаружил баг. Верный код в 18-ой строке:

18: int long Array[7][5];



#6 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 09 Сентябрь 2015 - 15:09

Извините:

Обнаружил баг. Верный код в 14-ой строке:

14: int long Array[7][5];



#7 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 09 Сентябрь 2015 - 16:57

Подумав, решил тут задать вопрос, так, как в этой ветке много знающих людей. Может подскажете.

 

Конечно же, нас интересуют рассветы и закаты. Даже это относится к контроллеру описному выше.

 

В основном на этом форуме для увеличения битности шима используют такое устройство:

servo.JPG

 

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

tlc5940.JPG

 

Но суть вопроса вот в чем.

Я использую выход шим сразу с ноги ардуино, и подаю сигнал на драйвер.

вид такой: analogWrite (3, [0 - 255]); т.е. на выход D3 записываю с 0 до 255.

 

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

dr700.JPG

 

А при использовании такого драйвера, светодиод наоборот постепенно гаснет.

dr1500.JPG

 

 

 

С похожим непонятным явлением я столкнулся с ковырянием с данным девайсом, чтоб плавно зажечь свет мне нужно уменьшать показатель с 4095 до 0. Т.е. на 0 максимальная яркость.

tlc5940.JPG

 

 

Кто-нибудь сталкивался с таким явлением? Как его поймать? Фиксить?

 

Просто в ближайшем будущем я хочу использовать оба типа драйвера.

4 канала 

dr1500.JPG

2 канала

dr700.JPG

 

и тут возникает вопрос, раз они по разному понимают pwm-сигнал: как писать программу??? )))



#8 basopotam

basopotam

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 3 232
  • Меня зовут:Антон
  • Откуда:Москва-Королев

Отправлено 09 Сентябрь 2015 - 17:23

Класс! Сегодня заказал на "Али" плату за 180руб, , часы с батарейкой за 74 руб.  Через месяц буду пробовать! Если все заработает, то это будет не контроллер..., а ХАЛЯВА! Спасибо, Sinnpriest!

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

http://seaforum.aqua...-dms-500pl-72l/



#9 bbasil

bbasil

    Штатный зануда

  • Пользователи
  • PipPipPip
  • Cообщений: 3 124
  • Меня зовут:Василий
  • Откуда:Моск.обл., Одинцовский р-н,"КП Опушка" (Кокошкино)

Отправлено 09 Сентябрь 2015 - 17:30

Каждому каналу присвоить некий признак необходимости инвертирование сигнала, далее сигнал инвертировать по необходимости setPWM(pin0,4096- pwm-signal)

#10 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 09 Сентябрь 2015 - 19:27

Каждому каналу присвоить некий признак необходимости инвертирование сигнала, далее сигнал инвертировать по необходимости setPWM(pin0,4096- pwm-signal)

Это реализовано непосредственно в языке? Я не видел примеров нигде. Есть где посмотреть.

 

А вообще какая то запутанность получается:

Например есть скетч из начала топика, я его подключаю к через один драйвер (700мА), все работает отлично. Подключаю через другой драйвер (тот, что до 1.5А), получается, что все начинает работать зеркально. Не хорошо. Хотя тот драйвер, что на 1.5А при перезагрузках ведет себя более корректно, не зажигает все диоды. Таким образом написанное ПО должно иметь еще сноску, с каким типом драйверов оно работает. Или его нужно усложнять делая настройку по возможности "зеркалить" каналы.

 

Опять же развивая тему получается, что если доработать скетч из начала топика для работы ардуино совместно с TLC5940, то драйвер на 1.5А в этот раз работает корректно по отношению к описанию в программе (если пишу, что нужно плавно включиться от 0 до 4095, то он плавно включается), в то время, когда драйвер на 700мА начинает работать зеркально (при цикле значений на канале от 0 до 4095, начинает плавно выключаться)..

 

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

 

Нет в жизни справедливости и унификации... )))



#11 bbasil

bbasil

    Штатный зануда

  • Пользователи
  • PipPipPip
  • Cообщений: 3 124
  • Меня зовут:Василий
  • Откуда:Моск.обл., Одинцовский р-н,"КП Опушка" (Кокошкино)

Отправлено 09 Сентябрь 2015 - 21:26

Да программа должна знать с каким типом драйвера она работает. То есть на каждый канал должен быть некий флаг, устанавливающий в каком режиме данный канал должен работать, в прямом или инверсном, ну а далее уже при выставлении значения PWM анализируется состояние этого флага, если не взведен, к примеру:

if (flag==0) analogWtite(pin0,pwmValue); else analogWrite(pin0,255-pwmValue);



#12 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 10 Сентябрь 2015 - 08:57

Да программа должна знать с каким типом драйвера она работает. То есть на каждый канал должен быть некий флаг, устанавливающий в каком режиме данный канал должен работать, в прямом или инверсном, ну а далее уже при выставлении значения PWM анализируется состояние этого флага, если не взведен, к примеру:

if (flag==0) analogWtite(pin0,pwmValue); else analogWrite(pin0,255-pwmValue);

Спасибо.

Это несколько неожиданно для меня случилось...Не ожидал, что драйвера могут отличаться друг от друга правилами приема pwm-сигнала...



#13 bbasil

bbasil

    Штатный зануда

  • Пользователи
  • PipPipPip
  • Cообщений: 3 124
  • Меня зовут:Василий
  • Откуда:Моск.обл., Одинцовский р-н,"КП Опушка" (Кокошкино)

Отправлено 10 Сентябрь 2015 - 09:57

;-) а ты думал, что в сказку попал? :-D

#14 balabollng

balabollng

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 5 438

Отправлено 10 Сентябрь 2015 - 14:11

Спасибо.
Это несколько неожиданно для меня случилось...Не ожидал, что драйвера могут отличаться друг от друга правилами приема pwm-сигнала...

Я конечно опять буду воспринят как нехороший человек, но народ... Когда вы начнете наконец даташиты читать? Вы столько гемора имеете...

Вспоминается дедовская поговорка - лентяй надорался... два раза не хотел ходить.

Может опять открою "Америку" но то, что вы тут "страдаете" уже "выстрадано" и имеет вполне готовые решения. Именно на ардуино. Просто нужно воспользоваться англоязычным поиском.

Вот первый попавшийся пример - http://m.youtube.com...h?v=E0oZzMSKLUQ

Хочу заметить, что человек, замечу, достигший существенных итогов, говорит, как боролся за каждый байт. Причем, я точно знаю, что не сам функционал тому виной, а реализация меню. Т. в. именно это является камнем предкновения для всех. Ну нафига делать интерфейс, когда делаешь для себя? Лень неумолимо побеждает и рождается либо вот такой вариант, где все в коде задается, а он совершенно бессмысленен для окружающих, т. к. тот кто код поправить может уж как-то и сам может написать, либо рождаются интерфейсы-мутанты. Баги в 90% именно в интерфейсах. А т. к. процессорное время тратиться и на интерфейс и на исполнение, то баги интерфейса отражаются на исполнении. Делая всю систему - полной ерундой.

Итого, повторюсь, исполнение и управление исполнительными устройствами нужно разносить. Для интерфейса использовать заточенное под это устройство.
Мне не важно ваше мнение. Мне важны ваши дела.

#15 balabollng

balabollng

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 5 438

Отправлено 10 Сентябрь 2015 - 14:30

А вот человек код выложил - https://code.google....roller-arduino/

И свой контакт;)
Мне не важно ваше мнение. Мне важны ваши дела.

#16 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 10 Сентябрь 2015 - 16:09

Все правильно пишешь.

Я это делаю для себя. И мне не жалко выложить для других. Но, все дело в том, что изначально я именно этот код и искал, когда начал поиск контроллеров для света на базе Ардуино. А находил каких то монстров. Давно я что-то писал на С++, потом в вебе. Естественно я уже давно все забыл. Если бы увидел этот код раньше, уйму времени бы сэкономил. Может у кого-то именно так и получится.

 

От себя скажу, я наверно понял, что я хочу. Доделаю, выложу. Я это делаю для себя. Для себя. А сюда выкладываю т. к. не ищу коммерческую составляющую. То, что я сделал возможно кому-то пригодится. У меня нет корысти в сделанном.



#17 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 10 Сентябрь 2015 - 16:19

А вот человек код выложил - https://code.google....roller-arduino/

И свой контакт ;)

А контакт то свой зачем? Помощь оказывать или деньги собирать?


  • bbasil это нравится

#18 Sinnpriest

Sinnpriest

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 762
  • Откуда:Санкт-Петербург

Отправлено 10 Сентябрь 2015 - 16:24

О, ДА!

А если вообще копать вглубь проблемы, то вообще, то чем мы тут занимаемся абсолютное рукоблудие. Почему? Да потому, что если бы у меня были деньги, я бы купил себе два Радиона от ЭкоТеч и не сидел бы и не ждал посылки из Китая. Поэтому, господа, когда Вы говорите, что все уже сделано у меня четкая ассоциация не с RLL, а с готовыми решениями.

А начал я этим заниматься потому, что денег нет. А банка планируется большая. На нее нужно будет от 8 до 10 Радионов. По нынешним ценам это ";;№"№!%.

 

Кстати, у меня сейчас висит Митрас от GHL. Мне его всего лишь немного не хватает по площади покрытия. Вот и тренируюсь перед большой банкой.



#19 DNK

DNK

    Продвинутый пользователь

  • Brandname
  • PipPipPip
  • Cообщений: 19 804
  • Меня зовут:Дмитрий

Отправлено 10 Сентябрь 2015 - 19:57

А банка планируется большая. На нее нужно будет от 8 до 10 Радионов. По нынешним ценам это ";;№"№!%.

 

Контроллер может быть один на сколько угодно светильников. Если это будет эквивалент хотя бы пары Радионов, то цена контроллера - гораздо менее 1% от цены полного светильника. Сомнительная экономия как по мне...



#20 balabollng

balabollng

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • Cообщений: 5 438

Отправлено 10 Сентябрь 2015 - 20:02

А контакт то свой зачем? Помощь оказывать или деньги собирать?

Дык спросите у автора. Я почем знаю. Упоминул просто как факт того, что связаться можно с человеком.

О, ДА!
А если вообще копать вглубь проблемы, то вообще, то чем мы тут занимаемся абсолютное рукоблудие. Почему? Да потому, что если бы у меня были деньги, я бы купил себе два Радиона от ЭкоТеч и не сидел бы и не ждал посылки из Китая. Поэтому, господа, когда Вы говорите, что все уже сделано у меня четкая ассоциация не с RLL, а с готовыми решениями.
А начал я этим заниматься потому, что денег нет. А банка планируется большая. На нее нужно будет от 8 до 10 Радионов. По нынешним ценам это ";;№"№!%.

Кстати, у меня сейчас висит Митрас от GHL. Мне его всего лишь немного не хватает по площади покрытия. Вот и тренируюсь перед большой банкой.


А я - нет:) и я не только про RLL. Я вообще не доверяю чему-то без спецификации. Это откровенный обман. Фильтры Петрика (http://lurkmore.to/Петрик) :))

p.s. Внимание! По ссылке нецензурщина!
Мне не важно ваше мнение. Мне важны ваши дела.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных