RTOS - Prática
Lab 4 - GPIO - Prática |
---|
Deadline: 16/9 (Antes da aula) |
Repositório no classroom |
💰 70% nota de lab |
Exercise
Warning
Agora surgem novas regras, consulte a página: CodeQuality/RTOS para saber as regras que serão aplicadas.
O projeto exemplo fornecido possui um RTOS e duas tasks
, sendo que só uma está ativada. O código exemplo fornece uma demo de como utilizar a placa OLED1 e as bibliotécas gráficas.
Para comecar de uma olhada no código fornecido e o execute na placa. Depois de executar a primeira versão, mude a task criada para executar um outro demo que modifica o tamanho das fontes:
int main() {
stdio_init_all();
xTaskCreate(oled1_demo_1, "Demo 1", 4095, NULL, 1, NULL);
//xTaskCreate(oled1_demo_2, "Demo 2", 4095, NULL, 1, NULL);
vTaskStartScheduler();
while (true)
;
}
Praticando
Vamos mexer novamente com o sensor de ultrassom
, só que agora iremos estruturar o código para operar com rtos
e exibir o resultado no OLED.
Info
Você deve seguir necessáriamente a estrutura proposta a seguir
A estrutura do código que deve ser entrega, deve seguir o diagrama a seguir, onde:
pin_callback
: Função callback do pino do echo.trigger_task
: Task responsável por gerar o trigger.echo_task
: Task que faz a leitura do tempo que o pinoecho
ficou levantado.oled_task
: Task que exibe a informação da distancia no display.- Faz uso de dois recursos,
xSemaphoreTrigger
exQueueDistance
- Faz uso de dois recursos,
Recursos:
xQueueTime
: Fila com informação do tempoto_us_since_boot
xSemaphoreTrigger
: Avisa o OLED que uma leitura foi disparadaxQueueDistance
: Valor da distância em cm lido pelatask_echo
Display
Você deve exibir no display:
- Se o sensor falhou
- O valor da distância, quando executada
- Uma barra que representa a distância