Gerenciamento de filas

1. Gerenciamento de filas

NexoCPC
NexoCPC

(usa Outra)

Enviado em 20/06/2022 - 21:20h

Olá amigos, estou precisando de ajuda em um código que estou fazendo para o Arduino em C++, ele gerencia filas
No momento travei na parte que ele chama filas, já que ele gera normalmente de 1 a 10, que foi o limite estabelecido
Porém na hora de chamar ele sempre fica em 0
Tudo isso usando o display, deixo abaixo o código para darem uma olhada e se possível ajudarem



#include <U8glib.h>

#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <gfxfont.h>
#include <Wire.h> //INCLUSÃO DE BIBLIOTECA


#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display = Adafruit_SSD1306();
#define limit 10


char buff[40];
char buff1[25];
char buff2[25];
struct fila_struct {
int position[limit];
int initial_position;
int end_position;
};

struct fila_struct fila;
int num_atendimento = 0;
int num = 0;

int senha = 0;
int senhaP = 0;
bool sair = true;

void setup(){
pinMode(12, INPUT);
pinMode(4, OUTPUT);
pinMode(13, INPUT);
pinMode(2, OUTPUT);
Wire.begin(); //INICIALIZA A BIBLIOTECA WIRE
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //INICIALIZA O DISPLAY COM ENDEREÇO I2C 0x3C
display.setTextColor(WHITE); //DEFINE A COR DO TEXTO
display.setTextSize(1); //DEFINE O TAMANHO DA FONTE DO TEXTO
display.clearDisplay(); //LIMPA AS INFORMAÇÕES DO DISPLAY
}

void loop()
{
fila.initial_position = 0;
fila.end_position = 0;

if(digitalRead(12) == 1){
display.setCursor(0,0); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
retirar_senha();
display.print(buff); //ESCREVE O TEXTO NO DISPLAY
display.display(); //EFETIVA A ESCRITA NO DISPLAY
delay(150);
display.clearDisplay(); //LIMPA AS INFORMAÇÕES DO DISPLAY
}
if(digitalRead(13) == 1){
display.setCursor(0,0); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
retirar_senhaP();
display.print(buff); //ESCREVE O TEXTO NO DISPLAY
display.display(); //EFETIVA A ESCRITA NO DISPLAY
delay(1500);
display.clearDisplay(); //LIMPA AS INFORMAÇÕES DO DISPLAY
}
if(digitalRead(2) == 1){
display.setCursor(0,0); //POSIÇÃO EM QUE O CURSOR IRÁ FAZER A ESCRITA
fila_decrement();
display.print(buff1); //ESCREVE O TEXTO NO DISPLAY
display.display(); //EFETIVA A ESCRITA NO DISPLAY
delay(1500);
display.clearDisplay(); //LIMPA AS INFORMAÇÕES DO DISPLAY
}
}

void fila_increment(int senha){
if (fila.end_position == limit) {
}
else {
fila.position[fila.end_position] = senha;
fila.end_position++;
}
}

void fila_decrement(){
if (fila.initial_position == fila.end_position) {
sprintf(buff1,"Fila vazia");
}
else {
sprintf(buff1," ");
for (int i=0; i < limit -1; i++){
fila.position[i] = fila.position[i+1];
}
fila.position[fila.end_position] = 0;
fila.end_position--;
num_atendimento++;
}
ver_fila();
}

void ver_fila() {
sprintf(buff1,"Fila: ");
for (int i=0; i<limit; i++){

sprintf(buff1,"%d, ", fila.position[i]);
}
sprintf(buff1,"Senha chamada: %d", num_atendimento);
limpar_msg(0);
}


void retirar_senha(){

int sua_senha;
if (validar() == 1) {
sua_senha = senha + 1;

sprintf(buff,"Sua senha: %d \nNormal", sua_senha);
senha++;
fila_increment(sua_senha);
}
}
void retirar_senhaP(){

int sua_senha;
if (validar() == 1) {
sua_senha = senhaP + 1;

sprintf(buff,"Sua senha: %d \nTipo: Prioritaria", sua_senha);
senhaP++;
fila_increment(sua_senha);
}
}

int validar(){
if (senha == limit || senhaP == limit ) {
return -1;
}
else if(senha <= limit || senhaP <= limit) {
return 1;
}

}




  






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts