Ir ao conteúdo

Vinicius Mariano

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

1
  1. Olá colegas, tudo bem?! Comecei um projeto no arduino para a matéria de estrutura de dados da faculdade, é sobre um gerenciamento de filas usando C, ele cria a senha normal e preferencial, mas quando é para chamar ele não consegue chamar nenhuma fila, já fiz o mesmo código no computador usando o console e funcionou, mas no arduino não, podem me ajudar?, segue abaixo o vídeo e o código. #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; } } arduino.mp4.5f64f961bac0463e1ba31433333341f4.rar

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!