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;
}
}
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Dificuldade para renderizar vídeo no kdenlive (6)
xubuntu sem sons de eventos (3)
Erro ao iniciar serviço samba4 como novo dc em um ambiente com ad [RES... (9)