7 плавно загорающих и гаснущих диодов.
- Войдите на сайт для отправки комментариев
Втр, 06/04/2021 - 19:45
Приветсвую всех. Необходимо создать скетч для ардуино нано. Что бы 7 диодов плавно загорались и гасли независимо друг от друга. Сколько будет стоить?
У нано всего 6 выходов ШИМ. Не получится
диоды какие? если можно ws2812 - то без проблем. Пишите подробно, что значит "плавно и независимо" . И бюджет
yaroslav.kraynov@gmail.com обсудим. И скинте нормальное тз
1000р
Цена такая, потому, что выводов ШИМ 4, а диодов 6...
kakmycmail@gmail.com
обычные аналоговые диоды - 1000р, адресные - 999р. ;))
я тебе хекс, ты мне $, я тебе сорс.
--------------------
на обычные ограничение - естественное ограничение тока выходов МК.
как мы с тобой синхронно! ;)))
почта мой ник на жмейле, телега - собака мой ник.
Тоже поучаствую в конкурсе. Могу сделать и больше семи, стоимость как и у остальных 1тр, man9913@mail.ru
Тоже поучаствую в конкурсе. Могу сделать и больше семи, стоимость как и у остальных 1тр, man9913@mail.ru
чисто теоретически, без цифровых добавок, только с использованием резисторов, можно сделать 2хN диодов, где N - число выходов МК. ;))))
Тоже могу сделать. Больше семи. 550 р
barmaley2m@yandex.ru
А я могу сделать и бесплатно. Но, только в свободное время...
В свободное и я могу бесплатно
Не пойму. что тут все "могут сделать" :) - ТЗ отсутствует :)
Не пойму. что тут все "могут сделать" :) - ТЗ отсутствует :)
Будет ТЗ - ещё куча народу набежит (видео не знаю как вставить)
Зачем нам чужое видео здесь? В ютуб умеем ходить и без бармалеев.
А я и в ютуб не умею ставить.
А какэт_вы 7 диодов ШИМить будете ежли у нанки всего 6 ШИМ ног ???
А какэт_вы 7 диодов ШИМить будете ежли у нанки всего 6 ШИМ ног ???
Элементарно, Ватсон. Уже 8 зашимил. Программный ШИМ. Не слышали? Хочь все 20.
(А6 и А7 низзя. Они не поддерживают цифру)
А какэт_вы 7 диодов ШИМить будете ежли у нанки всего 6 ШИМ ног ???
На 100-200Гц? Ты дебил? Программно, конечно. Вообще от одного таймера. Никак не используя аппаратный ШИМ.
Уже 8 зашимил. Программный ШИМ. Не слышали? Хочь все 20.
Ааа... Понятно. Помому лично делал 16, программных, на 2-м таймере. Фигня это всё, камень сильно занят всегда, на другое уже не хватает времени ему...
Или есть другой "подход" ???
А заказчик просит и другое?
А заказчик просит и другое?
Вот смотри, я делал это лет 8 назад. Непомню подробности. На 8-ми битном таймере формируем квант по ISR_OVF. Далее прямо в векторе прерывания делаем счётчики. Вроде всё работает, но, допустим, на опрос кнопок времени хватит, а вот что-то времязависимое опросить - уже нет!
В качестве примера - сделай, допустим, 7 светодиодов + 2 18В20 + LCD по и2с. Просто, для эксперимента.
А заказчик просит термометр с дисплеем и с выходом в интернет?
Ну допустим, я нагрузил на велосипед 20 кирпичей. Везёт. А вот если ещё пару мешков цемента (которые мне не нужны) - уже нет. Так что, не перевозить кирпичи на велосипеде?
согласен с Бармалеем, я тоже думал на таймере эмуляцию шима делать. Ресурсов avr'ки хватает, сотни герц точно будет, а может даже и больше можно выжать, но зачем.
Дык яж не про заказчика, просто, сам для себя "уясни" сопли и клей хоть и похожи, но по функционалу разные. И здесь будет засада.
Единственный вариант у ТС - на STM23f103 дешманской наваять моргалово. Вот там можно и 7 и поболее и без напрягов:)))
согласен с Бармалеем, я тоже думал на таймере эмуляцию шима делать. Ресурсов avr'ки хватает, сотни герц точно будет, а может даже и больше можно выжать, но зачем.
Можешь выложить hex с 7 светиками, 4-мя кнопками, 2х18В20 +LCD4x20 ??? Шоп кнопками можно было скважность менять и на дисплее всё это показывать + температуру с датчиков. Смогёшь???
Можешь выложить hex с 7 светиками, 4-мя кнопками, 2х18В20 +LCD4x20 ??? Шоп кнопками можно было скважность менять и на дисплее всё это показывать + температуру с датчиков. Смогёшь???
И отсылать результат на сервер через вайфай? И всё это надо в тиньку восьмипиновую всунуть?
а чё не написал ещё что всё это надо в тиньку восьмипиновую всунуть?
Вот смотри, я делал это лет 8 назад. Непомню подробности. На 8-ми битном таймере формируем квант по ISR_OVF. Далее прямо в векторе прерывания делаем счётчики.
Это потому, что ты очень плохой программист, о чем я тебе множество раз уже говорил и в твои косяки макал.
Для 8-ми программных ШИМ на одном таймере, нужно не на каждый тик падать в прерывание и делать 8 сравнений, а заранее построить упорядоченную таблицу для OCRA и менять на следующее по совпадению. Всего 8 прерываний за один период ШИМ, ну пусть (для 200Гц) это 5000мкс.
А если ваять, как ты, до для дискреты в 100 единиц нужно вызывать прерывание каждые 5000/100=50 мкс.
8 прерываний за 5 мс или 100, есть разница? Вот поэтому и нужно "учиццо+учиццо*учиццо" ;))))))
Колумб опять пальцы гнуть начал и грузить дебильными прожектами, которые нужны только ему.
согласен с Бармалеем, я тоже думал на таймере эмуляцию шима делать. Ресурсов avr'ки хватает, сотни герц точно будет, а может даже и больше можно выжать, но зачем.
Можешь выложить hex с 7 светиками, 4-мя кнопками, 2х18В20 +LCD4x20 ??? Шоп кнопками можно было скважность менять и на дисплее всё это показывать + температуру с датчиков. Смогёшь???
Скока денег? У меня только 1602 есть, устроит? От 10 тыр за хекс. Принимаю пейпал,телефон и карты ;)).
Можешь выложить hex с 7 светиками, 4-мя кнопками, 2х18В20 +LCD4x20 ??? Шоп кнопками можно было скважность менять и на дисплее всё это показывать + температуру с датчиков. Смогёшь???
Скока денег? У меня только 1602 есть, устроит? От 10 тыр за хекс. Принимаю пейпал,телефон и карты ;)).
Та он на халяву хочит
Я что, заказчик засветился уже где-то? Или ты про немаскируемого?
Или ты про немаскируемого?
Да, про него. Вечно какую-то херню требует напрограммировать, чтобы он поверил в написанное.
Для 8-ми программных ШИМ на одном таймере, нужно не на каждый тик падать в прерывание и делать 8 сравнений, а заранее построить упорядоченную таблицу для OCRA и менять на следующее по совпадению. Всего 8 прерываний за один период ШИМ, ну пусть (для 200Гц) это 5000мкс.
А если ваять, как ты, до для дискреты в 100 единиц нужно вызывать прерывание каждые 5000/100=50 мкс.
8 прерываний за 5 мс или 100, есть разница? Вот поэтому и нужно "учиццо+учиццо*учиццо" ;))))))
Ну вот "оно" и само всплыло, "засада" называется. Да, подход с градациями OCRAx классный, никогда-бы нидадумался. А как насчёт вот так вот: сохраняем весь аппаратный ШИМ потенциал на всех ШЕСТИ ногах и используем его. И на любом ещё свободном векторе ISR_OVFx (тот, что побыстрее тикает) делаем программный ШИМ. В таком случае как поступить?
В таком случае как поступить?
Мыло и веревка должны решить проблему. Могу посоветовать неплохой онлайн хозяйственный. У них и доставка есть.
Всё, идей больше не будет? Грустно..
Главное не ругайтесь.
Хотел ребенку в сад поделку сделать, созвездие большой медведицы и вместо звезд обычные белые светодиоды вставить и подключить. Ну и соответственно что бы они плавно тухли и загорались. В идеале все в разнобой.
Скорость "мерцания" примерно как в этом видео.
https://yandex.ru/video/touch/preview/?text=Медленное+управление+яркостью+диодов+ардуино&path=wizard&parent-reqid=1617721601914387-10334587504991669879-balancer-knoss-search-yp-sas-13-BAL&wiz_type=xl&filmId=5422855839659110542&url=http%3A%2F%2Fvk.com%2Fvideo128315622_456239101
В принципе у меня есть ардуино uno. Но хотелось бы все покомпактней собрать.
Ну так напишите. Обсудим. Для медведицы есть очень компактный вариант. Делал себе звёзды на небо.
barmaley2m@yandex.ru
Для 8-ми программных ШИМ на одном таймере, нужно не на каждый тик падать в прерывание и делать 8 сравнений, а заранее построить упорядоченную таблицу для OCRA и менять на следующее по совпадению. Всего 8 прерываний за один период ШИМ
Если я правильно понял идею - при каждом изменении скважности по любому из 8 выходов таблицу придется перестраиывать и пересортировывать, а не просто менять одно значение
Да почитайте выше, про звёзды. Ему нужен просто генератор, имитирующий плавное случайное мерцание звёзд. Никаких дисплеев, температуры, вайфая.
Можно и без дорогущих услуг бармалеев сделать даже красивее: https://mysku.ru/blog/aliexpress/69651.html
ТС на millis() просите раз за деньги - из "обычных" светодиодов:)
Да, Бармалей дерёт не по детски.) БАМ спасёт ТС, как уже верно подметили. Можно и ещё кучу светодиодов навешать, и другие задачи решать.
... Делал себе звёзды на небо.
barmaley2m@yandex.ru
Класс! Просто зависть берёт за такие фразы.
Да почитайте выше, про звёзды. Ему нужен просто генератор, имитирующий плавное случайное мерцание звёзд. Никаких дисплеев, температуры, вайфая.
В таком случае нахер там шим??? LPF-RC на каждый светодиод и управляй либо DDRx либо PORTx яркостью от времени.
И код тогда будет стоить - пакетик семек :)))
Вы сейчас договоритесь до того, что это можно сделать вообще без МК. Кошмар какой )
Базаришь. На десятичном счётчике влёхкую замучу, но без рандома))) (но не хочу)
https://youtu.be/s8ZWM3qh41o
Собственно картинка, параметры мигания можно менять, как нравится. Сейчас просто ярклсть каждые 50мс меняется в случайном направлении на 5%. Можно придумать эффекты поинтереснее, например задать случайные периоды каждому и в них работать, тогда нужны еще параметры в описывающей структуре - период и текущая фаза. Короче простор для творчества.
И да, не нужно писать, что лучше было бы сделать связный список, а не проверять всех, но элементов всего 8 и накладные расходы на связный список, заодно и список тех, у кого совпали OCR и т.д. получатся больше, чем линейная обработка 8ми элементов.
01
#include <avr/interrupt.h>
02
03
const
byte
Pins[8] = {5, 6, 7, 8, 9, 10, 11, 12};
04
05
struct
listPWM {
06
byte
* port;
07
byte
pin;
08
byte
OCR;
09
} pinList[8];
10
11
ISR(TIMER2_COMPA_vect) {
12
byte
t = OCR2A;
13
byte
n = OCR2A - 2;
14
15
for
(
byte
i = 0; i < 8; i++) {
16
if
( ((pinList[i].OCR - t) & 0xff) < 2) {
17
*(pinList[i].port) |= pinList[i].pin;
18
}
19
else
if
(((pinList[i].OCR - t) & 0xff) < ((n - t) & 0xff) )
20
n = pinList[i].OCR;
21
}
22
OCR2A = n;
23
}
24
25
ISR(TIMER2_OVF_vect) {
26
for
(
byte
i = 0; i < 8; i++) *(pinList[i].port) &= ~pinList[i].pin;
27
}
28
29
void
setup
() {
30
Serial
.begin(115200);
31
32
for
(
byte
i = 0; i < 8; i++) {
33
byte
p = digitalPinToPort(Pins[i]);
34
pinMode (Pins[i], OUTPUT);
35
pinList[i].port = portOutputRegister(p);
36
pinList[i].pin = digitalPinToBitMask(Pins[i]);
37
pinList[i].OCR = 200;
38
}
39
40
TCCR2A = 0b00000000;
//COM2A1:COM2A0:COM2B1:COM2B0:x:x:WGM21:WGM20
41
TCCR2B = 0b00000110;
//ICNC1:ICES1:X:WGM13:WGM12:CS12:CS11:CS10
42
//режим 0 прескаллер 256 - ШИМ 244Гц.
43
OCR2A = 0;
44
TIMSK2 = 0b00000011;
//xxxxx:OCIEB:OCIEA:TOIE
45
}
46
47
void
loop
() {
48
49
for
(
byte
i = 0; i< 8; i++) {
50
byte
r = random(170,256);
51
if
(r < pinList[i].OCR)
52
pinList[i].OCR = constrain(0.95*pinList[i].OCR,170,255);
53
else
54
pinList[i].OCR = constrain(1.05*pinList[i].OCR,170,255);
55
}
56
delay(50);
57
}
====================
ТС, если есть желание, в чем я сомневаюсь, напиши в телегу на @wdrakula я скажу, как мне закинуть $$$ на пиво.