SHARE
TWEET

5ecos 127.0.4b

m33600 Jun 19th, 2019 (edited) 50 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define versaoSoftware "5ecos 6.19 127.0.4b  "
  2. // formato da versao;      mes.ano ver.major.minor
  3.  
  4. /* Adicao de  perfil 2222 . 12
  5.     127.0.4a : inclusao de WDT e bugfix remotamente em 15.6.2019
  6.  
  7.  
  8.  
  9.   #include <LiquidCrystal_I2C.h>
  10.  
  11.   // essa versão insere o modo economia e altera os nomes das fases
  12.  
  13.  
  14.  
  15.   // Settima Mecatronica Setup:
  16.   // Para Garagino Board = UNO, Programmer = Arduino as ISP
  17.   // Para  Pro-Mini BOARD = Arduino Pro or Pro-Mini
  18. */
  19. #include <movingAvg.h>                  // https://github.com/JChristensen/movingAvg
  20. #include <avr/wdt.h>
  21. //#include "math.h"                           // include the Math Library
  22. #include <EEPROM.h>
  23. #include <SimpleTimer.h>
  24. SimpleTimer timer;                          // instantiate
  25.  
  26. //#include <Q2HX711.h> // lib do hx711 celula de carga, existem muitas libs
  27. #include <OneWire.h>
  28. #include <DallasTemperature.h>
  29.  
  30. #define ONE_WIRE_BUS A1 // 15 no uno
  31. // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
  32. OneWire oneWire(ONE_WIRE_BUS);
  33. // Pass our oneWire reference to Dallas Temperature.
  34. DallasTemperature sensors(&oneWire);
  35. // arrays to hold device address
  36. DeviceAddress insideThermometer;
  37.  
  38. #include <Wire.h>  // Comes with Arduino IDE
  39.  
  40. #include <LiquidCrystal_I2C.h>
  41. LiquidCrystal_I2C lcd(0x27, 20, 4);   // ajusta LCD para endereço 0x27 com 20 caracteres x 4 linhas
  42. // em jun2016 foi ajustado acima(a lib do LCD foi atualizada)
  43.  
  44.  
  45. //-----------------------------------------------------------------------------------------PINs
  46.  
  47. const int massaTempPin = A1;                // no pcb esta trocado a2 com a1, as funcoes
  48. const int inoxHumPin = A2;
  49. const int condutanciaPin = A0;
  50. const int tampaEntradaPin = 10;
  51. const int tampaSaidaPin = 11;
  52. const int alarmePin = 8;
  53. const int overridePin = 9;
  54. const int mixerPin = 3;
  55. const int revPin = 4;
  56. const int exaPin = 2;
  57. const int paraTudoPin = 13;              // obs mesmo que o led da placa
  58. const int aqPin = 5;                     // ssr do aquecedor, usado apos Finalizaçao
  59. const int tritPin = 6;                   // triturador, vai ganhar nova funcao... f.u. renomear
  60. const int circPin = 7;                   // circulador ( só ativado agora, em 2019)
  61. const int termoFusePin = 12;              // nova funcao= setup de ciclos mix e reverso (maio 2019)
  62.  
  63. //---------------------------------------- V A R I A V E I S
  64.  
  65. float massaTemp = 0;
  66. int condutancia = 0;
  67.  
  68. float outputmassaTemp = 0;
  69. byte reverso = 0;
  70. int tempoDescanso = 0;
  71. int minutosDescanso = 0;
  72.  
  73. int volta = 0;
  74. uint8_t dobrar = 1;
  75. byte minutosProcessando = 0;
  76. int dezSegundos = 0;
  77. int umMinuto = 0;
  78.  
  79. boolean umaVez = 0;
  80. boolean umaVez2 = 0;
  81.  
  82. uint8_t perfil, minutosForward, minutosReverse, segundosAdicionais;
  83. boolean salvarPerfil = false;
  84.  
  85. //-------------------------1----------------2--------------3-------------4---------------5------------6---------7---------------8-------------------9-----------10-----------------11
  86. char* textoMaquina[] = {"Mixer 0", "Reverso", "StandBy", "Tampa Entrada", "Tampa Saida", "Descarga", "Mixer 1" ,  "Parada Total", "Modo Economia", "programacao" };
  87. int estadoMaquina = 0; // indice da aray de texto acima
  88. char*textoProcesso[] = {"FASE-1", "FASE-2", "FASE-3" , "******"};
  89. int estadoProcesso = 0;
  90.  
  91. movingAvg leituraC(10);                // define the moving average object
  92.  
  93. void setup() {    //---------------------------------------------------------------------------------------- S E T U P ------------------------------------------------
  94.   wdt_enable(WDTO_8S);
  95.  
  96.   leituraC.begin();
  97.  
  98.  
  99.   // timer.setInterval(5000, showlcd);                   // refresh do display lcd
  100.   timer.setInterval(10000, initLcd);                   // refresh do display lcd
  101.   timer.setInterval(1000, paratudo);                  // consulta paraTudo
  102.   timer.setInterval(1000, voltaClock);                   // volta++ via timer
  103.   // timer.setInterval(2200, leDs18b20);                 // consulta temperatura no ds18b20
  104.   //timer.setInterval(1000, mudaPerfil);                  // consulta jumper de perfil em termoFaultPin
  105.  
  106.   // timer.setInterval(6000, teste);            /////////////////////ATIVAR ISSO SO PARA TESTAR PLACA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  107.  
  108.  
  109.   sensors.begin();
  110.   sensors.setResolution(insideThermometer, 9); // 0 R1 R0 1 1 1 1 1; R1 R0 = 00 (9); 01 (01); 10; 10 (11); 11 (12)
  111.  
  112.  
  113.   analogReference(INTERNAL); // liga referencia interna de 1,1V para aumentar resoluçao de leitura
  114.  
  115.   // set up the LCD's number of columns and rows:
  116.   //2016   lcd.begin(20, 4);
  117.   lcd.init();    //2016                  // initialize the lcd
  118.   lcd.backlight(); //2016
  119.  
  120.   lcd.clear();
  121.   lcd.setCursor(0, 1);
  122.   lcd.print(versaoSoftware);
  123.   lcd.setCursor(0, 3);
  124.   lcd.print("  www.5ecos.com.br "); delay(2000); lcd.clear();
  125.  
  126.  
  127.   //------------------------------------------------------------------------------------------pinModes
  128.   pinMode(16, INPUT);  // MIXTEMP dht22 atualmente. Existe inversao de silks na placa
  129.   pinMode(massaTempPin, INPUT);  // tentando robustecer ds18b20 ( real pin 15)
  130.   pinMode(alarmePin, OUTPUT);
  131.   pinMode(tampaEntradaPin, INPUT);
  132.   pinMode(overridePin, INPUT);
  133.   pinMode(mixerPin, OUTPUT);
  134.   pinMode(revPin, OUTPUT);
  135.   pinMode(exaPin, OUTPUT);
  136.   pinMode(paraTudoPin, INPUT);
  137.   pinMode(aqPin, OUTPUT);
  138.   pinMode(tritPin, OUTPUT);
  139.   pinMode(circPin, OUTPUT);
  140.   pinMode(termoFusePin, INPUT);
  141.  
  142.  
  143.  
  144.  
  145.   Serial.begin(9600);
  146.  
  147.   minutosDescanso = EEPROM.read(0);
  148.   perfil = EEPROM.read(1);
  149.  
  150.  
  151.   // -------------------------------------------------------- ajuste de tempo de descanso:
  152.   while (digitalRead(overridePin) == HIGH) {
  153.     wdt_reset();
  154.     tempoDescanso = tempoDescanso + 1;
  155.     EEPROM.update(0, tempoDescanso);
  156.     delay(10);
  157.     beep1();
  158.     lcd.setCursor(16, 0);
  159.     lcd.print(tempoDescanso);
  160.     delay(500);
  161.   }
  162.   // -----------------------------------------------------escolha de perfil
  163.   while (digitalRead(termoFusePin)) {                            // soltando jumper programa o perfil
  164.     wdt_reset();
  165.     beep1();
  166.     estadoMaquina = 10;         // estado de programacao
  167.     defsPerfil();               // recupere variaveis de perfil
  168.     showlcd();                  // apresente as opcoes na tela
  169.     if (perfil > 4) {
  170.       perfil = 1;
  171.     }
  172.  
  173.     delay(10);
  174.     beep1();
  175.  
  176.     showlcd();                  // apresente as opcoes na tela
  177.  
  178.     for (int mk = 0; mk < 2000; mk++) {
  179.       wdt_reset();
  180.       if (digitalRead(overridePin) == HIGH) {
  181.         perfil++;
  182.         if (perfil > 4) {
  183.           perfil = 1;
  184.         }
  185.         showlcd(); delay(500);
  186.       }
  187.       delay(1);
  188.     }
  189.  
  190.     EEPROM.update(1, perfil); delay(10);
  191.   }
  192.  
  193.  
  194.   //ligaAquecedor(); f.u. quando reativar aquecimento, lembrar que assumira controle de temperatura, criar novo estado
  195.  
  196. } // --------------------------------------------------------------------------------------E O SETUP...................................
  197.  
  198. //---------------------------------------------------------------------------------------------------------------------  subrotinas---------------------------------------------------
  199. void voltaClock() {
  200.   volta++;
  201.   dezSegundos++;
  202.   if (dezSegundos > 9) {
  203.     dezSegundos = 0;
  204.   } showlcd();
  205.  
  206.   umMinuto++;
  207.   if(umMinuto >59){
  208.     umMinuto = 0;
  209.   }
  210. }
  211. void initLcd() {
  212.   lcd.init();
  213. }
  214. void softReset() {
  215.   asm volatile ("  jmp 0");  // Reboot da maquina ***
  216. }
  217. void beep1()  {
  218.   digitalWrite(alarmePin, HIGH);
  219.   delay (200);
  220.   digitalWrite(alarmePin, LOW);
  221. }
  222. void beep3() {
  223.   beep1();
  224.   delay (20);
  225.   beep1();
  226.   delay(20);
  227.   beep1();
  228. }
  229. void ligaMixer() {
  230.   digitalWrite(mixerPin, HIGH);
  231. }
  232. void desligaMixer() {
  233.   digitalWrite(mixerPin, LOW);
  234. }
  235. void ligaRev() {
  236.   digitalWrite(revPin, HIGH);
  237.   reverso = 1;
  238. }
  239. void desligaRev() {
  240.   digitalWrite(revPin, LOW);
  241.   reverso = 0;
  242. }
  243. void ligaAquecedor() {
  244.   digitalWrite(aqPin, HIGH);  // liga aquecedor
  245. }
  246. void desligaAquecedor() {
  247.   digitalWrite(aqPin, LOW);  //desliga aquecedor
  248. }
  249. void ligaExaustor() {
  250.   digitalWrite(exaPin, HIGH); // liga exaustor
  251. }
  252. void desligaExaustor() {
  253.   digitalWrite(exaPin, LOW); // desliga exaustor
  254. }
  255. void ligaTriturador() {
  256.   digitalWrite(tritPin, HIGH); // liga triturador
  257. }
  258. void desligaTriturador() {
  259.   digitalWrite(tritPin, LOW); // desliga triturador
  260. }
  261. void ligaCirculador() {
  262.   digitalWrite(circPin, HIGH); // liga circulador
  263. }
  264. void desligaCirculador() {
  265.   digitalWrite(circPin, LOW); // desliga circulador
  266. }
  267.  
  268. void showlcd() {             // -----------------------------------------------------------------------  L C D
  269.   wdt_reset();
  270.   // lcd.clear();  // tirei para reduzir tempo de loop...retornar se instavel
  271.   lcd.setCursor(0, 0); // imprime linha0
  272.   lcd.print(textoMaquina[estadoMaquina - 1]);
  273.   lcd.setCursor(16, 0);
  274.   lcd.print(minutosDescanso);
  275.  
  276.   lcd.setCursor(0, 1);
  277.   lcd.print("Perfil ");
  278.   lcd.setCursor(7, 1);
  279.   lcd.leftToRight();
  280.   lcd.print(String(perfil) + " " + String(minutosForward) + "" + String(minutosReverse) + "." + String(segundosAdicionais) + "  x" + String(dobrar));
  281.  
  282.   lcd.setCursor(0, 2);
  283.   lcd.print("M   T");
  284.   lcd.setCursor(9, 2);
  285.   lcd.leftToRight();
  286.   if (outputmassaTemp) {
  287.     lcd.print(outputmassaTemp); // nao imprime zero
  288.   }
  289.  
  290.   lcd.setCursor(16, 3);
  291.   lcd.leftToRight();
  292.   lcd.print(condutancia);
  293.  
  294.   lcd.setCursor(12, 3);
  295.   lcd.leftToRight();
  296.   lcd.print(minutosProcessando);
  297.  
  298.   lcd.setCursor(8, 3);
  299.   lcd.leftToRight();
  300.   lcd.print(volta);
  301.  
  302.   lcd.setCursor(0, 3);
  303.   lcd.print(textoProcesso[estadoProcesso - 1]);
  304. }
  305.  
  306. void teste() { // Só para testes de bancada!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  307.   wdt_reset();
  308.   //ligaMixer();delay(1000);desligaMixer();delay(500);
  309.   //ligaRev();delay(1000);desligaRev();delay(500);
  310.   //
  311.   //  ligaExaustor();delay(1000);desligaExaustor();
  312.   //  delay(500);
  313.   //  ligaCirculador();delay(1000);desligaCirculador();
  314.   //  delay(500);
  315.   //  ligaTriturador();delay(1000);desligaTriturador();
  316.   //  delay(500);
  317.   //  ligaAquecedor();delay(1000);desligaAquecedor();
  318.   //  delay(500);
  319.  
  320.  
  321.  
  322. }
  323.  
  324. void paratudo() {
  325.   while (digitalRead(paraTudoPin) == HIGH) {
  326.     wdt_reset();
  327.     estadoMaquina = 8;  // corta energia VCC2 por hardware
  328.     digitalWrite(exaPin, LOW);  // desliga exaustor
  329.     desligaMixer();
  330.     lcd.clear();
  331.     lcd.setCursor(0, 1);
  332.     lcd.print("Parada - Total");
  333.     beep3();
  334.     volta = 0; // força reinicio
  335.     delay(10000); softReset();      // wdt derruba antes disso, deixar assim
  336.   }
  337. }
  338.  
  339.  
  340.  
  341.  
  342.  
  343. //-----------------------------------------------------------------------------------------------------------------------------------------
  344. void loop() {            //----loop-------------------------------------------  l o o p ---------------------------------------------------
  345.   wdt_reset();
  346.  
  347.   timer.run(); // Initiates Timer
  348.  
  349.   // if (!dezSegundos){
  350.   sensors.begin();  // begin dentro de loop tenta reinicializar a cada volta (1s) para cobrir ruido
  351.   delay(100);
  352.   sensors.requestTemperatures();                   // Tell the DS18B20 to get make a measurement
  353.   delay(100);
  354.   massaTemp = (sensors.getTempCByIndex(0));        // Get ds18b20 temperature.
  355.   delay(100);
  356.   if (massaTemp > 0) {
  357.     outputmassaTemp = massaTemp; // so atualiza em leitura valida
  358.   }
  359.   //   }
  360.  
  361.   ligaTriturador(); delay(20); desligaTriturador();    // pisca led nao utilizado para calibrar 1 volta por segundo
  362.  
  363.  
  364.  
  365.   minutosDescanso = EEPROM.read(0);
  366.   perfil = EEPROM.read(1);
  367.  
  368.   perfil = 5 ; /// forcei remoto. tirAR DEPOIS
  369.  
  370.   defsPerfil();    // carrega valores do perfil em uso
  371.  
  372.   int t1 = 6; // tempos em segundos
  373.   int t2 = t1 + minutosForward * 60;
  374.   int t3 = t2 + minutosReverse * 60;
  375.   int t4 = t3 + minutosForward * 60;
  376.   int t5 = t4 + minutosReverse * 60;
  377.   int t6 = t5 + segundosAdicionais;
  378.   int t7 = t6 + minutosDescanso * 60;
  379.   int t3a = t3 + segundosAdicionais;
  380.   int t4a = t3a + minutosDescanso * 60;
  381.  
  382.   minutosProcessando = volta / 60;
  383.  
  384.  
  385.  
  386.  
  387.   //--------------------------------------------------------- tampa entrada
  388.  
  389.   while (digitalRead(tampaEntradaPin) == HIGH) {
  390.     wdt_reset();
  391.     estadoMaquina = 4;
  392.     desligaMixer();   // desliga mixer se abrir tampa
  393.     volta = 0; // quando fechar a tampa, recomeça todo ciclo
  394.     //    lcd.clear();
  395.     //   lcd.setCursor(0,0);
  396.     //   lcd.print("Tampa Entrada Aberta");
  397.     showlcd();
  398.  
  399.     delay (1000);
  400.     if (!umaVez) {
  401.       delay(2000);
  402.   //    Serial.println("Tampa de Entrada aberta");
  403.     }
  404.     umaVez = 1;
  405.  
  406.     beep1();
  407.     //   contadorFinalizando = 0;     // repor caso reative modo economia
  408.  
  409.     //  softReset();
  410.  
  411.   }
  412.   // -------------------------------------------------  publicacao da resolucao do sensor de temperatura
  413.   if (volta < 5) {
  414.     sensors.setResolution(9);
  415.     lcd.setCursor(18, 2);
  416.     lcd.print(sensors.getResolution());
  417.     //   delay(1000);
  418.     // lcd.clear();
  419.   }
  420.  
  421.   // 12345...6...789...minFWD*60....minutosForward*60+minutosReverse*60+1........minutosForward*60+minutosReverse*60+segundosAdicionais+1+ 10.....reset
  422.   //         M0         MR                   M1                                                               standby
  423.   //.......................................................................^ x2
  424.  
  425.  
  426.  
  427.  
  428.   //-------------------------------------------------------------mix forward = Mixer 0   x1
  429.  
  430.   if (    (volta == t1)      ||      ((volta == t3) && (dobrar == 2))     ) {
  431.     estadoMaquina = 1;  // 1 = Mixer ligado
  432.     desligaMixer();
  433.     delay(300);
  434.     desligaRev();
  435.     delay(1000);
  436.  //   Serial.println(textoMaquina[estadoMaquina - 1]);
  437.  
  438.     ligaMixer(); // so liga se nao estiver superaquecido
  439.   }
  440.  
  441.  
  442.  
  443.   // ----------------------------------------------------------------REVERSO                
  444.   if (       (volta == t2)     ||     ((volta == t4) && (dobrar == 2) )        )  {
  445.     //  lcd.setCursor(0, 0);
  446.     //  lcd.print("inversao de rotacao ");
  447.     estadoMaquina = 2; // 2 = reverso
  448.     desligaMixer();
  449.     showlcd();
  450.     delay(1000);
  451.  
  452. //    //  leDs18b20();delay(50);
  453. //    Serial.print("TM:" + String(outputmassaTemp));
  454. //    Serial.print(" C:" + String(condutancia) + "  " );
  455. //    Serial.print(String(textoProcesso[estadoProcesso - 1]));
  456. //    Serial.print(" P:" + String(perfil) + " x" + String(dobrar));
  457. //    Serial.println(" D:" + String(minutosDescanso));
  458.  
  459.     ligaRev();
  460.     delay(1000);
  461.  
  462.  //   Serial.println(textoMaquina[estadoMaquina - 1]);
  463.  
  464.     ligaMixer();
  465.   }
  466.  
  467.  
  468.   //  //-------------------------------------------------------------mix forward = Mixer 0               x2
  469.   //    if( (volta==6) || (volta == 6*dobrar) ) {
  470.   //        estadoMaquina = 1;  // 1 = Mixer ligado
  471.   //        desligaMixer();
  472.   //        delay(300);
  473.   //        desligaRev();
  474.   //        delay(1000);
  475.   //        Serial.println(textoMaquina[estadoMaquina-1]);
  476.   //
  477.   //        ligaMixer(); // so liga se nao estiver superaquecido
  478.   //    }
  479.   //
  480.   //
  481.   //
  482.   //  // ----------------------------------------------------------------REVERSO                         x2
  483.   //  if (    (volta == (minutosForward*60)) || (volta == (minutosForward*dobrar*60))   )  {
  484.   //  //  lcd.setCursor(0, 0);
  485.   //  //  lcd.print("inversao de rotacao ");
  486.   //    estadoMaquina = 2; // 2 = reverso
  487.   //    desligaMixer();
  488.   //    showlcd();
  489.   //    delay(1000);
  490.   //
  491.   //      //  leDs18b20();delay(50);
  492.   //          Serial.print("TM:" +String(outputmassaTemp));
  493.   //          Serial.print(" C:" + String(condutancia)+ "  " );
  494.   //          Serial.print(String(textoProcesso[estadoProcesso - 1]));
  495.   //          Serial.print(" P:" +String(perfil));
  496.   //          Serial.println(" D:" +String(minutosDescanso));
  497.   //
  498.   //    ligaRev();
  499.   //    delay(1000);
  500.   //
  501.   //    Serial.println(textoMaquina[estadoMaquina-1]);
  502.   //
  503.   //    ligaMixer();
  504.   //  }
  505.  
  506.  
  507.   // ------------------------------------------------------ +Ciclo Adicional 12 a 20s  = Mixer 1
  508.  
  509.  
  510.   if (     (volta == t3)   &&    (dobrar == 1)    ) {
  511.     estadoMaquina = 7; // 7 = ciclo adicional
  512.     desligaMixer();
  513.     showlcd();
  514.     delay(1000);
  515.   //  Serial.println(textoMaquina[estadoMaquina - 1]);
  516.     desligaRev();
  517.     delay(5000);
  518.     ligaMixer();
  519.   }
  520.  
  521.   if (     (volta == t5)   &&    (dobrar == 2)    ) {
  522.     estadoMaquina = 7; // 7 = ciclo adicional
  523.     desligaMixer();
  524.     showlcd();
  525.     delay(1000);
  526.   //  Serial.println(textoMaquina[estadoMaquina - 1]);
  527.     desligaRev();
  528.     delay(5000);
  529.     ligaMixer();
  530.   }
  531.  
  532.   //--------------------------------------------------------entrada em DESCANSO.. = standby------
  533.  
  534.   if (       (volta == t3a)   && (dobrar == 1)    ) {
  535.     desligaMixer();
  536.     estadoMaquina = 3;  // 3= standby
  537.     showlcd();
  538.   //  Serial.println(textoMaquina[estadoMaquina - 1]);
  539.   }
  540.  
  541.   if (       (volta == t6)   && (dobrar == 2)    ) {
  542.     desligaMixer();
  543.     estadoMaquina = 3;  // 3= standby
  544.     showlcd();
  545.   //  Serial.println(textoMaquina[estadoMaquina - 1]);
  546.   }
  547.   // -----------------------------------------------------------saida do descanso, reiniciando
  548.  
  549.  
  550.   // --------numero de voltas ( lembrando que 1 volta = 1 segundo)
  551.   // dobrar = 1 ( default) ou 2 ( no perfil 5)
  552.  
  553.   if (     (volta == t4a) && (dobrar == 1)      ) {    // ajustar essa soma aos segundos adicionais   ***
  554.   volta = 0; softReset();
  555.   }
  556.  
  557.   if (     (volta == t7) && (dobrar == 2)      ) {
  558.   volta = 0; softReset();
  559.   }// 4 min cada lado, + seg adicionais, + minutosDescanso, tudo   convertido em minutos
  560.  
  561.  
  562.  
  563.  
  564.   //-----------------------------------------------------------------tampa saida
  565.  
  566.   while (digitalRead(tampaSaidaPin) == HIGH) {
  567.   wdt_reset();
  568.     estadoMaquina = 5;
  569.     desligaMixer();
  570.     volta = 0;
  571.     showlcd();
  572.     //   lcd.clear();
  573.     //   lcd.setCursor(0,0);
  574.     //   lcd.print("Tampa Saida Aberta");
  575.     if (!umaVez2) {
  576.       delay(2000);  // envio do evento para datalogger
  577.    //   Serial.println("Tampa de Saida aberta");
  578.     }
  579.     umaVez2 = 1;
  580.     //      contadorFinalizando = 0; // repor caso reative modo economia
  581.     beep1();
  582.  
  583.     while (digitalRead(overridePin) == HIGH)  {       //---- pressionando botao OVERRIDE
  584.       wdt_reset();
  585.       while (digitalRead(tampaEntradaPin) == HIGH) {  //nao deixa mixer girar nem no override caso abra tampa de entrada
  586.         wdt_reset();
  587.         desligaMixer();
  588.         beep1();
  589.         delay (200);
  590.         beep1();
  591.         delay (500);
  592.       }
  593.  
  594.  
  595.       lcd.setCursor(0, 0);
  596.       lcd.print(">>>>Botao Descarga");
  597.       beep3() ;
  598.       delay (200);
  599.       ligaRev();
  600.       delay(500);
  601.       ligaMixer();  // força mixer on
  602.     }
  603.  
  604.     delay (1000);
  605.  
  606.   }
  607.   // ----------------------------------------------------- P A R A     T U D O -------------------------------------------------------
  608.   // converti parada total em sub rotina em timer
  609.  
  610.  
  611.   // --------------------------------------------------------------------- - inox temp ----- mixer temp ---- condutancia ------
  612.   if (!dezSegundos) {
  613.   int condutanciaNoise = analogRead(condutanciaPin);
  614.     delay(5);
  615.  
  616.     int avg = leituraC.reading(condutanciaNoise);    // calculate the moving average
  617.     //   Serial.println(avg);   // so para teste
  618.     condutancia = avg;
  619.   }
  620.  
  621.   if (condutancia > 0) estadoProcesso = 3; // finalizando
  622.                                         if (condutancia > 84) estadoProcesso = 2; // = compostando
  623.                                           if (condutancia > 938) estadoProcesso = 1; // = FASE-1
  624.  
  625.  
  626.  
  627.                                             // ------------------------------------------------------------------DATALOGGER
  628.       if (!umMinuto) {
  629.         Serial.begin(9600); // reinicia a serial.... ajuda no ruido?
  630.  
  631.        
  632.           Serial.print("TM:" + String(outputmassaTemp));
  633.           Serial.print(" C:" + String(condutancia) + "  " );
  634.           Serial.print(String(textoProcesso[estadoProcesso - 1]));
  635.           Serial.print(" P:" + String(perfil) + " x" + String(dobrar));
  636.           Serial.print(" D:" + String(minutosDescanso));
  637.           Serial.println(" E:" + String(textoMaquina[estadoMaquina - 1])   );
  638.  
  639. //          Serial.print(" " + String(t1));
  640. //          Serial.print(" " + String(t2));
  641. //          Serial.print(" " + String(t3));
  642. //          Serial.print(" " + String(t3a));
  643. //          Serial.print(" " + String(t4));
  644. //          Serial.print(" " + String(t4a));
  645. //          Serial.print(" " + String(t5));
  646. //          Serial.print(" " + String(t6));
  647. //          Serial.println(" " + String(t7));
  648.  
  649.  
  650.  
  651.  
  652.         }
  653.  
  654.  
  655.   // showlcd();   // passou para dentro de voltaClock, via timer
  656.  
  657. }  // -------------------------------------------E O Loop .................................................................................
  658. //_________________________________________________________________________________________________________________________________________
  659.  
  660.  
  661.  
  662. void clearlcd() {
  663.   lcd.clear();
  664. }
  665.  
  666.  
  667. void defsPerfil() {
  668.   switch (perfil) {
  669.     case 1:
  670.       minutosForward = 1; minutosReverse = 1; segundosAdicionais = 23; dobrar = 1;   break;
  671.  
  672.     case 2:
  673.       minutosForward = 2; minutosReverse = 2; segundosAdicionais = 23; dobrar = 1;   break;
  674.  
  675.     case 3:
  676.       minutosForward = 3; minutosReverse = 3; segundosAdicionais = 23; dobrar = 1;   break;
  677.  
  678.     case 4:
  679.       minutosForward = 4; minutosReverse = 4; segundosAdicionais = 23; dobrar = 1;   break;
  680.  
  681.     case 5:
  682.       minutosForward = 2; minutosReverse = 2; segundosAdicionais = 23; dobrar = 2;   break;   // x2
  683.  
  684.     case 6:
  685.       minutosForward = 4; minutosReverse = 4; segundosAdicionais = 23; dobrar = 2;   break;   //x2
  686.  
  687.     default:
  688.       minutosForward = 2; minutosReverse = 2; segundosAdicionais = 23; dobrar = 1;    break;
  689.  
  690.   }
  691. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top