/******************************************************************************
Nome do Arquivo : main.c
Descrição : Arquivo principal aula 5, exemplo 1
Ambiente : WOKWI e RP2040 C/C++ SDK
Responsável : Weslley M. Torres
Versão/Data : 1.0.0 - 25/03/2024 - Initial version
Executores :
Leandro Florencio RA1600732413032
Rodrigo M Silva RA1600732413027
Denner C Santos RA1600732413039
Paulo H B Aragao RA1600732413006
*****************************************************************************/
/******************************************************************************
HEADER-FILES (Somente os arquivos necessários nesse arquivo)
******************************************************************************/
#include <stdio.h>
#include "pico/stdlib.h"
#include "display_lcd.h"
#include "hardware/gpio.h"
#include "hardware/adc.h"
/*****************************************************************************/
/******************************************************************************
Variaveis Globais
******************************************************************************/
#define led_FM 20
#define led_PO 21
#define led_FB 28
#define led_C_OK 17
#define led_C_RES 18
#define led_C_BX 19
#define led_TEMPM 22
#define SB 7
#define SPO 8
#define SFM 9
#define GPIO_SENSOR_COMB 27
#define adc_input_comb 1
#define GPIO_SENSOR_TEMP 26
#define adc_input_temp 0
#define OUT_H 1
#define OUT_L 0
#define OUT 1
#define IN 0
// Factor to convert ADC reading to voltage
// Assumes 12-bit, ADC_VREF = 3.3V
const float conversionFactor = 3.3f / (1 << 12);
/*****************************************************************************/
/******************************************************************************
Prototipos das funções
******************************************************************************/
void system_init(void);
/*****************************************************************************/
/******************************************************************************
Funcao: int main(void)
Entrada: Nenhuma (void)
Saída: Nenhuma (void)
Descrição: Função principal
*****************************************************************************/
int main()
{
uint8_t estado_chave = 1;
uint8_t estado_chave2 = 1;
uint8_t estado_chave3 = 1;
unsigned char texto_linha_um[17] = "FATEC S.A. 2025";
unsigned char texto_linha_dois[17] = "Ativ. uC Aula 9";
float pot_read = 0.0f;
uint16_t adc_reading = 0;
stdio_init_all();
printf("Microcontroladores - Aula 09 - Atividade !\n");
sleep_ms(250);
system_init();
posicao_cursor_lcd(1, 1);
escreve_frase_ram_lcd(texto_linha_um);
posicao_cursor_lcd(2, 1);
escreve_frase_ram_lcd(texto_linha_dois);
sleep_ms(100);
while (true)
{
estado_chave = gpio_get(SB);
if(estado_chave == 1)
{
gpio_put(led_FB, OUT_L);
}else{
gpio_put(led_FB, OUT_H);
}
sleep_ms(100);
estado_chave2 = gpio_get(SPO);
if(estado_chave2 == 1)
{
gpio_put(led_PO, OUT_H);
}else{
gpio_put(led_PO, OUT_L);
}
sleep_ms(100);
estado_chave3 = gpio_get(SFM);
if(estado_chave3 == 1)
{
gpio_put(led_FM, OUT_L);
}else{
gpio_put(led_FM, OUT_H);
}
sleep_ms(100);
adc_select_input(1);
adc_read();
uint16_t sensor_comb = adc_read();
adc_select_input(0);
adc_read();
uint16_t sensor_temp = adc_read();
if(sensor_comb>=3000)
{
gpio_put(led_C_OK, OUT_H);
gpio_put(led_C_RES, OUT_L);
gpio_put(led_C_BX, OUT_L);
}
else if(sensor_comb>=1050 && sensor_comb<=2999)
{
gpio_put(led_C_OK, OUT_L);
gpio_put(led_C_RES, OUT_H);
gpio_put(led_C_BX, OUT_L);
}
else if(sensor_comb>=0 && sensor_comb <=1049)
{
gpio_put(led_C_OK, OUT_L);
gpio_put(led_C_RES, OUT_L);
gpio_put(led_C_BX, OUT_H);
}
if(sensor_temp>=1050)
{
gpio_put(led_TEMPM, OUT_L);
}
else if(sensor_temp>=0 && sensor_temp<=1049)
{
gpio_put(led_TEMPM, OUT_H);
}
LIMPA_DISPLAY();
posicao_cursor_lcd(1, 1);
escreve_inteiro_lcd(sensor_comb);
posicao_cursor_lcd(2, 1);
escreve_inteiro_lcd(sensor_temp);
sleep_ms(100);
}
}
/******************************************************************************
Funcao: void system_init(void)
Entrada: Nenhuma (void)
Saída: Nenhuma (void)
Descrição: Inicializa sistema (microcontrolador e periféricos)
*****************************************************************************/
void system_init(void)
{
printf("Init Systems ....\n");
gpio_init(led_FM);
gpio_set_dir(led_FM, OUT);
gpio_init(led_PO);
gpio_set_dir(led_PO, OUT);
gpio_init(led_FB);
gpio_set_dir(led_FB, OUT);
gpio_init(SB);
gpio_set_dir(SB, IN);
gpio_pull_up(SB);
gpio_init(SPO);
gpio_set_dir(SPO, IN);
gpio_pull_up(SPO);
gpio_init(SFM);
gpio_set_dir(SFM, IN);
gpio_pull_up(SFM);
sleep_ms(250);
gpio_init(led_C_OK);
gpio_set_dir(led_C_OK, OUT);
gpio_init(led_C_RES);
gpio_set_dir(led_C_RES, OUT);
gpio_init(led_C_BX);
gpio_set_dir(led_C_BX, OUT);
gpio_init(led_TEMPM);
gpio_set_dir(led_TEMPM, OUT);
adc_init();
adc_gpio_init(GPIO_SENSOR_COMB);
adc_init();
adc_gpio_init(GPIO_SENSOR_TEMP);
init_lcd();
}Combustível Ok
Combustível Reserva
Combustível Baixo
Sensor
Combustível
Sensor
Temperatura
Sensor Bateria
Temperatura Motor
Pressão Óleo
Falha no Motor
Falha Bateria
Sensor Pressão Óleo
Sensor Falha Motor