Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "LedControl.h"
- LedControl lc=LedControl(12,11,10,1);
- #define btnUp 7 // Botão que aumenta a variável "quantidade" (quantidade de folhas)
- #define btnDown 6 // Botão que diminui a variável "quantidade" (quantidade de folhas)
- #define btnUp1 5 // Botão que aumenta a variável "tamanho" (tamanho da folha em cm)
- #define btnDown1 4 // Botão que diminui a variável "tamanho" (tamanho da folha em cm)
- #define corte 8 // Saída provisória que representa os relés do atuador solenoide ligado a guilhotina
- #define rolete 9 // Saída prosisória que representa o rolete que movimenta a folha para frente e para tráz, conectado a um motor de passo
- #define buzzer 13 // Saída que aciona o alarme, quando a rotina de corte termina ou a bobina acaba
- #define sensor 3 // Entrada que dedecta se há bobina, quando a bobina acaba o sensor desativa e pausa a rotina
- int btn_v = 0; // Variável que armazena o valor lido dos botões
- int btn_i = 0;
- int btnStart; // Botão que aciona a rotina de corte
- int btnPause; // Botão que pausa e continua a rotina de corte
- int btnStop; // Botão que pára a rotina de corte e zera os contadores
- int btnAlimentar; // Botão que gira o rolete horário para alimentar a bobina
- int btnRetirar; // Botão que gira o rolete anti-horário para retirar a bobina
- int btnRead()
- {
- btn_v = analogRead(0); // Leitura dos botões com divisor de tensão
- if (btn_v < 50) return btnStart;
- if (btn_v < 250) return btnPause;
- if (btn_v < 420) return btnStop;
- if (btn_v < 620) return btnAlimentar;
- if (btn_v < 950) return btnRetirar;
- }
- int quantidade = 000, increm = 1, tamanho = 001;
- void setup() {
- lc.shutdown(0,false);
- lc.setIntensity(0,8);
- lc.clearDisplay(0);
- pinMode (btnUp, INPUT);
- pinMode (btnDown, INPUT);
- pinMode (btnUp1, INPUT);
- pinMode (btnDown1, INPUT);
- pinMode (corte, OUTPUT);
- pinMode (rolete, OUTPUT);
- pinMode (buzzer, OUTPUT);
- pinMode (sensor, INPUT);
- }
- void alarme() // Função alarme
- {
- digitalWrite(buzzer, HIGH);
- delay(500);
- digitalWrite(buzzer, LOW);
- delay(500);
- digitalWrite(buzzer, HIGH);
- delay(500);
- digitalWrite(buzzer, LOW);
- delay(500);
- digitalWrite(buzzer, HIGH);
- delay(500);
- digitalWrite(buzzer, LOW);
- delay(500);
- }
- void printQuantidade(int v) { // Função que imprime a variável "quantidade"
- int ones;
- int tens;
- int hundreds;
- boolean negative=false;
- if(v < 000 || v > 999)
- return;
- ones=v%10;
- v=v/10;
- tens=v%10;
- v=v/10; hundreds=v;
- lc.setDigit(0,0,(byte)hundreds,false);
- lc.setDigit(0,1,(byte)tens,false);
- lc.setDigit(0,2,(byte)ones,false);
- }
- void printTamanho(int v) { // Função que imprime a variável "tamanho"
- int ones;
- int tens;
- int hundreds;
- boolean negative=false;
- if(v < 000 || v > 999)
- return;
- ones=v%10;
- v=v/10;
- tens=v%10;
- v=v/10; hundreds=v;
- lc.setDigit(0,3,(byte)hundreds,false);
- lc.setDigit(0,4,(byte)tens,false);
- lc.setDigit(0,5,(byte)ones,false);
- }
- void cortar()
- {
- boolean pausa = false;
- btn_i = btnRead();
- for (quantidade; quantidade > 000; quantidade--)
- {
- digitalWrite(rolete, HIGH);
- delay(tamanho*1000);
- digitalWrite(rolete, LOW);
- delay(500);
- digitalWrite(corte, HIGH);
- delay(500);
- digitalWrite(corte, LOW);
- delay(500);
- printQuantidade(quantidade);
- }
- /* Aqui quero incluir a função de pausa
- *
- if (btn_i == btnPause)
- {
- delay(100);
- pausa = !pausa;
- while (pausa == true)
- {
- }
- }
- */
- alarme();
- }
- void loop()
- {
- btn_i = btnRead();
- if (digitalRead(btnUp) == HIGH) quantidade += increm; // Incrementa 1 à variável "quantidade" cada vez que é pressionado
- if (quantidade > 999) quantidade = 000; // Zera a variável "quantidade" quando atingir 999
- while(digitalRead(btnUp)== HIGH) { } // Enquanto o botão estiver pressionado não faz nada
- if (digitalRead(btnDown) == HIGH) quantidade -= increm; // Decrementa 1 à variável "quantidade" cada vez que é pressionado
- if (quantidade <= 000) quantidade = 000; // Não deixa a variável ser menor que zero
- while(digitalRead(btnDown)== HIGH) { } // Enquanto o botão estiver pressionado não faz nada
- if (digitalRead(btnUp1) == HIGH) tamanho += increm; // Incrementa 1 à variável "tamanho" cada vez que é pressionado
- if (tamanho > 100) tamanho = 001; // Zera a variável "tamanho" quando atingir 100
- while(digitalRead(btnUp1)== HIGH) { } // Enquanto o botão estiver pressionado não faz nada
- if (digitalRead(btnDown1) == HIGH) tamanho -= increm; // Decrementa 1 à variável "tamanho" cada vez que é pressionado
- if (tamanho <= 001) tamanho = 001; // Não deixa a variável ser menor que 1
- while(digitalRead(btnDown1)== HIGH) { } // Enquanto o botão estiver pressionado não faz nada
- printQuantidade(quantidade); // Imprime o valor da quantidade no display 1
- printTamanho(tamanho); // Imprime o valor do tamanho no display 2
- if ((btn_i == btnStart)&&(digitalRead(sensor) == HIGH)) cortar(); // Chama a rotina de corte se o Start for pressionado e o sensor estiver ativo
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement