Advertisement
Guest User

Cortadora

a guest
Aug 23rd, 2015
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.24 KB | None | 0 0
  1. #include "LedControl.h"
  2.  
  3. LedControl lc=LedControl(12,11,10,1);
  4.  
  5.  
  6. #define btnUp               7             // Botão que aumenta a variável "quantidade" (quantidade de folhas)
  7. #define btnDown             6             // Botão que diminui a variável "quantidade" (quantidade de folhas)
  8. #define btnUp1              5             // Botão que aumenta a variável "tamanho" (tamanho da folha em cm)
  9. #define btnDown1            4             // Botão que diminui a variável "tamanho" (tamanho da folha em cm)
  10. #define corte               8             // Saída provisória que representa os relés do atuador solenoide ligado a guilhotina
  11. #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
  12. #define buzzer              13            // Saída que aciona o alarme, quando a rotina de corte termina ou a bobina acaba
  13. #define sensor              3             // Entrada que dedecta se há bobina, quando a bobina acaba o sensor desativa e pausa a rotina
  14.  
  15. int btn_v = 0;                            // Variável que armazena o valor lido dos botões
  16. int btn_i = 0;
  17.  
  18. int btnStart;                             // Botão que aciona a rotina de corte
  19. int btnPause;                             // Botão que pausa e continua a rotina de corte
  20. int btnStop;                              // Botão que pára a rotina de corte e zera os contadores
  21. int btnAlimentar;                         // Botão que gira o rolete horário para alimentar a bobina
  22. int btnRetirar;                           // Botão que gira o rolete anti-horário para retirar a bobina
  23.  
  24. int btnRead()                          
  25. {
  26.   btn_v = analogRead(0);                 // Leitura dos botões com divisor de tensão
  27.   if (btn_v < 50) return btnStart;
  28.   if (btn_v < 250) return btnPause;
  29.   if (btn_v < 420) return btnStop;
  30.   if (btn_v < 620) return btnAlimentar;
  31.   if (btn_v < 950) return btnRetirar;
  32.  
  33. }
  34.  
  35.  
  36.  
  37. int quantidade = 000, increm = 1, tamanho = 001;      
  38.  
  39. void setup() {
  40.   lc.shutdown(0,false);
  41.   lc.setIntensity(0,8);
  42.   lc.clearDisplay(0);
  43.  
  44. pinMode (btnUp, INPUT);
  45. pinMode (btnDown, INPUT);
  46. pinMode (btnUp1, INPUT);
  47. pinMode (btnDown1, INPUT);
  48. pinMode (corte, OUTPUT);
  49. pinMode (rolete, OUTPUT);
  50. pinMode (buzzer, OUTPUT);
  51. pinMode (sensor, INPUT);
  52. }
  53.  
  54. void alarme()                                // Função alarme
  55. {
  56.       digitalWrite(buzzer, HIGH);
  57.       delay(500);
  58.       digitalWrite(buzzer, LOW);
  59.       delay(500);
  60.       digitalWrite(buzzer, HIGH);
  61.       delay(500);
  62.       digitalWrite(buzzer, LOW);
  63.       delay(500);
  64.       digitalWrite(buzzer, HIGH);
  65.       delay(500);
  66.       digitalWrite(buzzer, LOW);
  67.       delay(500);
  68. }
  69.  
  70.  
  71. void printQuantidade(int v) {                  // Função que imprime a variável "quantidade"
  72.     int ones;  
  73.     int tens;  
  74.     int hundreds;
  75.  
  76.     boolean negative=false;
  77.  
  78.     if(v < 000 || v > 999)  
  79.         return;  
  80.    
  81.     ones=v%10;  
  82.     v=v/10;  
  83.     tens=v%10;  
  84.     v=v/10; hundreds=v;  
  85.     lc.setDigit(0,0,(byte)hundreds,false);
  86.     lc.setDigit(0,1,(byte)tens,false);
  87.     lc.setDigit(0,2,(byte)ones,false);
  88. }  
  89.  
  90. void printTamanho(int v) {                    // Função que imprime a variável "tamanho"    
  91.     int ones;  
  92.     int tens;  
  93.     int hundreds;
  94.  
  95.     boolean negative=false;
  96.  
  97.     if(v < 000 || v > 999)  
  98.         return;  
  99.    
  100.     ones=v%10;  
  101.     v=v/10;  
  102.     tens=v%10;  
  103.     v=v/10; hundreds=v;  
  104.     lc.setDigit(0,3,(byte)hundreds,false);
  105.     lc.setDigit(0,4,(byte)tens,false);
  106.     lc.setDigit(0,5,(byte)ones,false);
  107. }
  108.  
  109. void cortar()
  110. {
  111. boolean pausa = false;
  112.  
  113. btn_i = btnRead();
  114.      
  115.   for (quantidade; quantidade > 000; quantidade--)
  116.     {
  117.       digitalWrite(rolete, HIGH);
  118.       delay(tamanho*1000);
  119.       digitalWrite(rolete, LOW);
  120.       delay(500);
  121.       digitalWrite(corte, HIGH);
  122.       delay(500);
  123.       digitalWrite(corte, LOW);      
  124.       delay(500);    
  125.       printQuantidade(quantidade);
  126.     }
  127.  
  128. /* Aqui quero incluir a função de pausa    
  129.  *  
  130.     if (btn_i == btnPause)
  131.       {
  132.       delay(100);
  133.       pausa = !pausa;
  134.      
  135.       while (pausa == true)
  136.       {
  137.      
  138.       }
  139.      
  140.       }
  141.  
  142. */
  143.      
  144.       alarme();    
  145.       }
  146.  
  147. void loop()
  148. {
  149.  btn_i = btnRead();
  150.  
  151.   if (digitalRead(btnUp) == HIGH)  quantidade += increm;                 // Incrementa 1 à variável "quantidade" cada vez que é pressionado
  152.   if (quantidade > 999)  quantidade = 000;                               // Zera a variável "quantidade" quando atingir 999
  153.  
  154.   while(digitalRead(btnUp)== HIGH) {   }                                 // Enquanto o botão estiver pressionado não faz nada
  155.  
  156.   if (digitalRead(btnDown) == HIGH)  quantidade -= increm;               // Decrementa 1 à variável "quantidade" cada vez que é pressionado
  157.   if (quantidade <= 000)  quantidade = 000;                              // Não deixa a variável ser menor que zero
  158.  
  159.   while(digitalRead(btnDown)== HIGH) {   }                               // Enquanto o botão estiver pressionado não faz nada
  160.  
  161.   if (digitalRead(btnUp1) == HIGH)  tamanho += increm;                   // Incrementa 1 à variável "tamanho" cada vez que é pressionado
  162.   if (tamanho > 100)  tamanho = 001;                                     // Zera a variável "tamanho" quando atingir 100
  163.  
  164.   while(digitalRead(btnUp1)== HIGH) {   }                                // Enquanto o botão estiver pressionado não faz nada
  165.  
  166.   if (digitalRead(btnDown1) == HIGH) tamanho -= increm;                  // Decrementa 1 à variável "tamanho" cada vez que é pressionado
  167.   if (tamanho <= 001)  tamanho = 001;                                    // Não deixa a variável ser menor que 1
  168.  
  169.   while(digitalRead(btnDown1)== HIGH) {   }                              // Enquanto o botão estiver pressionado não faz nada
  170.  
  171.   printQuantidade(quantidade);                                           // Imprime o valor da quantidade no display 1
  172.   printTamanho(tamanho);                                                 // Imprime o valor do tamanho no display 2
  173.  
  174.   if ((btn_i == btnStart)&&(digitalRead(sensor) == HIGH))  cortar();     // Chama a rotina de corte se o Start for pressionado e o sensor estiver ativo
  175.  
  176.  return;
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement