-
Notifications
You must be signed in to change notification settings - Fork 11
/
andruino_bluetooth.ino
206 lines (172 loc) · 4.79 KB
/
andruino_bluetooth.ino
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/**
* =========================================================================
*
* App: Andruino
* Versão: 0.0.1
* Data: 23 de julho de 2015
* Developer: Rodrigues F. A. S.
*
* ======================================================================*/
#include <Thread.h>
#include <ThreadController.h>
/* Declara uma thread "raiz" um controle que agrupa as thread's filhas.. */
ThreadController cpu;
Thread threadRecebeDadosandroid;
/* Pino que conecta os pinos do LED RGB. */
const int VERMELHO = 10;
const int VERDE = 9;
const int AZUL = 11;
/* Tempo de cor de transição. */
const int delayTime = 10;
/* Definição de variáveis globais. */
int ValVermelho = 0;
int ValAzul = 0;
int ValVerde = 0;
boolean separador = false;
const uint8_t BUFFER = 15;
char dispositivo[BUFFER];
uint8_t tamDispositivo = 0;
char valor[5];
uint8_t tamValor = 0;
int aux = 0;
/**
* setup -
*/
void setup() {
/* Inicia uma comunicação serial com uma taxa de 9600, para comunicação via Bluetooth.. */
Serial.begin(9600);
/* Define o pino digital como saída. */
pinMode(VERDE, OUTPUT);
pinMode(AZUL, OUTPUT);
pinMode(VERMELHO, OUTPUT);
threadRecebeDadosandroid.setInterval(15);
threadRecebeDadosandroid.onRun(recebeDadosAndroid);
/* Adiciona as thread's filhas a thread raiz ou mãe.. */
cpu.add(&threadRecebeDadosandroid);
}
/**
* loop -
*/
void loop() {
/* Start a thread raiz.. */
cpu.run();
}
/**
* recebeDadosAndroid -
*/
void recebeDadosAndroid() {
if(Serial.available()) { /* Enquanto houverem bytes disponíveis; */
char c = Serial.read(); /* Lê byte do buffer serial; */
if (c == '\n') {
if (tamDispositivo == 0) return;
dispositivo[tamDispositivo] = 0;
tamDispositivo = 0;
valor[tamValor] = 0;
tamValor = 0;
aux = atoi(valor);
separador = false;
if (!strcmp(dispositivo, "led_on") && !strcmp(valor, "1")) led_on();
else if (!strcmp(dispositivo, "led_off") && !strcmp(valor, "0")) led_off();
else if (!strcmp(dispositivo, "seekBarR")) analogWrite(VERMELHO, ValVermelho = aux);
else if (!strcmp(dispositivo, "seekBarG")) analogWrite(VERDE, ValVerde = aux);
else if (!strcmp(dispositivo, "seekBarB")) analogWrite(AZUL, ValAzul = aux);
else if (!strcmp(dispositivo, "demoRGB")) demoRGB();
}
else if (tamDispositivo < BUFFER - 1) { // Verifica, separa e incrementa os dados.
if(c != '+' && separador == false){
dispositivo[tamDispositivo] = c;
tamDispositivo++;
}
else if(c == '+'){
separador = true;
}
else {
valor[tamValor] = c;
tamValor++;
}
}
}
}
/**
* led_on -
*/
void led_on() {
digitalWrite(VERDE, HIGH); digitalWrite(AZUL, HIGH); digitalWrite(VERMELHO, HIGH);
}
/**
* led_off -
*/
void led_off() {
digitalWrite(VERDE, LOW); digitalWrite(AZUL, LOW); digitalWrite(VERMELHO, LOW);
}
/**
* demoRGB -
*/
void demoRGB(){
/**
* ==============================================
* Variação de VERDE para VERMELHO
* =================================
*/
int ValVermelho = 255;
int ValAzul = 0;
int ValVerde = 0;
for(int i = 0 ; i < 255 ; i += 1) {
ValVerde += 1;
ValVermelho -= 1;
/**
* Em cada ciclo de diferença
* 255 - ValVerde Redução
* 255 - ValVermelho Aumenta
* Calsando uma transição gradual de VERDE para VERMELHO
*/
analogWrite( VERDE, 255 - ValVerde );
analogWrite( VERMELHO, 255 - ValVermelho );
/* Aguardando para perceber cor */
delay( delayTime );
} // FIM for
/**
* ==============================================
* Variação de AZUL para VERDE
* =================================
*/
ValVermelho = 0;
ValAzul = 0;
ValVerde = 255;
for(int i = 0 ; i < 255 ; i += 1){
ValAzul += 1;
ValVerde -= 1;
/**
* Em cada ciclo de diferença
* 255 - ValAzul Redução
* 255 - ValVerde Aumenta
* Calsando uma transição gradual de AZUL para VERDE.
*/
analogWrite( AZUL, 255 - ValAzul );
analogWrite( VERDE, 255 - ValVerde );
/* Aguardando para perceber cor */
delay( delayTime );
}
/**
* ==============================================
* Variação de VERMELHO para AZUL
* =================================
*/
ValVermelho = 0;
ValAzul = 255;
ValVerde = 0;
for( int i = 0 ; i < 255 ; i += 1 ){
ValVermelho += 1;
ValAzul -= 1;
/**
* Em cada ciclo de diferença
* 255 - ValVermelho Redução
* 255 - ValAzul Aumenta
* Calsando uma transição gradual de VERMELHO para AZUL.
*/
analogWrite( VERMELHO, 255 - ValVermelho );
analogWrite( AZUL, 255 - ValAzul );
/* Aguardando para perceber cor */
delay( delayTime );
}
}