Comunicação UART

From TheUbberCannon

Esta atividade possui 2 objetivos distintos:

1. criar uma abstração da UART em C++ de tal forma que possamos utilizar uma interface mais alto-nível, sem nos preocuparmos com os detalhes da arquitetura do AVR tais como registradores, etc..

2. criar uma máquina de estados finitos que permita mover os motores de passo para uma dada posição e disparar.


Resultados obtidos:

  • Criada uma classe em C++ para abstrair a UART. Esta classe foi implementada como um Singleton, possui os método enviar char e string pela UART e um sistema de notificação de notificação (baseado em interrupção) para quando um dado chega na UART.
  • Criada uma maquina de estados finitos que recebe notificações da UART e age de acordo com a MEF desenhada. Ela interaje com a classe Canhão, comandando-o.
  • Criada classe Canhão. Ela subdivide o espaço de mira em 255 partes (horizontais e verticais) e permite que elas sejam alteradas pelo protocolo. Possui um método processar(), este método calcula o que deve ser feito pelos motores de passo para que as posições desejadas e reais se tornem iguais e o canhão seja disparado. Ele deve ser chamado em um loop em intervalos regulares com um leve espaçamento de tempo entre eles. A cada chamada os motores de passo se desligam ou dão um passo (de forma a se aproximar do objetivo).