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;
}
}
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Aplicativo simples para gravar tela
Quebra de linha na data e hora no Linux Mint
Firefox não abre em usuário não administradores (0)
Sempre que vou baixar algum pacote acontece o erro dpkg (8)
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (8)
Problema com Conexão Outlook via Firewall (OpenSUSE) com Internet Fibr... (5)