Hallo,
ik heb de voorbije dagen wat liggen knutselen aan m'n VUMeter, maar met mijn beperkte kennis geraak ik niet verder dan een basic HDD Activiteitsmeter.
Het is me nog niet gelukt een presenteerbaar schema te tekenen in paint dus zak ik het maar met woord uitleggen.
Op de RA0 ingang van de PIC 16F627A komt het signaal binnen van de HDD Led, op RB0 tot RB7 stuur ik het signaal uit naar 8 verschillende leds.
Aangezien ik niets van assembler snap heb ik met MPLAB in C wat code proberen schrijven:
Zoals je ziet ben ik geen programmeerwonder, maar het ding werkt al een beetje!
M'n grootste zorg is dat de VUMeter (als je het zo kan noemen) met deze code eigenlijk hetzelfde doet als de HDD Led normaal zou doen. Nu zou ik graag wat meer een integrator (misschien een condensator op RA1 ofzo?) effect willen toevoegen dat je de ledjes apart wat meer op en neer ziet gaan en graag ook een falloff effect maar ik heb compleet geen idee hoe ik dat zou moeten coden.
Enige suggesties (met demultiplexers ofzo)?
P.S.: Die timercode is slechts een probeersel, moet je niet op letten!
ik heb de voorbije dagen wat liggen knutselen aan m'n VUMeter, maar met mijn beperkte kennis geraak ik niet verder dan een basic HDD Activiteitsmeter.
Het is me nog niet gelukt een presenteerbaar schema te tekenen in paint dus zak ik het maar met woord uitleggen.
Op de RA0 ingang van de PIC 16F627A komt het signaal binnen van de HDD Led, op RB0 tot RB7 stuur ik het signaal uit naar 8 verschillende leds.
Aangezien ik niets van assembler snap heb ik met MPLAB in C wat code proberen schrijven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
| #pragma config &=0x0000
#pragma config |=0x3F50
shrBank unsigned char ms;
shrBank unsigned char tien;
shrBank unsigned char sec;
shrBank unsigned char min;
#include "INT16CXX.H"
#pragma origin 4
interrupt int_server(void)
{
int_save_registers
if(T0IF)
{
TMR0=9;
T0IF=0;
ms++;
if (ms==100)
{
ms=0;
tien++;
if (tien==10)
{
tien=0;
sec++;
if (sec==60);
{
sec=0;
min++;
}
}
}
}
int_restore_registers
}
void ontdender(unsigned char x)
{
unsigned a,n;
for(a=0;a<x;a++)
{
for(n=0;n<107;n++);
nop();
}
nop();
}
void main(void)
{
unsigned led;
TRISA=0b11111111;
TRISB=0b00000000;
PORTB=0b11111111;
PORTA=0b11111111;
CMCON=0x07;
OPTION=1;
ms=0;
tien=0;
sec=0;
min=0;
TMR0=1;
T0IF=0;
T0IE=1;
GIE=1;
while (1)
{
while (1)
{
if (PORTA.1==0)
{
led++;
ms++;
}
if (ms > 120)
{
led=0;
ms=0;
break;
}
}
if (led > 220 )
{
PORTB = 0b00000000;
}
else if (led > 175 )
{
PORTB = 0b10000000;
}
else if (led > 120 )
{
PORTB = 0b11100000;
}
else if (led > 90 )
{
PORTB = 0b11110000;
}
else if (led > 60 )
{
PORTB = 0b11111000;
}
else if (led > 30 )
{
PORTB = 0b11111100;
}
else
{
PORTB = 0b11111111;
}
}
} |
Zoals je ziet ben ik geen programmeerwonder, maar het ding werkt al een beetje!
M'n grootste zorg is dat de VUMeter (als je het zo kan noemen) met deze code eigenlijk hetzelfde doet als de HDD Led normaal zou doen. Nu zou ik graag wat meer een integrator (misschien een condensator op RA1 ofzo?) effect willen toevoegen dat je de ledjes apart wat meer op en neer ziet gaan en graag ook een falloff effect maar ik heb compleet geen idee hoe ik dat zou moeten coden.
Enige suggesties (met demultiplexers ofzo)?
P.S.: Die timercode is slechts een probeersel, moet je niet op letten!