Buscar

arduino

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

// LCD1602 to Arduino Uno connection example
#include <Arduino_FreeRTOS.h>
#include <LiquidCrystal.h>
#include <queue.h>
#include <task.h>
#include <semphr.h>
#include <Wire.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
//Atuadores
static void v_entra_fria( void *pvParameters );
static void v_entra_quente( void *pvParameters );
static void v_sai_quente( void *pvParameters );
static void aquecimento( void *pvParameters );
//Sensores
static void vol_fria( void *pvParameters );
static void vol_quente( void *pvParameters );
static void temperatura( void *pvParameters );
int v_f;
int v_q;
float temp;
/* semaforos utilizados */
//SemaphoreHandle_t xSerial_semaphore; // produtor
//SemaphoreHandle_t xSerial_semaphore1; // consumidor
void setup() {
 lcd.begin(16, 2);
 // you can now interact with the LCD, e.g.:
 lcd.print("Hello World!");
 /* Criação dos semaforos */
 //xSerial_semaphore = xSemaphoreCreateBinary();
 //xSerial_semaphore1 = xSemaphoreCreateBinary();
 /*if (xSerial_semaphore == NULL)
 {
 Serial.println("Erro: nao e possivel criar o semaforo");
 while(1); /* Sem semaforo o funcionamento esta comprometido. Nada mais deve ser feito.
 }*/
 xTaskCreate( v_entra_fria, /* Função que executa a tarefa */
 ( const char * ) "v_entra_fria", /* String que define o nome da tarefa */
 100, /* tamanho da pilha da tarefa */
 NULL, /* parametros para a tarefa */
 tskIDLE_PRIORITY + 1, /* prioridade da tarefa */
 NULL ); /* handle da tarefa */
 xTaskCreate( v_entra_quente, /* Função que executa a tarefa */
 ( const char * ) "v_entra_quente", /* String que define o nome da tarefa */
 100, /* tamanho da pilha da tarefa */
 NULL, /* parametros para a tarefa */
 tskIDLE_PRIORITY + 1, /* prioridade da tarefa */
 NULL ); /* handle da tarefa */
 xTaskCreate( v_sai_quente, /* Função que executa a tarefa */
 ( const char * ) "v_sai_quente", /* String que define o nome da tarefa */
 100, /* tamanho da pilha da tarefa */
 NULL, /* parametros para a tarefa */
 tskIDLE_PRIORITY + 1, /* prioridade da tarefa */
 NULL ); /* handle da tarefa */
 xTaskCreate( aquecimento, /* Função que executa a tarefa */
 ( const char * ) "aquecimento", /* String que define o nome da tarefa */
 100, /* tamanho da pilha da tarefa */
 NULL, /* parametros para a tarefa */
 tskIDLE_PRIORITY + 1, /* prioridade da tarefa */
 NULL ); /* handle da tarefa */
 xTaskCreate( vol_fria, /* Função que executa a tarefa */
 ( const char * ) "vol_fria", /* String que define o nome da tarefa */
 100, /* tamanho da pilha da tarefa */
 NULL, /* parametros para a tarefa */
 tskIDLE_PRIORITY + 1, /* prioridade da tarefa */
 NULL ); /* handle da tarefa */
 xTaskCreate( vol_quente, /* Função que executa a tarefa */
 ( const char * ) "vol_quente", /* String que define o nome da tarefa */
 100, /* tamanho da pilha da tarefa */
 NULL, /* parametros para a tarefa */
 tskIDLE_PRIORITY + 1, /* prioridade da tarefa */
 NULL ); /* handle da tarefa */
 xTaskCreate( temperatura, /* Função que executa a tarefa */
 ( const char * ) "temperatura", /* String que define o nome da tarefa */
 100, /* tamanho da pilha da tarefa */
 NULL, /* parametros para a tarefa */
 tskIDLE_PRIORITY + 1, /* prioridade da tarefa */
 NULL ); /* handle da tarefa */
 /* Inicialização do escalonador */
 vTaskStartScheduler();
 return ;
 /* Inicialização do escalonador */
 vTaskStartScheduler();
 return ;
 /* Inicialização do escalonador */
 vTaskStartScheduler();
 return ;
}
void loop() {
 // ...
}
static void v_entra_fria( void *pvParameters )
{
 //xSemaphoreGive(xSerial_semaphore); 
 while (1)
 { 
 
 }
}
static void v_entra_quente( void *pvParameters )
{
 //xSemaphoreGive(xSerial_semaphore); 
 while (1)
 { 
 
 }
}
static void v_sai_quente( void *pvParameters )
{
 //xSemaphoreGive(xSerial_semaphore); 
 while (1)
 { 
 
 }
}
static void aquecimento( void *pvParameters )
{
 //xSemaphoreGive(xSerial_semaphore); 
 while (1)
 { 
 
 }
}
static void vol_fria( void *pvParameters )
{
 //Define o status de volume dos dois sensores do tanque frio
 int s1 = 0; //Sensor Min
 int s2 = 0; //Sensor MAX
 //xSemaphoreGive(xSerial_semaphore);
 v_f = 1;
 while (1)
 { 
 // Lê sensores
 if (s2 == 1) { //Sensor max ativado
 v_f = 2; // Tanque cheio, bloquear entrada
 }
 else if (s1 == 0) { //Sensor min desativado
 v_f = 1; // Quase sem liquido, não pode ter saida e tem que ter entrada
 }
 }
}
static void vol_quente( void *pvParameters )
{
 //xSemaphoreGive(xSerial_semaphore); 
 //Define o status de volume dos dois sensores do tanque quente
 int s1 = 0; //Sensor Min
 int s2 = 0; //Sensor MAX
 //xSemaphoreGive(xSerial_semaphore);
 v_q = 1;
 while (1)
 { 
 // Lê sensores
 if (s2 == 1) { //Sensor max ativado
 v_q = 2; // Tanque cheio, bloquear entrada
 }
 else if (s1 == 0) { //Sensor min desativado
 v_q = 1; // Quase sem liquido, não pode ter saida e tem que ter entrada
 }
 }
}
static void temperatura( void *pvParameters )
{
 float temperatura = 0;
 //xSemaphoreGive(xSerial_semaphore); 
 temperatura = 70,5; // Teste
 while (1)
 { 
 //Lê termometro aqui
 temp = temperatura;
 }
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando