-
Notifications
You must be signed in to change notification settings - Fork 1
/
TMS_74HC595_FUNC.h
123 lines (112 loc) · 5.06 KB
/
TMS_74HC595_FUNC.h
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
116
117
118
119
120
121
122
123
// /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ //
// FUNÇÕES PARA O USUÁRIO //
// /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ //
// =====================================
// Recurso - habilitar efeitos e pisca
// =====================================
void Tms74hc595_Check_Habilitar() {
byte efeito[3] = {0, 0, 0};
byte pisca_count = 0;
for (byte i = 0; i < leds; i++) {
pisca_count += Tms_Pisca_OnOff[i];
efeito[0] += (Tms_Efeito_SelecEfeito[i] == 1) ? Tms_Efeito_SelecEfeito[i] : 0;
efeito[1] += (Tms_Efeito_SelecEfeito[i] == 2) ? Tms_Efeito_SelecEfeito[i] : 0;
efeito[2] += (Tms_Efeito_SelecEfeito[i] == 3) ? Tms_Efeito_SelecEfeito[i] : 0;
}
Tms_Habilitar_Pisca = (pisca_count > 0) ? 1 : 0;
for (byte i = 0; i < 3; i++) Tms_Habilitar_Efeito[i] = (efeito[i]) ? 1 : 0;
}
// =========================================================
// Limite de Brilho (Geral) - Define o brilho máximo dos leds (1 á 100)
// =========================================================
void Tms74hc595_Limite_Brilho_Geral(byte TopLimiteGeral) {
for (byte i = 0; i< leds; i++) Tms_Limite_Brilho[i] = TopLimiteGeral;
}
// =========================================================
// Limite de Brilho (PINO) - Define o brilho máximo dos leds (1 á 100)
// =========================================================
void Tms74hc595_Limite_Brilho_Pino(byte pino, byte TopLimitePino) {
Tms_Limite_Brilho[pino] = TopLimitePino;
}
// ================================================================
// PWM BASE - Duty em todos os leds
// ================================================================
void Tms74hc595_Duty_Geral(byte duty) {
for (int i = 0; i < leds; i++) Tms_DutySimples[i] = linhas * duty / 100;
}
// ================================================================
// PWM BASE - Duty em pino definido
// ================================================================
void Tms74hc595_Duty_Pin(byte pino, byte duty) {
Tms_DutySimples[pino] = linhas * duty / 100;
}
// ================================================================
// Pisca-Pisca - Ativação dos piscas (1 = on, 2= off)
// ================================================================
void Tms74hc595_Pisca_Geral(bool OnOff) {
for (int i = 0; i < leds; i++) Tms_Pisca_OnOff[i] = OnOff;
Tms74hc595_Check_Habilitar();
}
// ================================================================
// Pisca-Pisca - define tempo do pisca
// ================================================================
void Tms74hc595_Pisca_Tempo(int tempo) {
Tms_Pisca_Tempo = tempo;
}
// ================================================================
// Pisca-Pisca - (des)Ativação individual (1 = on, 0= off)
// ================================================================
void Tms74hc595_Pisca_Pino(byte pino, bool OnOff) {
Tms_Pisca_OnOff[pino] = OnOff;
Tms74hc595_Check_Habilitar();
}
// ================================================================
// Define EFEITO para todos os pinos
// 0 = Desabilitado, 1 = 0..100->0...100, 2= 0...100...0...10...
// ================================================================
void Tms74hc595_Efeito_Geral(byte efeito, float topduty) {
for (int i = 0; i < leds; i++) {
Tms_Efeito_SelecEfeito[i] = efeito;
Tms_Efeito_TopDuty[i] = topduty;
}
Tms74hc595_Check_Habilitar();
}
// ================================================================
// Define TEMPO do EFEITO para todos os pinos
// ================================================================
void Tms74hc595_Efeito_Tempo(byte efeito, int tempo) {
if (efeito > 0) {
efeito -= 1;
Tms_Efeito_tempo[efeito] = (tempo / 200); //100 - linhas
}
}
// ================================================================
// Define EFEITO para o pino "N".
// 0 = Desabilitado, 1 = 0..100->0...100, 2= 0...100...0...10...
// ================================================================
void Tms74hc595_Efeito_Pino(byte pino, byte efeito, float topduty) { //
Tms_Efeito_SelecEfeito[pino] = efeito;
Tms_Efeito_TopDuty[pino] = topduty;
if (efeito == 3) {
if (topduty == 0)Tms_Efeito_contador[2][pino] = 0;
else Tms_Efeito_contador[2][pino] = 100;
}
else if (efeito == 0)Tms_Efeito_TopDuty[pino] = 0;
Tms74hc595_Check_Habilitar();
}
// ================================================================
// RESET 1:
// ================================================================
void Tms74hc595_RESET() {
Tms74hc595_Duty_Geral(0);
Tms74hc595_Pisca_Geral(0);
for (int i = 0; i < leds; i++) Tms_Efeito_SelecEfeito[i] = 0;
Tms74hc595_Check_Habilitar();
}
// ================================================================
// Master Reset (tudo para o estado inicial e em off)
// ================================================================
void Tms74hc595_MR() {
Tms74hc595_VI();
Tms74hc595_RESET();
}