Индикация активности жесткого диска на 10 светодиодах
Каждый корпус компьютера оснащен светодиодом на передней панели, который индицирует работу жесткого диска. Один мерцающий светодиод лучше, чем ничего, но 10-светодиодная линейная шкала, показывающая работу жесткого диска в процентах было бы действительно удобно!
Особенности
• дисплей с помощью 10 светодиодов указывает активность жесткого диска
• Отображение активности жесткого диска с шагом 10%
• Авария ( зависит от компьютера)
• Аккуратный компактный модуль легко помещается внутри корпуса
Печатные платы
Печатная плата (вид со стороны деталей)
Печатная плата (вид со стороны проводников)
Исходный код
/*****************************************************
Project : Bargraphanzeige für die HDD-Aktivität (10LEDs)
Version : 1.0
Date : 25.03.2011
Chip type : ATtiny2313
Clock frequency : 4,000000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 32
*****************************************************/
#include
#include
#define LED_10_rot_off PORTD.0=0
#define LED_10_rot_on PORTD.0=1
#define LED_9_gelb_off PORTD.1=0
#define LED_9_gelb_on PORTD.1=1
#define LED_8_gelb_off PORTD.2=0
#define LED_8_gelb_on PORTD.2=1
#define LED_7_gruen_off PORTD.3=0
#define LED_7_gruen_on PORTD.3=1
#define LED_6_gruen_off PORTD.4=0
#define LED_6_gruen_on PORTD.4=1
#define LED_5_gruen_off PORTD.5=0
#define LED_5_gruen_on PORTD.5=1
#define LED_4_gruen_off PORTD.6=0
#define LED_4_gruen_on PORTD.6=1
#define LED_3_gruen_off PORTB.0=0
#define LED_3_gruen_on PORTB.0=1
#define LED_2_gruen_off PORTB.1=0
#define LED_2_gruen_on PORTB.1=1
#define LED_1_gruen_off PORTB.2=0
#define LED_1_gruen_on PORTB.2=1
#define Signal_Out_off PORTB.3=0
#define Signal_Out_on PORTB.3=1
#define Signal_HDD_In PINB.4
void main(void)
{
unsigned int zaehler_signal_on=0;
unsigned char i=0;
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Input/Output Ports initialization
// Port A initialization
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=P State3=0 State2=0 State1=0 State0=0
PORTB=0x10;
DDRB=0x0F;
// Port D initialization
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0x7F;
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
GIMSK=0x00;
MCUCR=0x00;
TIMSK=0x00;
USICR=0x00;
ACSR=0x80;
LED_10_rot_on; //beim Einschalten des PC´s alle 10 LEDs Ein für 2s
LED_9_gelb_on;
LED_8_gelb_on;
LED_7_gruen_on;
LED_6_gruen_on;
LED_5_gruen_on;
LED_4_gruen_on;
LED_3_gruen_on;
LED_2_gruen_on;
LED_1_gruen_on;
delay_ms(2000);
LED_10_rot_off;
delay_ms(200);
LED_9_gelb_off;
delay_ms(200);
LED_8_gelb_off;
delay_ms(200);
LED_7_gruen_off;
delay_ms(200);
LED_6_gruen_off;
delay_ms(200);
LED_5_gruen_off;
delay_ms(200);
LED_4_gruen_off;
delay_ms(200);
LED_3_gruen_off;
delay_ms(200);
LED_2_gruen_off;
delay_ms(200);
LED_1_gruen_off;
while (1)
{
if(Signal_HDD_In==0)Signal_Out_on;
//Ausgabe für HDD-LED im 200ms Zeitraster
else Signal_Out_off;
zaehler_signal_on=0;
for(i=0;i<200;i++) //ca. 200ms
{
delay_ms(1);
if(Signal_HDD_In==0)zaehler_signal_on++;
//zählen wie lange das HDD-Signal in 200ms Ein ist
}
LED_10_rot_off; //alle LEDs aus
LED_9_gelb_off;
LED_8_gelb_off;
LED_7_gruen_off;
LED_6_gruen_off;
LED_5_gruen_off;
LED_4_gruen_off;
LED_3_gruen_off;
LED_2_gruen_off;
LED_1_gruen_off;
//Ausgabe der HDD Aktivität auf die LEDs in 10% Schritte alle 200ms
if(zaehler_signal_on>0) LED_1_gruen_on; //1...10% HDD aktivität
if(zaehler_signal_on>20) LED_2_gruen_on; //11...20% HDD aktivität
if(zaehler_signal_on>40) LED_3_gruen_on; //21...30% HDD aktivität
if(zaehler_signal_on>60) LED_4_gruen_on; //31...40% HDD aktivität
if(zaehler_signal_on>80) LED_5_gruen_on; //41...50% HDD aktivität
if(zaehler_signal_on>100) LED_6_gruen_on; //51...60% HDD aktivität
if(zaehler_signal_on>120) LED_7_gruen_on; //61...70% HDD aktivität
if(zaehler_signal_on>140) LED_8_gelb_on; //71...80% HDD aktivität
if(zaehler_signal_on>160) LED_9_gelb_on; //81...90% HDD aktivität
if(zaehler_signal_on>180) LED_10_rot_on; //91...100% HDD aktivität
}
}
Видео работы индикатора
Видео от КТ361
Karsten Böhme (Germany)
Скачать файлы проекта (исходник, плата в формате eagle, плата в формате lay, исходник статьи на английском)
Или элемент моддинга?
Такое можно сделать и без МК. Вот только вопрос ЗАЧЕМ это нужно???
Я в свое время стрелочный индикатор лепил. Вот это смотрелось круто. Правда было это лет 10 назад, тогда моддинг был актуален...
Выложи схему пжл.
R6 R5 вообще не нужно...R1 R4 сильно много. Вот 470 туда думаю подойдет.
Посмотрите внимательно даташит. Если конкретно под индикатор Жесткого диска, то:
1. Между 8 и 7 выводом 10к
2. 6 вывод кидаем на 7.
3. Между 8 и массой 3к
Все это относится к схеме http://radio-hobby.org/uploads/newbb/6140_50a7c1ad0079b.gif
SUT1..0 : 10
CKDIV8 : 1
BODLEVEL 2..0 : 101
Остальные оставить как есть, незапрограммированными, т.е.в "1"