Skip to content

Commit 4a783d7

Browse files
committed
comentarios
1 parent 5d58f3d commit 4a783d7

File tree

1 file changed

+61
-20
lines changed

1 file changed

+61
-20
lines changed

50bikes.ino

Lines changed: 61 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -206,63 +206,104 @@ boolean img[210][10] = {
206206
#define REED 2
207207
#define POT A5
208208

209-
//uint8_t LEDS[] = {A4, A3, A2, A1, A0, 13, 12, 11, 10, 9};
209+
// usando portas digitais e analogicas para os leds
210+
// razao: ficam do mesmo lado do chip ATMEGA328
211+
210212
uint8_t LEDS[] = {9, 10, 11, 12, 13, A0, A1, A2, A3, A4};
211213

212214
boolean last_reed = LOW;
213-
float mps = 50000.0;
215+
214216
unsigned long time = 0;
215217
unsigned long clock = 0;
216218
unsigned long time2 = 0;
217219
unsigned long clock2 = 0;
218220
unsigned long milisec = 0;
219221

220222
int pos = 0;
223+
float velo = 50000.0;
221224

222225
void setup(){
226+
227+
// todos os leds sao output
228+
223229
for (int i = 0; i < NUMBER_OF_LEDS; i++){
230+
224231
pinMode(LEDS[i],OUTPUT);
232+
225233
}
234+
235+
// reed switch como input
236+
// fica HIGH quando o ima chega perto
237+
226238
pinMode(REED,INPUT);
239+
240+
// serial usado apenas para debug no arduino
241+
227242
Serial.begin(9600);
243+
228244
}
229245

230246
void loop() {
247+
248+
// pega valor do reed e do trimpot
249+
231250
int reed_val = digitalRead(REED);
232251
int pot = analogRead(POT);
233-
int gap = int(pot/1023.0*200.0);
234-
/*
235-
Serial.print(gap);
236-
Serial.print(" ");
237-
Serial.println(pot);
238-
//*/
239-
252+
253+
// gap serve para rotacionar o desenho
254+
// porcentagem do trimpot * largura em pixels
255+
256+
int gap = int(pot / 1023.0 * 200.0);
257+
258+
// se valor do reed for diferente do anterior...
259+
240260
if(reed_val != last_reed){
261+
262+
// e se valor for LOW, eh porque o ima acabou de sair da zona magnetica
263+
// ou seja, giro completo, reiniciar desenho e calcular velocidade
264+
241265
if(reed_val == LOW){
266+
267+
// calcula diferenca de tempo e reseta clock
268+
242269
time = micros() - clock;
243270
clock = micros();
271+
272+
// velocidade: tempo / largura em pixels
273+
274+
velo = (float)time / 200;
244275
pos = 0;
245-
mps = (float)time / 800;
276+
246277
}
278+
247279
last_reed = reed_val;
248-
}//*/
249280

250-
if(micros() - clock2 > mps){
281+
}
282+
283+
// verificar se ja eh pra mostrar outra coluna de pixels
284+
285+
if(micros() - clock2 > velo){
251286

252287
clock2 = micros();
253288

254-
pos = (int)((float)(clock2 - clock)/mps*.25);
289+
// define posicao
290+
291+
pos = (int)((float)(clock2 - clock) / velo * 1.0);
255292
int newpos = (gap + pos) % 200;
256-
257-
Serial.println(newpos);
258-
259-
if(newpos>0 && newpos<200){
260-
293+
294+
if(newpos > 0 && newpos < 200){
295+
296+
// envia para os leds
297+
261298
for (int i = 0; i < NUMBER_OF_LEDS; i++){
262-
digitalWrite(LEDS[i], img[newpos+10][i]);
299+
300+
digitalWrite(LEDS[i], img[newpos + 10][i]);
301+
263302
}
303+
264304
}
305+
265306
}
266-
//*/
307+
267308
delayMicroseconds(5);
268309
}

0 commit comments

Comments
 (0)