Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Programa : Controladora para Repetidora-Rpt_WW
- // Modulo I2C Display + Modulo DS1307 + Modulo WTV020
- // Autor : Mauro V.Ferreira
- // data de inicio do projeto 14/08/2017
- // acionando ptt + 2 acionamentos beacon e horas = ok
- // TRIMPOT + FILTROS + RESISTOR + TRT PTT = ok
- // Rotina para acertar tudo = ok
- // Rotina do squelch = ok
- // A0 = entrada de áudio do rádio (squelch)=ok não funcionou
- // A1 = entrada do sensor de temperatuva
- // 11 = sinal do squelch tirar do rádio
- #include "Wire.h"
- #include <LiquidCrystal_I2C.h>
- //#include <Wtv020sd16p.h>
- #include <EEPROM.h>
- //#include <DHT.h>
- //int resetPin = 4; //Pino Reset
- //int clockPin = 5; //Pino clock
- //int dataPin = 6; //Pino data (DI)
- //int busyPin = 7; //Pino busy
- int arquivo = 0;
- int q = 0;
- char nome;
- String nome_dia[3] = "";
- String letra;
- int beacon = 0;
- int txhora = 0;
- int txdia = 0 ;
- int zu;
- //variaveis do acerto da hora
- int i = 0;
- //int dow = 10; //Botão 10 decrementa.
- //int set = 9;// Botão 9 Enter.
- //int up = 8;//Botão 8 Incrementa.
- //char dateTime[20];
- //int RTCValues[7];
- //char acertahora[11];
- //const byte audioInPin=A0;
- int sql = 0;
- int squelch = 0;
- //int temperatura;
- //int temper;
- //int umidade;
- //int umid;
- byte zero = 0x00;
- char buf;
- int ledPtt = 3;
- int ledSQL = 2;
- int trSQL = 11;
- int estourou = 0;
- //long tempoInicial = millis();
- //unsigned long currentMillis;
- unsigned long previousMillis; // Variável de controle do tempo
- unsigned long Interval = 20000; // Tempo em ms do intervalo a ser executado
- // 200000 = 3 minutos
- // Modulo RTC no endereco 0x68
- //#define DS1307_ADDRESS 0x68
- //#define OPEN_SQUELCH false
- //#define pino_DHT A1
- //#define DHTTYPE DHT11
- //Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);
- // Modulo I2C display no endereco 0x27
- LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
- //DHT dht(pino_DHT, DHTTYPE);
- void setup()
- {
- //pinMode(up, INPUT);// Defina up como entrada.
- //digitalWrite(up, HIGH);//Força nivel alto ( Resistor de pull-up interno do arduino ).
- //pinMode(dow, INPUT);
- //digitalWrite(dow, HIGH);
- //pinMode(set, INPUT);
- //digitalWrite(set, HIGH);
- //pinMode(ledPtt, OUTPUT);
- //digitalWrite(ledPtt, LOW);
- //pinMode(ledSQL, OUTPUT);
- //digitalWrite(ledSQL, LOW);
- //pinMode(trSQL, INPUT);
- //digitalWrite(trSQL, LOW);//para squelch de 5 volts
- //digitalWrite(trSQL, HIGH);//para squelch de 0 volts
- //Wire.begin();
- Serial.begin(9600);
- //Inicializa o modulo WTV020
- //wtv020sd16p.reset();
- //wtv020sd16p.setVolume(2);
- lcd.begin (16, 2);
- //dht.begin();
- //Informacoes iniciais
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("Controle de RPT ");
- lcd.setCursor(3, 1);
- lcd.print("WW Telecom");
- delay(3000);
- lcd.clear();
- lcd.setCursor(5, 0);
- lcd.print("Mauro");
- lcd.setCursor(5, 1);
- lcd.print("PY2WW");
- delay(3000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(" Repetidora em ");
- lcd.setCursor(0, 1);
- lcd.print(" Stand by ");
- menu_inicial();
- //para acertar a data e hora
- //acerta_tudo();
- //acessando a memória para setar alguns parametros
- //beacon = EEPROM.read(0); //beacon
- //txhora = EEPROM.read(1); //hora
- //txdia = EEPROM.read(2); //dia
- }
- void loop()
- {
- //Verificando o squelch
- //sql = digitalRead(trSQL);
- // Serial.print("estourou: ");Serial.println(estourou);
- // Serial.print("sql: ");Serial.println(sql);
- if (estourou == 1 & sql == 0)
- {
- //reset o estouro
- estourou = 0;
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(" Repetidora em ");
- lcd.setCursor(0, 1);
- lcd.print(" stand by ");
- }
- if (sql == 1 & estourou == 0)
- {
- // currentMillis = millis(); //Tempo atual em ms
- //acende o led do squelch
- //digitalWrite(ledSQL, HIGH);
- // Mostra os dados no display
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(" Repetidora em ");
- lcd.setCursor(0, 1);
- lcd.print("operacao");
- lcd.setCursor(10, 1);
- lcd.print(millis() - previousMillis);
- delay(100);
- //contando o tempo , limite de 3 minutos (180000)
- //limite de 2 minutos (120000)
- Serial.println(millis() - previousMillis);
- if (millis() - previousMillis > Interval)
- {
- Serial.println("Estourou o tempo");
- // previousMillis = millis(); // Salva o tempo atual
- estourou = 1;
- //toca um aviso
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(" Estourou o ");
- lcd.setCursor(0, 1);
- lcd.print(" tempo ");
- delay(4000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(" Repetidora em ");
- lcd.setCursor(0, 1);
- lcd.print(" alerta ");
- delay(4000);
- //previousMillis = currentMillis;
- //currentMillis=0;
- menu_inicial();
- }
- } else {
- digitalWrite(ledSQL, LOW);
- }
- //Aguarda os dados da serial
- while (Serial.available() > 0)
- {
- buf = Serial.read();
- if (buf == '0')
- {
- //Acionando o PTT do rádio
- //digitalWrite(ledPtt, HIGH);
- //delay(200);
- //lcd.setCursor(0,0);
- //lcd.print(" TX ---> Beacon ");
- lcd.setCursor(0, 0);
- lcd.print(" Squelch ");
- lcd.setCursor(0, 1);
- lcd.print(" aberto ");
- delay(3000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(" Repetidora em ");
- lcd.setCursor(0, 1);
- lcd.print(" Stand by ");
- sql = 1; estourou = 0;
- //previousMillis = currentMillis;
- previousMillis = millis(); // Salva o tempo atual
- }
- if (buf == '1')
- {
- //Acionando o PTT do rádio
- //digitalWrite(ledPtt, HIGH);
- //delay(200);
- //lcd.setCursor(0,0);
- //lcd.print(" TX ---> Beacon ");
- lcd.setCursor(0, 0);
- lcd.print(" Squelch ");
- lcd.setCursor(0, 1);
- lcd.print(" fechado ");
- delay(3000);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(" Repetidora em ");
- lcd.setCursor(0, 1);
- lcd.print(" Stand by ");
- sql = 0; estourou = 0;
- }
- }
- }
- //Mostra menu de opcoes
- void menu_inicial()
- {
- Serial.println("\nDigite : ");
- Serial.println("0 - Abriu o squelch");
- Serial.println("1 - Fechou o squelch");
- Serial.println();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement