Перейти к контенту
МОРСКОЙ АКВАРИУМ - форум Аква Лого

Аква Лого / мы на связи
Аква Лого в VK
Аква Лого в Телеграмм
Аква Лого в соцсетях

У дороги новый чибис

Идиакант

Паутинный шелк

svyaz

DIY 6-Канальный контроллер LED c тач-панелью "3.2"

Рекомендуемые сообщения

Это если у кого случайно завалялась ATmega168 как у тебя 1307

У меня в завалах всегда есть про запас несколько Мега8 и Мега16, и даже Мега128 должна быть - всегда хорошо иметь такие вещи в запасе. Более того, добавлю, что на столе валяется собственный компик на Меге16 с символьным дисплеем 2х20 и с процентов на 80 написанным программным обеспечением (все основные меню готовы, но разработка остановилась из-за отсутствия свободного времени).

 

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

 

Каждый час разделён на 8 интервалов по 15 минут, в следующей версии Джейми хочет сделать нормальное (как в главном меню) процентное соотношение яркости от 0 до 100% (сейчас от 0 до 255)

Табличное представление рассветов\закатов с разбитием на непонятные интервалы в часу - "немножко не юзабельно" :-)

 

Лучше всего график (ломаными) с чекпоинтами. Экран же позволяет.

Кстати, Джейми написал, что в версии прошивки 1.2 будет более продвинутая настройка интенсивностей при помощи ползунков, при том, диапазон будет от 0 до 100% вместо нынешних 0-255 (хотя последнее, мне кажется, не принципиально).

Изменено пользователем vahegan (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Знакомство с Arduino... "Если вы доселе не держали в руках Arduino, вам стоит это прочесть!... " :tuplu: :vo: http://robotshop.su/content/articles/1029/#ch1

  • Upvote 1

Поделиться этим сообщением


Ссылка на сообщение

У меня в завалах всегда есть про запас несколько Мега8 и Мега16, и даже Мега128 должна быть - всегда хорошо иметь такие вещи в запасе.

Раз в жизни - и хрен собачий может пригодиться :)

Поделиться этим сообщением


Ссылка на сообщение

Раз в жизни - и хрен собачий может пригодиться :)

 

Может кто поможет.

 

ушел с analog_write на прямое управление таймерами в моде 14.

 

Все замечательно, но почему-то при подаче 0 например на OCR4B цепочка все равно еле светится.

 

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

 

P.S. что то вертится в голове, как сделать программную притяжку к земле?

Изменено пользователем mixzt (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

 

P.S. что то вертится в голове, как сделать программную притяжку к земле?

digitalWrite(port, HIGH); В остальном помочь не могу

Поделиться этим сообщением


Ссылка на сообщение
P.S. что то вертится в голове, как сделать программную притяжку к земле?

А по простому, вывод пинцетом на землю, и посмотреть яркость - ты не можешь???

Может совсем не в программе дело, а ты мозги сушишь. ;)

Поделиться этим сообщением


Ссылка на сообщение

А по простому, вывод пинцетом на землю, и посмотреть яркость - ты не можешь???

ну так и пожечь можно :), там ведь и лог.1 может быть

 

oala

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

 

и еще, щас уже не помню, НО вроде и в даташите было сказано про "паразитный" эффект (типа аппаратная схема даже при нуле устанавливает On и сразу сбрасывает в Off), поэтому рекомендуется отключать вывод таймера от пина авр если нуль (с подтяжкой резистором разумеется, я лично всегда использую внешнюю подтяжку, ибо при сбросе контроллера всегда будет что-то неопределенное на входе драйвера)

 

еще короче, я всегда делаю так (и проблем нет):

// При выключенном ШИМ,

// чтобы убрать короткий паразитный импульс, отключаем pin от схемы

// (/\) при OFF, PIN подтянут к GND!

// (\/) при OFF, PIN подтянут к VCC!

if ( ledB ) { sbi( DDR_MOON_B, PIN_MOON_B ); } else { cbi( DDR_MOON_B, PIN_MOON_B ); }

 

ps: да sbi и cbi (аля асм) в ардуине не что иное как (это всяко лучше, чем жуткие digitalWrite, pinMode и т.п.):

 

#ifndef cbi

#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))

#endif

#ifndef sbi

#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

#endif

 

либо использовать это:

#define bitRead(value, bit) (((value) >> (bit)) & 0x01)

#define bitSet(value, bit) ((value) |= (1UL << (bit)))

#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))

#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))

 

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

 

пример (для прямого (неинверсного) ШИМа):

 

в init:

 

cbi( PORT_PWM_XX, PIN_PWM_XX );

sbi( DDR_PWM_XX, PIN_PWM_XX );

 

сама функция для 16-ти разрядного таймера (по простому, без изысков, но должно работать):

 

void mysetpwmXXX(unsigned int aLevel)

{

if ( aLevel ) sbi(TCCR_PWM_XX_A, COM_PWM_XX_1);

else cbi(TCCR_PWM_XX_A, COM_PWM_XX_1);

TIMER_OCR_PWM_XX = aLevel;

}

 

ну а в хеадере ставим что хотим (пример для Т5В и меги 2560||1280):

 

#define TIMER_OCR_PWM_XX OCR5B

#define TCCR_PWM_XX_A TCCR5A

#define COM_PWM_XX_1 COM5B1

#define PORT_PWM_XX PORTL

#define DDR_PWM_XX DDRL

#define PIN_PWM_XX 4

Изменено пользователем Kiraso (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

ну так и пожечь можно :), там ведь и лог.1 может быть

 

oala

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

 

 

При использовании analog_write все нормально.

 

За код спасибо, попробую. Заодно расковыряю код analog_write, посмотрю что в нем делается.

 

Kiraso, Вы правы совершенно. В analog_write, при записи 0 идет отключение пина.

 

ЗЫ, кто там опыты проводил, у меня на 1Кгц ldd_H не свистят. Сделал разрядность не 255 а 2000, луна стала намного симпатичней, а не прожектор

Изменено пользователем mixzt (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

При использовании analog_write все нормально.

 

За код спасибо, попробую. Заодно расковыряю код analog_write, посмотрю что в нем делается.

 

а чё его ковырять?

вот щас глянул... оказывается также и делается, (имхо, только более затратно по ресурсам):

 

if (val == 0)

{

digitalWrite(pin, LOW);

}

else if (val == 255)

{

digitalWrite(pin, HIGH);

}

else

{

switch(digitalPinToTimer(pin))

{

 

#if defined(TCCR0A) && defined(COM0A1)

case TIMER0A:

 

// connect pwm to pin on timer 0, channel A

sbi(TCCR0A, COM0A1);

OCR0A = val; // set pwm duty

break;

#endif

................ и так далее

Изменено пользователем Kiraso (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение
ну так и пожечь можно , там ведь и лог.1 может быть

Ой программисты, программисты.

Никогда ты его так пожечь не сможешь. В случае кз. и лог 1 выходной каскад ограничивает ток кз.

Спокойно коротни и поймешь в чем причина, "плохой" лог 0 (т.е слишком высокий) или проблема в драйверах/монтаже/утечках. ;)

Поделиться этим сообщением


Ссылка на сообщение

Ой программисты, программисты.

Никогда ты его так пожечь не сможешь. В случае кз. и лог 1 выходной каскад ограничивает ток кз.

 

а мы вообще об одном говорим? я имел в виду ножку микроконтроллера... если на ней лог.1 (ака Vcc) и ее коротнуть на GND, ни чего ХОРОШЕГО от этой затеи НЕ БУДЕТ... и нет там ничего ограничивающего ток.

 

вот если речь была о выходе драйвера....

 

но проблема то в контроллере

Изменено пользователем Kiraso (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

а мы вообще об одном говорим? я имел в виду ножку микроконтроллера... если на ней лог.1 (ака Vcc) и ее коротнуть на GND, ни чего ХОРОШЕГО от этой затеи НЕ БУДЕТ... и нет там ничего ограничивающего ток.

 

вот если речь была о выходе драйвера....

 

но проблема то в контроллере

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

Поделиться этим сообщением


Ссылка на сообщение

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

 

упс, впервые такое слышу... пойду посмотрю.

Поделиться этим сообщением


Ссылка на сообщение

Стандартная фича практически любого контроллера - ограничение тока на выходе :)

Поделиться этим сообщением


Ссылка на сообщение
если на ней лог.1 (ака Vcc)

Лог 1 - это не ака VCC, а Vcc-ххх.

А ххх - зависит от технологии, вида/семейства контроллера, типа и режима выходного каскада...

Поделиться этим сообщением


Ссылка на сообщение

я не спорю, что так может быть, НО в документации об этом молчат.

 

более того, всё говорит об обратном.

post-23784-1334916619_thumb.jpg

post-23784-1334916633_thumb.jpg

 

ну ладно сделали так, хорошо :)

но в любом случае это экстрим.

 

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

Изменено пользователем Kiraso (см. историю изменений)

Поделиться этим сообщением


Ссылка на сообщение

Экстрима нет. То что обведено в красном, написано чтобы предотвратить ситуацию, когда незадействованные пины контроллера подтянуты на +\- и сконфигурированы как выходы. Если таких пинов много, каждый тянет 20мА при это грея корпус микропроцессора. Тот перегревается и теряет стабильность :-)

 

Закоротить пинцетом на землю не страшно.

Поделиться этим сообщением


Ссылка на сообщение

Закоротить пинцетом на землю не страшно.

 

уломали :)

 

а вот одно из упоминаний, на счет граничных значений и эффектов с ними (с чем скорей всего и столкнулся mixzt)

post-23784-1334918449_thumb.jpg

Поделиться этим сообщением


Ссылка на сообщение

Как думаете, стоит с этим связываться?

http://cgi.ebay.com/ws/eBayISAPI.dll?ViewI...1#ht_500wt_1202

сложно будет поменять в коде управление светом на другие выводы, а то я в этом не шибко разбираюсь :oops: ?

Поделиться этим сообщением


Ссылка на сообщение

Как думаете, стоит с этим связываться?

http://cgi.ebay.com/ws/eBayISAPI.dll?ViewI...1#ht_500wt_1202

сложно будет поменять в коде управление светом на другие выводы, а то я в этом не шибко разбираюсь :oops: ?

 

 

я не смотрел досконально скетч, поэтому на 100% не скажу, скажу на 99%, что можно.

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

 

 

в конце концов, кто мешает данную платку подключить шлейфом как надо

Поделиться этим сообщением


Ссылка на сообщение

а вот одно из упоминаний, на счет граничных значений и эффектов с ними (с чем скорей всего и столкнулся mixzt)

 

Еще раз спасибо.

 

Выкинул из кода лишнее, и переписал.

 

Работает как часы:)

Поделиться этим сообщением


Ссылка на сообщение

Блин пол дня искал видео , где один китаец (японец и тд) управлял телефоном (скорее всего на андроиде)режимами света , доллива и тд Жаль что не сохранил Может кто кинет ссылку на видео? :tuplu:

Поделиться этим сообщением


Ссылка на сообщение

Ну вот и началось!

пришел весь бутерброд мега2560+шилд ITDB02-v1.1+экран3.2"

драйвер поставил, скинул простенькие скетчи в мегу, мега работает, мигалка мигает.

скачал архив Jarduino_v1_1.zip

библиотеку ITDB02 распаковал в папку libraries компилятора

и вот здесь уперся :!:

не появилась она в списке библиотек компилятора,

хотя папка ITDB02... находится вместе с другими библиотеками в папке libraries

че не так делаю?

Поделиться этим сообщением


Ссылка на сообщение

скачал архив Jarduino_v1_1.zip

библиотеку ITDB02 распаковал в папку libraries компилятора

и вот здесь уперся :!:

не появилась она в списке библиотек компилятора,

хотя папка ITDB02... находится вместе с другими библиотеками в папке libraries

че не так делаю?

Библиотека из архива, должна быть в папке ITDB02_Graph16 и уже дальше в папке \libraries (по подобию других библиотек) Подозреваю что вы скопировали все файлы в корень libraries ?

Поделиться этим сообщением


Ссылка на сообщение

Пожалуйста, авторизуйтесь, чтобы оставить комментарий

Вы сможете оставлять комментарии после авторизации



Войти

×
×
  • Создать...

Политика обработки персональных данных