Разное и полезное > Индикаторы
VU-meter на декатроне.
lgedmitry:
написал в исток2. Ждёмс...
и добавил...
если всё пойдёт - попробую к Алефу прикрутить. Всяко интереснее, чем ЖК-шка будет ???
khvilon:
Мои первые прикидки..
(компиляция из найденного в сети)
[ Вложение: Вам нельзя просматривать вложения ]
[ Вложение: Вам нельзя просматривать вложения ]
[ Вложение: Вам нельзя просматривать вложения ]
В середине всего этого AVR
и добавил...
Для ликбезу:
[ Вложение: Вам нельзя просматривать вложения ]
[ Вложение: Вам нельзя просматривать вложения ]
- очень познавательно!
и добавил...
А можно так:
[ Вложение: Вам нельзя просматривать вложения ]
lgedmitry:
применил репочесание лёгкой степени.
Вырисовывается вот такая штуковина: (Извините, но у Вас нет доступа в Галерею)
Идея такая:
а) включаем ВТ17. Протекание тока, по идее, должно начаться с по цепи R122 Л1 R124. Если нет - может придётся малость увеличить VD10, чтоб какой из подкатодов вперёд нулевого катода не выскочил.
б) включаем ВТ15. Устройство готово к счёту
в) начинаем дёргать за ВТ13, ВТ16. Едем докуда надо.
г) как доехали - вырубаем ВТ15 и ВТ17. Это для того, чтобы не перебрать со временем индикации конечной точки (если просто остановим счёт в нужном месте, и больше ничего не будем делать). Или не пересветить точку 0 (если, доехав, сбросимся нулевым катодом и там застрянем до следующего цикла индикации)
Будут ли у товарищей какие-либо соображения, комменты и матерноругательства по поводу концепции? ;-[ ;-[ ;-[
khvilon:
моя алгаритмика (в голове) совсем иная:
одномерный массив длинной 10
(один элемент на каждую точку индикации)
физический смысл каждого числа - время индикации данной точки.
while(!dekatron.is_0()); //сброс на "0"
// цикл индикации
for(i=0;;i++,i%=10)
{
delay(arr);
dekatron.next();
}
массив инициализируется по прерыванию от ADC
и добавил...
естественно
// цикл индикации
for(i=0;;i++,i%=10)
{
delay(arr);
dekatron.next();
}
и добавил...
// цикл индикации
for(i=0;;i++,i%=10)
{
delay(arr[ i ]);
dekatron.next();
}
... скптина глотает кв. скобки
lgedmitry:
Достаю свою алгоритмику из головы:
Pechatl: 'подпрограмма вывода на экран измерителей уровня
'левого
If Count = 0 Then
Set Portd.3 'если уже пора - включаю декатрон
Set Portd.2
Else 'если не начало такта - ничего с включением не делаю
If B1 > Count Then 'если измеренная входная величина больше номера горящего кружочка, то делаю шажок
If Portd.0 = 0 And Portd.1 = 0 Then
Set Portd.0 'или такой
Set Nizzya
End If
If Portd.0 = 0 And Portd.1 = 1 Then 'или такой
Reset Portd.1
End If
If Portd.0 = 1 And Portd.1 = 0 And Nizzya = 0 Then 'или вот такой
Reset Portd.0
Set Portd.1
End If
Reset Nizzya
Else
Let Portd = Portd And Trafaret 'если подравнялись со входной величиной - гасим лампочку и делаем холостые шажки
End If
End If
Incr Count 'увеличиваю щётчик шажков
If Count = 15 Then
Let Count = 0
Toggle Channel 'когда 15 шажков прошло - меняем канал отображения (там такая же подпрограмма, только шажки задом наперёд)
End If
Return
Навигация
Перейти к полной версии