RuiViana

Control_Fusor

Dec 10th, 2016
163
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // -------------------(para controlar motor stepper)---------------------
  2. #include <Stepper.h> // biblioteca para o stepper motor
  3. int passos = 30;            // número de passos motor
  4. const int stepsPerRevolution = 500;
  5. Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); //declaração dos pinos para ligação do ULN2003
  6. //----------------------(declaração dos pinos)----------------------------
  7. int led1 = 2; // led1 no pino 2 (sistema em funcionamento led vermelho)
  8. int led2 = 3; // led2 no pino 3 (lampada em aquecimento amarelo)
  9. int led3 = 4; // led3 no pino 4 (lampada aquecida verde)
  10. int led4 = 5; // led4 no pino 5 (em processo de resfriamento azul)
  11. int rele1 = 6; // rele1 no pino 6 (liga lampada)
  12. int rele2 = 7; // rele2 no pino 7 (resfriamento cooler)
  13. int botao = 12;  // botão no pino 12
  14. //------------------(variáveis de tempo de aquecimento e resfriamento)----
  15. unsigned long tempoa = 0; // variável do aquecimento
  16. unsigned long tempor = 0; // variável do resfriamento
  17. int intervaloa = 10000;    // determina tempo aquecimento
  18. int intervalor = 10000;    // determina tempo resfriamento
  19. byte Flag = 0;
  20. byte Flag2 = 0;
  21. //-------------------(variáveis para botão ligar e desligar)---------------
  22. int var = 0;                                  // valor instantaneo enviado pelo botão
  23. int estado = 0;                               // guarda o valor 0 ou 1 (HIGH ou LOW)
  24. //-------------------------------(executa uma vez)-------------------------
  25. void setup()
  26. {
  27.   pinMode(led1, OUTPUT); // pino do led1 do tipo saída
  28.   pinMode(led2, OUTPUT); // pino do led2 do tipo saída
  29.   pinMode(led3, OUTPUT); // pino do led3 do tipo saída
  30.   pinMode(led4, OUTPUT); // pino do led4 do tipo saída
  31.   pinMode(rele1, OUTPUT); // pino do rele1 do tipo saída
  32.   pinMode(rele2, OUTPUT); // pino do rele2 do tipo saída
  33.   pinMode(botao, INPUT); // pino botao do tipo entrada
  34.   myStepper.setSpeed(60); // velocidade do motor 60rpm
  35. }
  36. //----------------------------------------------
  37. void loop()
  38. {
  39.   var = digitalRead(botao); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
  40.   if (var == HIGH)
  41.   {
  42.     estado = 1 - estado;
  43.     delay(300);    // de-bouncing
  44.     tempoa = millis();
  45.     tempor = millis();
  46.     Flag = 1;
  47.     Flag2 = 1;
  48.   }
  49.   if (estado == 1)
  50.   {
  51.     while (Flag2 == 1)
  52.     {
  53.       if ( (millis() - tempoa) < intervaloa )
  54.       {
  55.         digitalWrite(led1, HIGH); // sistema em funcionamento
  56.         digitalWrite(rele1, HIGH); // liga rele da lampada para aquecimento
  57.         digitalWrite(led2, HIGH); // indicação de aquecimento
  58.       }
  59.       myStepper.step(passos); // liga motor para não danificar o rolo
  60.       if ( (millis() - tempoa) >= intervaloa ) // Após tempo de aquecimento da lampada, acende led de aquecido
  61.       {
  62.         digitalWrite(led2, LOW); // apaga led de tempo de aquecimento
  63.         digitalWrite(led3, HIGH); // acende led indicativo de lampada aquecida e pronto para o uso
  64.         Flag2 = 0;
  65.       }
  66.     }
  67.     myStepper.step(passos); // liga motor para não danificar o rolo
  68.   }
  69.   if ((estado == 0) && (Flag == 1))  // ao primir novamente o botão
  70.   {
  71.     while (Flag2 == 1)
  72.     {
  73.       if ( (millis() - tempor) < intervalor )
  74.       {
  75.         digitalWrite(rele1, LOW); // desliga rele da lampada
  76.         digitalWrite(led3, LOW); // desliga indicação de aquecimento
  77.         digitalWrite(rele2, HIGH); // liga rele para resfriamento cooler
  78.         digitalWrite(led4, HIGH); // liga led indicativo do sistema de resfriamento
  79.       }
  80.       myStepper.step(passos); // mantem motor ligado
  81.       if ( (millis() - tempor) >= intervalor )  // Após tempo de resfriamento da lampada, desliga motor e,
  82.       {
  83.         digitalWrite(rele2, LOW); // desliga rele de resfriamento
  84.         digitalWrite(led4, LOW); // desliga led indicativo de resfriamento
  85.         digitalWrite(led1, LOW); // desliga led do sistema ligado
  86.         Flag2 = 0;
  87.       }
  88.     }
  89.   }
  90. }
RAW Paste Data