есть вещественная велечина V из диапазона (From, To).
Нужна типа функция — от V, которая возвращает паттерн стробов.
горит n1 milli-sec | потом моргает с частотой 30гц n2 milli-sec | потом не горит n2 milli-sec | .... | потом сначала
Паттернов нужно МНОГО
желательно с предпросмотром в браузере.
Речь про диодики.
В отличии от новогодних гирлянд надобы обойтись одним диодиком на одну величину
Гугл выдаёт только готовые девайсы или высшую математику.
Здравствуйте, VladCore, Вы писали:
VC>есть вещественная велечина V из диапазона (From, To).
VC>Нужна типа функция — от V, которая возвращает паттерн стробов.
VC>горит n1 milli-sec | потом моргает с частотой 30гц n2 milli-sec | потом не горит n2 milli-sec | .... | потом сначала
VC>Паттернов нужно МНОГО
Нефиг делать
enum { N=много };
StrobePattern patterns[N];
double From, To;
StrobePattern get_pattern(double V) {
int i=N*(V-From)/(To-From);
if (i<0) i=0;
if (i>=N) i=N-1;
return patterns[i];
}
Здравствуйте, VladCore, Вы писали:
VC>Паттернов нужно МНОГО
VC>желательно с предпросмотром в браузере.
Вам надо отображать значения величины при помощи 1го светодиода?
Попробуйте строить паттерны примерно по такому принципу:
|........|........|........
|......|......|......|......
|....|....|....|....|....
|..|..|..|..|..|..|..|..|..
||.......||.......||.......
||.....||.....||.....||.....
||...||...||...||...||...
||.||.||.||.||.||.||.||.||.
|||......|||......|||......
|||....|||....|||....|||....
|||..|||..|||..|||..|||..
|||.|||.|||.|||.|||.|||.|||.
||||||||||||||||||||||||||||
Под | подразумевается "моргание" типа 20мс включено, 20мс — выключено.
Т.е. идея "чем чаще моргает — тем выше" и "чем больше блинков в серии — тем выше".
Реализуется путём выбора максимального количества слотов в паттерне — например, 25. Максимум в 25 слотов дадут нам 24 паттерна для одного блинка, 23 для двух блинков, 22 для трёх блинков, 21 для четырёх блинков. Длиннее 4х я бы делать поостерёгся — не уверен, что легко будет считываться. Но вы проверьте — может уже и 4 будет перебором. Итого у нас есть как минимум 24+23+22 = 69 паттернов, плюс ещё один "panic pattern", когда мы мигаем вообще без пауз. Итого — 70 паттернов с периодом не более 1 секунды. Можно, конечно, задрать длину максимального интервала, но тогда потеряется различимость — я уверен, что на глаз период мигания в 1.2 и 1.3 секунды не отличишь.
Может оказаться, что слот в 40мс слишком короткий, и соседние мигания сливаются. Тогда можно попробовать покрутить и скважность (типа 10мс горим, 30 не горим), и длительность (30+30 вместо 20+20).
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, VladCore, Вы писали:
VC>>Паттернов нужно МНОГО
VC>>желательно с предпросмотром в браузере.
S>Вам надо отображать значения величины при помощи 1го светодиода?
S>Попробуйте строить паттерны примерно по такому принципу:
S>S>|........|........|........
S>|......|......|......|......
S>|....|....|....|....|....
S>|..|..|..|..|..|..|..|..|..
S>||.......||.......||.......
S>||.....||.....||.....||.....
S>||...||...||...||...||...
S>||.||.||.||.||.||.||.||.||.
S>|||......|||......|||......
S>|||....|||....|||....|||....
S>|||..|||..|||..|||..|||..
S>|||.|||.|||.|||.|||.|||.|||.
S>||||||||||||||||||||||||||||
S>
S>Под | подразумевается "моргание" типа 20мс включено, 20мс — выключено.
S>Т.е. идея "чем чаще моргает — тем выше" и "чем больше блинков в серии — тем выше".
S>Реализуется путём выбора максимального количества слотов в паттерне — например, 25. Максимум в 25 слотов дадут нам 24 паттерна для одного блинка, 23 для двух блинков, 22 для трёх блинков, 21 для четырёх блинков. Длиннее 4х я бы делать поостерёгся — не уверен, что легко будет считываться. Но вы проверьте — может уже и 4 будет перебором. Итого у нас есть как минимум 24+23+22 = 69 паттернов, плюс ещё один "panic pattern", когда мы мигаем вообще без пауз. Итого — 70 паттернов с периодом не более 1 секунды. Можно, конечно, задрать длину максимального интервала, но тогда потеряется различимость — я уверен, что на глаз период мигания в 1.2 и 1.3 секунды не отличишь.
S>Может оказаться, что слот в 40мс слишком короткий, и соседние мигания сливаются. Тогда можно попробовать покрутить и скважность (типа 10мс горим, 30 не горим), и длительность (30+30 вместо 20+20).
Пишу чтоб не забыть
Количество коротких блинков в серии: чем больше блинков в серии тем больше величина.
Интервал между сериями: чем больше интервал между сериями, тем....
Но если интервал между сериями 0 — то величина максимальная.
Если в паттерне выше перевернуть горит/не-горит местами то можно две разные величины показывать диодами одного цвета. не перепутаешь.
Здравствуйте, VladCore, Вы писали:
VC>Пишу чтоб не забыть
VC>Количество коротких блинков в серии: чем больше блинков в серии тем больше величина.
VC>Интервал между сериями: чем больше интервал между сериями, тем.... Но если интервал между сериями 0 — то величина максимальная.
Чем больше интервал — тем меньше величина. См. фильм Чужие — там биперы очень наглядно показывают "степень опасности" = 1/расстояние.
Не знаю вашу задачу, но рассмотрите замену света (блинков) на звук (бипы).
Наш преподаватель в клубе юных техников говорил, что человек хорошо различает звуки от 20гц до 20кгц, а вот глазом частоты выше 30 герц ему недоступны.
VC>Если в паттерне выше перевернуть горит/не-горит местами то можно две разные величины показывать диодами одного цвета. не перепутаешь.
Лучше всё же разными цветами. Их гораздо больше, чем два, и гораздо проще различить.