Site icon Меандр — занимательная электроника

Индикация активности жесткого диска на 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

}

}

Скачать файлы проекта (исходник, плата в формате eagle, плата в формате lay, исходник статьи на английском)

radio-hobby.org

Exit mobile version