2#include <avr/interrupt.h>
15#define motor_esquerdo PD5
17#define motor_direito PD6
19#define esquerdo_frente PB0
21#define esquerdo_traz PD7
23#define direito_frente PB4
25#define direito_traz PB3
27#define botao_reset PB5
66 switch(numero_de_vidas)
119 TCCR1B |= ((1 << CS10) | (1 << CS11));
139 TIMSK1 |= (1 << TOIE1);
142 uint16_t ovf_totais = segundos * 4;
147 TIMSK1 &= ~(1 << TOIE1);
155 TCCR0A |= ((1 << COM0A1) | (1 << WGM00) | (1 << WGM01) | (1 << COM0B1));
157 TCCR0B |= (1 << CS00);
223 TCCR2B |= (1<<CS21) | (1<< CS22) | (1<<CS20);
227 TIMSK2 |= (1 <<TOIE2);
256 ADCSRA |= (1 << ADSC);
264 ADCSRA &= ~(1 << ADIE);
272 ADCSRA |= (1 << ADIE);
282 PRR &= ~(1 << PRADC);
284 ADMUX |= (1 << REFS0);
286 ADCSRA |= ((1 << ADEN) | (1 << ADIE));
288 ADCSRA |= ((1 << ADPS0) | (1 << ADPS1) | (1 << ADPS2));
290 DIDR0 |= (1 << ADC0D);
300 uint16_t valor = ADCL;
301 valor += (ADCH << 8);
338 baud = (
F_CPU/(speed*baud)) - 1;
340 UBRR0H = (baud & 0x0F00) >> 8;
341 UBRR0L = (baud & 0x00FF);
343 UCSR0B |= ((1 << RXEN0) | (1 << RXCIE0));
345 UCSR0C = (1 << UCSZ01) | (1 << UCSZ00);
354 UCSR0B &= ~(1 << RXCIE0);
362 UCSR0B |= (1 << RXCIE0);
370 WDTCSR = (1 << WDCE) | (0 << WDE);
396 WDTCSR = (1 << WDCE) | (1 << WDE);
398 WDTCSR = (1 << WDE) | (1 << WDP0);
#define esquerdo_frente
Pino da direção do motor esquerdo para frente.
volatile bool jogo_acabou
Variável para controlar se o jogo ainda está em andamento ou foi finalizado. Valores possíveis: (true...
void atualizar_vidas(int numero_de_vidas)
Atualizar a quantidade de vida.
void desligar_usart_interrupcao()
Desligar a interrupção USART.
void adc_init()
Iniciar o sistema "ADC".
#define motor_direito
Pino do sinal PWM do motor direito.
#define botao_reset
Pino do botão de reset.
volatile bool atingido
Variável para controlar se o sensor LDR foi atingido por um laser. Valores possíveis: (true | false)
#define led2_pin
Pino do segundo Led.
#define F_CPU
Macro referente a frequência do Microcontrolador utilizado.
#define led3_pin
Pino do terceiro Led.
#define led1_pin
Pino do primeiro Led.
#define BAUD
Macro referente a velocidade de comunicação que se deseja utilizar no USART.
volatile char letra_recebida
Variável que armazena a letra recebida pelo USART. Valores possíveis: ('l', 'r', 'u',...
#define direito_traz
Pino da direção do motor direito para traz.
void comecar_adc_conversao()
Começar a conversão ADC.
void ligar_usart_interrupcao()
Ligar a interrupção USART.
void alternar_laser()
Alternar o estado do laser.
volatile uint16_t total_ovf0
Variável para contar a quantidade de estouros do TIMER0. Valores possíveis: (0-65535)
void resetar_sistema()
Resetar o sistema.
#define esquerdo_traz
Pino da direção do motor esquerdo para traz.
void timer2_init_laser()
Iniciar o TIMER2.
#define direito_frente
Pino da direção do motor direito para frente.
volatile uint16_t total_ovf2
Variável para contar a quantidade de estouros do TIMER2. Valores possíveis: (0-65535)
void atraso_segundos(uint16_t segundos)
Atrasar execução do código.
void timer1_init_delay()
Iniciar o TIMER1.
void usart_init(uint32_t baud)
Iniciar o sistema USART.
volatile bool estado_laser
Variável para controlar o estado do laser. Valores possíveis: (true | false)
volatile bool motor_ativado
Variável para controlar o estado do motor. Valores possíveis: (true | false)
volatile uint16_t total_ovf1
Variável para contar a quantidade de estouros do TIMER1. Valores possíveis: (0-65535)
void timer0_init_pwm()
Iniciar o TIMER0.
ISR(TIMER1_OVF_vect)
Interrupção TIMER1 OVF.
volatile bool dado_recebido
Variável que controla se o dado foi recebido ou não. Valores possíveis: (true | false)
void desligar_adc()
Desligar a interrupção ADC.
void religar_adc()
Ligar a interrupção ADC.
volatile int quantidade_vidas
Variável para contabilizar a quantidade de vidas atuais do carro. Valores possíveis: (0-3)
void atualizar_estado_laser(bool estado)
Definir o estado do laser.
#define motor_esquerdo
Pino do sinal PWM do motor esquerdo.
void atualizar_direcao(char direcao)
Atualizar direção do carrinho.
int main()
Função Principal.
#define laser_pin
Pino do laser.
void setup_inicial()
Configuração Inicial.