Advertisement
RuiViana

MVF_Temp

Aug 15th, 2017
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.30 KB | None | 0 0
  1. // Programa : Controladora para Repetidora-Rpt_WW
  2. // Modulo I2C Display + Modulo DS1307 + Modulo WTV020
  3. // Autor : Mauro V.Ferreira
  4. // data de inicio do projeto 14/08/2017
  5. // acionando ptt + 2 acionamentos beacon e horas = ok
  6. // TRIMPOT + FILTROS + RESISTOR + TRT PTT = ok
  7. // Rotina para acertar tudo = ok
  8. // Rotina do squelch = ok
  9. // A0 = entrada de áudio do rádio (squelch)=ok não funcionou
  10. // A1 = entrada do sensor de temperatuva
  11. // 11 = sinal do squelch tirar do rádio
  12.  
  13.  
  14. #include "Wire.h"
  15. #include <LiquidCrystal_I2C.h>
  16. //#include <Wtv020sd16p.h>
  17. #include <EEPROM.h>
  18. //#include <DHT.h>
  19.  
  20.  
  21. //int resetPin = 4;  //Pino Reset
  22. //int clockPin = 5;  //Pino clock
  23. //int dataPin = 6;   //Pino data (DI)
  24. //int busyPin = 7;   //Pino busy
  25. int arquivo = 0;
  26. int q = 0;
  27. char nome;
  28. String nome_dia[3] = "";
  29. String letra;
  30. int beacon = 0;
  31. int txhora = 0;
  32. int txdia = 0 ;
  33. int zu;
  34. //variaveis do acerto da hora
  35. int i = 0;
  36. //int dow = 10; //Botão 10 decrementa.
  37. //int set = 9;// Botão 9 Enter.
  38. //int up = 8;//Botão 8 Incrementa.
  39. //char dateTime[20];
  40. //int RTCValues[7];
  41. //char acertahora[11];
  42. //const byte audioInPin=A0;
  43. int sql = 0;
  44. int squelch = 0;
  45. //int temperatura;
  46. //int temper;
  47. //int umidade;
  48. //int umid;
  49. byte zero = 0x00;
  50. char buf;
  51. int ledPtt = 3;
  52. int ledSQL = 2;
  53. int trSQL = 11;
  54. int estourou = 0;
  55. //long tempoInicial = millis();
  56. //unsigned long currentMillis;
  57. unsigned long  previousMillis;        // Variável de controle do tempo
  58. unsigned long Interval = 20000;     // Tempo em ms do intervalo a ser executado
  59. // 200000 = 3 minutos
  60. // Modulo RTC no endereco 0x68
  61. //#define DS1307_ADDRESS 0x68
  62. //#define OPEN_SQUELCH false
  63. //#define pino_DHT A1
  64. //#define DHTTYPE DHT11
  65.  
  66. //Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);
  67.  
  68. // Modulo I2C display no endereco 0x27
  69. LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  70.  
  71. //DHT dht(pino_DHT, DHTTYPE);
  72.  
  73. void setup()
  74. {
  75.   //pinMode(up, INPUT);// Defina up como entrada.
  76.   //digitalWrite(up, HIGH);//Força nivel alto ( Resistor de pull-up interno do arduino ).
  77.   //pinMode(dow, INPUT);
  78.   //digitalWrite(dow, HIGH);
  79.   //pinMode(set, INPUT);
  80.   //digitalWrite(set, HIGH);
  81.   //pinMode(ledPtt, OUTPUT);
  82.   //digitalWrite(ledPtt, LOW);
  83.   //pinMode(ledSQL, OUTPUT);
  84.   //digitalWrite(ledSQL, LOW);
  85.   //pinMode(trSQL, INPUT);
  86.   //digitalWrite(trSQL, LOW);//para squelch de 5 volts
  87.   //digitalWrite(trSQL, HIGH);//para squelch de 0 volts
  88.   //Wire.begin();
  89.   Serial.begin(9600);
  90.   //Inicializa o modulo WTV020
  91.   //wtv020sd16p.reset();
  92.   //wtv020sd16p.setVolume(2);
  93.   lcd.begin (16, 2);
  94.   //dht.begin();
  95.   //Informacoes iniciais
  96.   lcd.clear();
  97.   lcd.setCursor(0, 0);
  98.   lcd.print("Controle de RPT ");
  99.   lcd.setCursor(3, 1);
  100.   lcd.print("WW Telecom");
  101.   delay(3000);
  102.   lcd.clear();
  103.   lcd.setCursor(5, 0);
  104.   lcd.print("Mauro");
  105.   lcd.setCursor(5, 1);
  106.   lcd.print("PY2WW");
  107.   delay(3000);
  108.   lcd.clear();
  109.   lcd.setCursor(0, 0);
  110.   lcd.print("  Repetidora em ");
  111.   lcd.setCursor(0, 1);
  112.   lcd.print("    Stand by    ");
  113.  
  114.   menu_inicial();
  115.   //para acertar a data e hora
  116.   //acerta_tudo();
  117.   //acessando a memória para setar alguns parametros
  118.   //beacon = EEPROM.read(0); //beacon
  119.   //txhora = EEPROM.read(1); //hora
  120.   //txdia = EEPROM.read(2);  //dia
  121.  
  122. }
  123.  
  124. void loop()
  125. {
  126.   //Verificando o squelch
  127.   //sql = digitalRead(trSQL);
  128.  
  129.   //  Serial.print("estourou: ");Serial.println(estourou);
  130.   //  Serial.print("sql: ");Serial.println(sql);
  131.   if (estourou == 1 & sql == 0)
  132.   {
  133.     //reset o estouro
  134.     estourou = 0;
  135.     lcd.clear();
  136.     lcd.setCursor(0, 0);
  137.     lcd.print("  Repetidora em ");
  138.     lcd.setCursor(0, 1);
  139.     lcd.print("    stand by    ");
  140.  
  141.   }
  142.   if (sql == 1 & estourou == 0)
  143.   {
  144.     //    currentMillis = millis();    //Tempo atual em ms
  145.     //acende o led do squelch
  146.     //digitalWrite(ledSQL, HIGH);
  147.     // Mostra os dados no display
  148.     lcd.clear();
  149.     lcd.setCursor(0, 0);
  150.     lcd.print("  Repetidora em ");
  151.     lcd.setCursor(0, 1);
  152.     lcd.print("operacao");
  153.     lcd.setCursor(10, 1);
  154.     lcd.print(millis() - previousMillis);
  155.     delay(100);
  156.     //contando o tempo , limite de 3 minutos (180000)
  157.     //limite de 2 minutos (120000)
  158.     Serial.println(millis() - previousMillis);
  159.     if (millis() - previousMillis > Interval)
  160.     {
  161.       Serial.println("Estourou o tempo");
  162.       //    previousMillis = millis();    // Salva o tempo atual
  163.       estourou = 1;
  164.       //toca um aviso
  165.       lcd.clear();
  166.       lcd.setCursor(0, 0);
  167.       lcd.print("   Estourou o   ");
  168.       lcd.setCursor(0, 1);
  169.       lcd.print("     tempo      ");
  170.       delay(4000);
  171.       lcd.clear();
  172.       lcd.setCursor(0, 0);
  173.       lcd.print("  Repetidora em ");
  174.       lcd.setCursor(0, 1);
  175.       lcd.print("     alerta     ");
  176.       delay(4000);
  177.       //previousMillis = currentMillis;
  178.       //currentMillis=0;
  179.       menu_inicial();
  180.     }
  181.   } else {
  182.     digitalWrite(ledSQL, LOW);
  183.   }
  184.  
  185.   //Aguarda os dados da serial
  186.   while (Serial.available() > 0)
  187.   {
  188.     buf = Serial.read();
  189.     if (buf == '0')
  190.     {
  191.       //Acionando o PTT do rádio
  192.       //digitalWrite(ledPtt, HIGH);
  193.       //delay(200);
  194.       //lcd.setCursor(0,0);
  195.       //lcd.print(" TX ---> Beacon ");
  196.       lcd.setCursor(0, 0);
  197.       lcd.print("    Squelch     ");
  198.       lcd.setCursor(0, 1);
  199.       lcd.print("    aberto      ");
  200.       delay(3000);
  201.       lcd.clear();
  202.       lcd.setCursor(0, 0);
  203.       lcd.print("  Repetidora em ");
  204.       lcd.setCursor(0, 1);
  205.       lcd.print("    Stand by    ");
  206.       sql = 1; estourou = 0;
  207.       //previousMillis = currentMillis;
  208.       previousMillis = millis();    // Salva o tempo atual
  209.     }
  210.  
  211.     if (buf == '1')
  212.     {
  213.       //Acionando o PTT do rádio
  214.       //digitalWrite(ledPtt, HIGH);
  215.       //delay(200);
  216.       //lcd.setCursor(0,0);
  217.       //lcd.print(" TX ---> Beacon ");
  218.       lcd.setCursor(0, 0);
  219.       lcd.print("    Squelch     ");
  220.       lcd.setCursor(0, 1);
  221.       lcd.print("    fechado     ");
  222.       delay(3000);
  223.       lcd.clear();
  224.       lcd.setCursor(0, 0);
  225.       lcd.print("  Repetidora em ");
  226.       lcd.setCursor(0, 1);
  227.       lcd.print("    Stand by    ");
  228.       sql = 0; estourou = 0;
  229.     }
  230.   }
  231. }
  232.  
  233. //Mostra menu de opcoes
  234. void menu_inicial()
  235. {
  236.   Serial.println("\nDigite : ");
  237.   Serial.println("0 - Abriu o squelch");
  238.   Serial.println("1 - Fechou o squelch");
  239.   Serial.println();
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement