TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Modelo Para Cronometro Arduino

Artigo: Modelo Para Cronometro Arduino. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  4/3/2014  •  428 Palavras (2 Páginas)  •  1.040 Visualizações

Página 1 de 2

#define botaoCronometro 0

#define botaoLap 1

#define rxPin 2

#define txPin 3

#define chaveCorridaReconhecimento 4

#define ledErro 6

#define ledCronometro 7

#define coordArqName "coord.txt"

#define lapArqName "lap.txt"

#include <SD.h>

#include <TinyGPS.h>

#include <SoftwareSerial.h>

Sd2Card card;

TinyGPS gps;

SoftwareSerial nss = SoftwareSerial(rxPin, txPin);

int fracional = 0;

int value = LOW;

int ultimoEstadoBotaoCronometro = HIGH;

int ultimoEstadoBotaoLap = HIGH;

int r = 5;

long startTime = 0;

float latitude;

float longitude;

bool iniciaCronometro = false;

bool newData = false;

String tempo = "";

String getTempo();

void corrida();

void lap();

void cronometro();

void imprimeCoord(File arquivo);

void imprimeLapArq();

void imprimeCoordArq();

void imprimeLap(File arquivo, float x, float y);

void procuraDadosArquivo(float x, float y, String tempo);

bool verificaPontoCircunferencia(float x, float y, float x0, float y0);

void imprimeDiferenca(double diferenca);

void erroCartao();

void erroGPS();

void setup() {

nss.begin(4800);

pinMode(rxPin, INPUT);

pinMode(txPin, OUTPUT);

//inicia Leds

pinMode(ledCronometro, OUTPUT);

pinMode(ledErro, OUTPUT);

//inicia Botoes

pinMode(botaoCronometro, INPUT);

pinMode(botaoLap, INPUT);

pinMode(chaveCorridaReconhecimento, INPUT);

attachInterrupt(botaoCronometro, cronometro, CHANGE);

attachInterrupt(botaoLap, lap, CHANGE);

digitalWrite(botaoCronometro, HIGH);

digitalWrite(botaoLap, HIGH);

digitalWrite(chaveCorridaReconhecimento, HIGH);

digitalWrite(ledErro, LOW);

if (!SD.begin()) {

erroCartao();

}

}

void loop() {

if (card.init()) {

bool newData = false;

for (unsigned long start = millis(); millis() - start < 1000;) {

while (nss.available()) {

newData = gps.encode(nss.read());

}

}

if (newData) {

gps.f_get_position(&latitude, &longitude, NULL);

tempo = getTempo();

imprimeCoordArq();

if (!digitalRead(chaveCorridaReconhecimento)) {

corrida();

}

} else {

newData = false;

erroGPS();

}

} else {

erroCartao();

}

}

void cronometro() {

int acaoBotaoCronometro = digitalRead(botaoCronometro);

if (acaoBotaoCronometro == LOW && ultimoEstadoBotaoCronometro == HIGH && !iniciaCronometro && newData) {

iniciaCronometro = true;

startTime = millis();

digitalWrite(ledCronometro, HIGH);

delay(5);

} else if (acaoBotaoCronometro == LOW && ultimoEstadoBotaoCronometro == HIGH && iniciaCronometro && newData) {

iniciaCronometro = false;

digitalWrite(ledCronometro, LOW);

delay(5);

}

ultimoEstadoBotaoCronometro = acaoBotaoCronometro;

}

void lap() {

if (iniciaCronometro && digitalRead(chaveCorridaReconhecimento) && newData) {

int acaoBotaoLap = digitalRead(botaoLap);

if (acaoBotaoLap == LOW && ultimoEstadoBotaoLap == HIGH) {

imprimeLapArq();

delay(5);

}

ultimoEstadoBotaoLap

...

Baixar como (para membros premium)  txt (5.9 Kb)  
Continuar por mais 1 página »
Disponível apenas no TrabalhosGratuitos.com