Enviado em 20/06/2022 - 21:13h
Olá amigos, estou precisando de ajuda em um código que estou fazendo para o Arduino em C++, ele gerencia filas
#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;
}
}
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta