![](https://radio-hobby.org/uploads/news/image/3edd52ab-6517-9a3c.jpg)
Индикация активности жесткого диска на 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 назад, тогда моддинг был актуален...
Выложи схему пжл.