Você está na página 1de 2

ROTEIRO DE AULA PRTICA

DISCIPLINA ROBO Robtica

TURMA PERODO NOME DOCUMENTO DATA

EMECN16-A 9 perodo ROBO-RAP-03


30/03/2017
EMECN16-B 2017/1 cdigo 03
PGINA 1 DE 2

Aula Prtica 03
Cdigo 03

/*
HAL - Hardware Abstraction Layer
*/
#define LEDPIN 31
#define Button_A 52
#define Button_B 53
/*
Funo que serve para acender o LED
*/
void AcendeLED() {
digitalWrite(LEDPIN, HIGH);
}
/*
Funo que serve para apagar o LED
*/
void ApagaLED() {
digitalWrite(LEDPIN, LOW);
}
/*
Funo que serve para verificar se o LED est acesso
*/
unsigned short EstadoLED() {
return digitalRead(LEDPIN);
}
/*
Funo que serve para ler o estado da chave
*/
unsigned short EstadoChave(unsigned short PinChave) {
return digitalRead(PinChave);
}
/*
VARIVEIS GLOBAIS
*/
unsigned long tempoAnterior = 0;
unsigned long tempoDebouncing = 0;
unsigned int intervaloBlink = 1000;
/*
Funo de inicializao do arduino
*/
void setup() {
ROTEIRO DE AULA PRTICA
DISCIPLINA ROBO Robtica

TURMA PERODO NOME DOCUMENTO DATA

EMECN16-A 9 perodo ROBO-RAP-03


30/03/2017
EMECN16-B 2017/1 cdigo 03
PGINA 2 DE 2

// define que ser entrada e quem ser sada


pinMode(LEDPIN, OUTPUT);
pinMode(Button_A, INPUT);
pinMode(Button_B, INPUT);
}
/*
Funo LOOP
*/
void loop() {

unsigned long tempoAtual = millis();


unsigned long tempoDecorrido = tempoAtual - tempoAnterior;

// verifica se chegou no intervalo desejado e se sim apaga ou acende o led


if (tempoDecorrido >= intervaloBlink) {
if (EstadoLED() == 0) {
AcendeLED();
} else {
ApagaLED();
}

tempoAnterior = tempoAtual;
}

if ((millis() - tempoDebouncing) >= 250) {


// verifica se pressionou a chave A, se sim aumenta o tempo
if (EstadoChave(Button_A) == 1) {
if (intervaloBlink >= 2750) {
intervaloBlink = 3000;
} else {
intervaloBlink += 250;
}
}

// verifica se pressionou a chave B, se sim diminui o tempo


if (EstadoChave(Button_B) == 0) {
if (intervaloBlink <= 350) {
intervaloBlink = 150;
} else {
intervaloBlink -= 250;
}
}

tempoDebouncing = millis();
}
}