
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;
}
}
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
Instalar Linux em notebook Sony Vaio VPCEG13EB (10)
Vou destruir sua infância:) (6)
Quando vocês pararam de testar distros? (24)









