Translate

terça-feira, 24 de novembro de 2015

Arduino - Manipulador eletrônico automático, com memória (Arduino's CW keyer)

Atendendo a pedidos, Manipulador Eletrônico de CW (telegrafia), demonstrado no vídeo de meu canal:


Bibliotecas:
timerOne
LiquidCrystal


Inseri abaixo, o código fonte compĺeto.

#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <TimerOne.h>

//
//variavais de controle
//
int ditTime = 100;              //tempo do ponto
int dashTime = ditTime * 3;     //tempo do traco (ponto * 3) 
int spaceLetter = dashTime;     //espaco entre letras
int space = ditTime;            //espaco entre pontos e tracos qeu compoem mesma letra
int spaceWord = ditTime * 7;    //espaco entre palavras
//
int intervaloBeacon = 2000; //tempo default de espera de interacao do beacon
//
boolean isAutomatico = false;
boolean interacoes = false;
// portas e configuracoes de hardware
//
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //pinos do display LCD
//
int teclaTraco = 8;
int teclaPonto = 9; 
//
int chave1 = A1;
int chave2 = A2;
//
//
int saida = 13; //saida para circuito Rele
int saida2 = 7;
//
//variaveis de controle EEPROM
int tamanhoMemoria = 512;
char t;
int address = 0;
byte value;
//
//variaveis de tela do editor
//
//
int i = 0; //cariavel do cursor do seletor de texto de memoria
int c = 0;  //varicavel cursor de LCD para display texto
//
char v;     //char para conversao do inteiro em char e exibicao no LCD
String out = String(""); //saida de texto para gravaçao na memoria
//
//vetor de inteiros representando letras e caracteres, 
//para exibicao na tela LCD no modo de edicao
int vetorCaracteres[] = {  
  65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,48, 49, 50, 51, 52, 53, 54, 55, 56,57,32};
//
//
//variaveis de tela de boas vindas
//
String splash1 = String("Chave Automatica");
String splash2 = String("Bem Vindo! v:1.0");
//
int tempoSplashScreen = 3000;
//
//
//Variaveis de comparacao e controle de dados
//String que sera concatenada
String str = String("");
boolean done = false;
int index = 0; 
boolean isMenuAtivo = false;
//
//
String txt = String(""); 
String morse = String(""); 
//
const String A = String(".-"); 
const String B = String("-..."); 
const String C = String("-.-."); 
const String D = String("-.."); 
const String E = String("."); 
const String F = String("..-."); 
const String G = String("--."); 
const String H = String("...."); 
const String I = String(".."); 
const String J = String(".---"); 
const String K = String("-.-"); 
const String L = String(".-.."); 
const String M = String("--"); 
const String N = String("-."); 
const String O = String("---"); 
const String P = String(".--."); 
const String Q = String("--.-"); 
const String R = String(".-."); 
const String S = String("..."); 
const String T = String("-"); 
const String U = String("..-"); 
const String V = String("...-"); 
const String W = String(".--"); 
const String X = String("-..-"); 
const String Y = String("-.--"); 
const String Z = String("--.."); 
//
const String zero = String("-----"); 
const String um = String(".----"); 
const String dois = String("..---"); 
const String tres = String("...--"); 
const String quatro = String("....-"); 
const String cinco = String("....."); 
const String seis = String("-...."); 
const String sete = String("--..."); 
const String oito = String("---.."); 
const String nove = String("----."); 
//
//
//
const String _A = String("A"); 
const String _B = String("B"); 
const String _C = String("C"); 
const String _D = String("D"); 
const String _E = String("E"); 
const String _F = String("F"); 
const String _G = String("G"); 
const String _H = String("H"); 
const String _I = String("I"); 
const String _J = String("J"); 
const String _K = String("K"); 
const String _L = String("L"); 
const String _M = String("M"); 
const String _N = String("N"); 
const String _O = String("O"); 
const String _P = String("P"); 
const String _Q = String("Q"); 
const String _R = String("R"); 
const String _S = String("S"); 
const String _T = String("T"); 
const String _U = String("U"); 
const String _V = String("V"); 
const String _W = String("W"); 
const String _X = String("X"); 
const String _Y = String("Y"); 
const String _Z = String("Z"); 
//
const String _0 = String("0"); 
const String _1 = String("1"); 
const String _2 = String("2"); 
const String _3 = String("3"); 
const String _4 = String("4"); 
const String _5 = String("5"); 
const String _6 = String("6"); 
const String _7 = String("7"); 
const String _8 = String("8"); 
const String _9 = String("9"); 
//



//metodo executado pela interrupcao, busca leitura do potenciometro com o objetivo de ajustar a velocidade
void potenciometro(){

  int sensorValue = analogRead(0);        

  ditTime = sensorValue *0.2; 
  dashTime = ditTime * 3;
  dashTime = ditTime * 3;     //tempo do traco (ponto * 3) 
  spaceLetter = dashTime;     //espaco entre letras
  space = ditTime;            //espaco entre pontos e tracos qeu compoem mesma letra
  spaceWord = ditTime * 7;    //espaco entre palavras
  //

  //caso qualquer paddle seja pressionado, retorna ao modo manual e limpa a tela
  if((isAutomatico && (digitalRead(teclaTraco) == HIGH)) || (isAutomatico && (digitalRead(teclaPonto) == HIGH))){
    isAutomatico = false; 
    lcd.clear();
  }

  if((digitalRead(chave2)==HIGH)&&(digitalRead(chave1)==HIGH)){

    delay(1000);
    if((digitalRead(chave2)==HIGH)&&(digitalRead(chave1)==HIGH)){  
      isAutomatico = false;
      loop();

    }
  }


}

void setup(){

  Timer1.initialize(1600000);
  Timer1.attachInterrupt(potenciometro); 
  //
  lcd.begin(16, 2);
  mostraSplashScreen(); 
  //
  //Serial.begin(9600);
  //
  pinMode(chave1, INPUT); 
  pinMode(chave2, INPUT); 
  //
  pinMode(teclaTraco, INPUT); 
  pinMode(teclaPonto, INPUT); 
  //
  pinMode(saida, OUTPUT);
  //
  ///leitura();

}

void loop(){

  //leitura();

  //
  //
  if(digitalRead(chave1)==HIGH){
    delay(300);
    exibeMenu();

  }
  else
    //ROTINA AUTO/MANUAL
    if(isAutomatico){
      beacon();
    }
  else{   


    checa();

  }


}

void ajustaTempoBeacon(){
  lcd.clear();

  lcd.setCursor(0,1);
  lcd.print("Tmp.Esper.Beac.");  
  while(true){

    lcd.setCursor(0,0);
    lcd.print(intervaloBeacon/1000);
    lcd.print(" Segundos."); 

    if(digitalRead(teclaTraco)==HIGH){

      delay(100);
      lcd.setCursor(0,0);
      lcd.print(intervaloBeacon/1000);
      lcd.print(" Segundos."); 

      delay(500);
      if(intervaloBeacon==10000){
        intervaloBeacon = intervaloBeacon;

      }
      else { 
        intervaloBeacon = intervaloBeacon + 1000;

      }
    }
    else if(digitalRead(teclaPonto)==HIGH){
      delay(100);

      lcd.setCursor(0,0);
      lcd.print(intervaloBeacon/1000);
      lcd.print(" Segundos."); 

      delay(500);
      if(intervaloBeacon==1000){
        intervaloBeacon = intervaloBeacon;
      }
      else{
        intervaloBeacon = intervaloBeacon - 1000;
      }
    }





    if(digitalRead(chave1)==HIGH){
      delay(100);
      if(digitalRead(chave1)==LOW){
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Beacon = " + (intervaloBeacon/1000));
        delay(1000); 
        isAutomatico=false; 
        loop();
        break; //sai do metodo
      }
    }
  }
}


void exibeMenu(){

  int indiceMenu = 0; 
  int totalMenu = 4; 
  isMenuAtivo= true;
  lcd.clear();

  menu(indiceMenu);

  while(isMenuAtivo){
    if(digitalRead(teclaTraco)==HIGH){
      delay(700);
      indiceMenu++;
      if(indiceMenu>totalMenu){
        indiceMenu = totalMenu;
      }
      menu(indiceMenu);
    }
    else if(digitalRead(teclaPonto)==HIGH){
      delay(700);
      indiceMenu--; 
      if(indiceMenu<0){
        indiceMenu = 0;
      }
      menu(indiceMenu);
    }    
    else if(digitalRead(chave2)==HIGH){
      delay(10);
      if(digitalRead(chave2)==LOW){ 
        break; //sai do menu
      }
    }
    else if(digitalRead(chave1)==HIGH){
      delay(100);
      switch(indiceMenu){

      case 1:
        if(isMenuAtivo){
          isAutomatico = true;
          beacon();
          isMenuAtivo= false; 
        }
        break; 
      case 2:
        if(isMenuAtivo){
          ajustaTempoBeacon();
          isMenuAtivo= true; 
        }
        break;
      case 3:
        if(isMenuAtivo){
          isMenuAtivo= false;
          //MENU ESCREVE TEXTO MEMORIA
          textoMemorizar();
          isMenuAtivo= true; 
        }
        break;

      case 4:
        if(isMenuAtivo){
          isMenuAtivo= false; 
        }
        break;
      default:
        isMenuAtivo = true;
        break;

      }

    }
    //lcd.setCursor(0,0); 
    //lcd.print(indiceMenu);
  }

  lcd.clear(); 

  return; 
}

void menu(int m){


  lcd.clear();
  lcd.setCursor(0,0); 
  lcd.print("  *** MENU ***  ");

  switch(m){

  case 0:

    lcd.setCursor(0,1); 
    lcd.print("");
    break;

  case 1:

    lcd.setCursor(0,1); 
    lcd.print("-Iniciar Beacon");
    break;
  case 2:

    lcd.setCursor(0,1); 
    lcd.print("-Tempo Beacon");
    break;
  case 3:

    lcd.setCursor(0,1); 
    lcd.print("-Gravar Memoria");
    break;
    //case 3:

    //    lcd.setCursor(0,1); 
    //    lcd.print("-Apagar Memoria");
    //    break;
  case 4:

    lcd.setCursor(0,1); 
    lcd.print("-Voltar");
    break;

  }




}


void beacon(){

  leitura();
  lcd.clear();
  lcd.setCursor(3,1); 
  lcd.print("... TX ..."); 
  lcd.setCursor(0,0); 
  comparaTexto();
  delay(10);
  espaco();
  delay(10);

  //
  index = 0;
  //
  delay(10);
  //


  lcd.clear();
  lcd.setCursor(1,1); 
  lcd.print("Aguardando...");  //



  delay(1000);
  lcd.clear();
  lcd.setCursor(0,0); 

}

void emiteMorse(String m){

  if(isAutomatico){
    for(int j=0;j<m.length();j++){
      if(m.charAt(j)=='.'){
        ponto();
      }
      else if (m.charAt(j)=='-'){
        traco();
      }
      else{
        espaco();
      }

    }
  }
  else{
    return;
  }
}

void comparaTexto(){
  //lcd.print(txt);

  if(isAutomatico){
    for(int i =0; i<txt.length(); i++){

      limpaLcd();

      index++; 

      if(txt.charAt(i)==_A.charAt(0)){
        lcd.print(_A);
        emiteMorse(A); 
      }
      else     if(txt.charAt(i)==_B.charAt(0)){
        lcd.print(_B);
        emiteMorse(B); 
      }
      else     if(txt.charAt(i)==_C.charAt(0)){
        lcd.print(_C);
        emiteMorse(C); 
      }
      else     if(txt.charAt(i)==_D.charAt(0)){
        lcd.print(_D);
        emiteMorse(D); 
      }
      else     if(txt.charAt(i)==_E.charAt(0)){
        lcd.print(_E);
        emiteMorse(E); 
      }
      else     if(txt.charAt(i)==_F.charAt(0)){
        lcd.print(_F);
        emiteMorse(F); 
      }
      else     if(txt.charAt(i)==_G.charAt(0)){
        lcd.print(_G);
        emiteMorse(G); 
      }
      else     if(txt.charAt(i)==_H.charAt(0)){
        lcd.print(_H);
        emiteMorse(H); 
      }
      else     if(txt.charAt(i)==_I.charAt(0)){
        lcd.print(_I);
        emiteMorse(I); 
      }    
      else     if(txt.charAt(i)==_J.charAt(0)){
        lcd.print(_J);
        emiteMorse(J); 
      }
      else     if(txt.charAt(i)==_K.charAt(0)){
        lcd.print(_K);
        emiteMorse(K); 
      }
      else     if(txt.charAt(i)==_L.charAt(0)){
        lcd.print(_L);
        emiteMorse(L); 
      }
      else     if(txt.charAt(i)==_M.charAt(0)){
        lcd.print(_M);
        emiteMorse(M); 
      }
      else     if(txt.charAt(i)==_N.charAt(0)){
        lcd.print(_N);
        emiteMorse(N); 
      }
      else     if(txt.charAt(i)==_O.charAt(0)){
        lcd.print(_O);
        emiteMorse(O); 
      }
      else     if(txt.charAt(i)==_P.charAt(0)){
        lcd.print(_P);
        emiteMorse(P); 
      }
      else     if(txt.charAt(i)==_Q.charAt(0)){
        lcd.print(_Q);
        emiteMorse(Q); 
      }
      else     if(txt.charAt(i)==_R.charAt(0)){
        lcd.print(_R);
        emiteMorse(R); 
      }
      else     if(txt.charAt(i)==_S.charAt(0)){      
        lcd.print(_S);
        emiteMorse(S); 
      }
      else     if(txt.charAt(i)==_T.charAt(0)){
        lcd.print(_T);
        emiteMorse(T); 
      }
      else     if(txt.charAt(i)==_U.charAt(0)){
        lcd.print(_U);
        emiteMorse(U); 
      }
      else     if(txt.charAt(i)==_V.charAt(0)){
        lcd.print(_V);
        emiteMorse(V); 
      }
      else     if(txt.charAt(i)==_W.charAt(0)){
        lcd.print(_W);
        emiteMorse(W); 
      }
      else     if(txt.charAt(i)==_X.charAt(0)){
        lcd.print(_X);
        emiteMorse(X); 
      }
      else     if(txt.charAt(i)==_Y.charAt(0)){
        lcd.print(_Y);
        emiteMorse(Y); 
      }
      else     if(txt.charAt(i)==_Z.charAt(0)){
        lcd.print(_Z);
        emiteMorse(X); 
      }
      //
      //
      else     if(txt.charAt(i)==_0.charAt(0)){
        lcd.print(zero);
        emiteMorse(zero);
      }
      else     if(txt.charAt(i)==_1.charAt(0)){
        lcd.print(_1);
        emiteMorse(um);
      }
      else     if(txt.charAt(i)==_2.charAt(0)){
        lcd.print(_2);
        emiteMorse(dois);
      }
      else     if(txt.charAt(i)==_3.charAt(0)){
        lcd.print(_3);
        emiteMorse(tres);
      }
      else     if(txt.charAt(i)==_4.charAt(0)){
        lcd.print(_4);
        emiteMorse(quatro); 
      }
      else     if(txt.charAt(i)==_5.charAt(0)){
        lcd.print(_5);
        emiteMorse(cinco); 
      }
      else     if(txt.charAt(i)==_6.charAt(0)){
        lcd.print(_6);
        emiteMorse(seis); 
      }
      else     if(txt.charAt(i)==_7.charAt(0)){
        lcd.print(_7);
        emiteMorse(sete); 
      }
      else     if(txt.charAt(i)==_8.charAt(0)){
        lcd.print(_8);
        emiteMorse(oito); 
      }
      else     if(txt.charAt(i)==_9.charAt(0)){
        lcd.print(_9);
        emiteMorse(nove); 
      }
      else{
        lcd.print(" ");
        //      emiteMorse(String(" "));
        // delay(spaceWord);
        espaco();
      }

      // emiteMorse(String(" ")); delay(250); 
      delay(spaceLetter);

    }
  }
  else{
    return;
  }

}

void checa(){

  if(isAutomatico){
    return; 
  }

  if((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== LOW)){  

    traco(); 

  }
  else if((digitalRead(teclaPonto)== HIGH)&&(digitalRead(teclaTraco)== LOW)){  

    ponto();   

  }
  else  if((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== HIGH)){

    //    do{
    //      traco(); 
    //      delay(ditTime); 
    //      ponto();
    //      delay(ditTime); 
    //    }
    //    while((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== HIGH));

  }


  if((digitalRead(teclaTraco)== LOW)&&(digitalRead(teclaPonto)== LOW) && !isAutomatico){

    if(!done){
      //  //Serial.print(str);
      compara();
      //Serial.print(" ");
      str = String("");
      done = true; 

    }   
  }


}

void espaco(){

  digitalWrite(saida, LOW);
  delay(spaceLetter);
  str.concat(" "); 
  done = false;
  if(!isAutomatico)
    checa();    

}

void traco(){



  digitalWrite(saida, HIGH);
  delay(dashTime);
  digitalWrite(saida, LOW);
  delay(ditTime);
  str.concat("-"); 
  done = false;
  checa();
  if((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== HIGH) && !isAutomatico){
    ponto();
  }


}

void ponto(){

  digitalWrite(saida, HIGH); 
  delay(ditTime);

  digitalWrite(saida, LOW);
  delay(ditTime);
  str.concat("."); 
  done = false;
  checa();    
  if((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== HIGH)&& !isAutomatico){
    traco();
  }


}

void limpaLcd(){
  if(index ==15){
    index = 0; 
    lcd.clear();
    lcd.setCursor(0,0);
  }  

}

void limpaLcdTotal(){
  delay(500);
  if((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== HIGH)){
    lcd.clear();
    lcd.setCursor(0,0);
  }
}
////////////////

void compara(){


  limpaLcd();

  index++; 


  if(str.equals(String(""))){
    //Serial.println("");
  }
  else   
    if(str.equals(A)){
    //Serial.print(_A); 
    lcd.print(_A);
  }
  else   
    if(str.equals(B)){
    //Serial.print(_B); 
    lcd.print(_B);
  }
  else   
    if(str.equals(C)){
    //Serial.print(_C); 
    lcd.print(_C);
  }
  else   
    if(str.equals(D)){
    //Serial.print(_D); 
    lcd.print(_D);
  }
  else   
    if(str.equals(E)){
    //Serial.print(_E); 
    lcd.print(_E);
  }
  else   
    if(str.equals(F)){
    //Serial.print(_F); 
    lcd.print(_F);
  }
  else   
    if(str.equals(G)){
    //Serial.print(_G); 
    lcd.print(_G);
  }
  else   
    if(str.equals(H)){
    //Serial.print(_H); 
    lcd.print(_H);
  }
  else   
    if(str.equals(I)){
    //Serial.print(_I); 
    lcd.print(_I);
  }
  else   
    if(str.equals(J)){
    //Serial.print(_J); 
    lcd.print(_J);
  }
  else   
    if(str.equals(K)){
    //Serial.print(_K); 
    lcd.print(_K);
  }
  else   
    if(str.equals(L)){
    //Serial.print(_L); 
    lcd.print(_L);
  }
  else   
    if(str.equals(M)){
    //Serial.print(_M); 
    lcd.print(_M);
  }
  else   
    if(str.equals(N)){
    //Serial.print(_N); 
    lcd.print(_N);
  }
  else   
    if(str.equals(O)){
    //Serial.print(_O); 
    lcd.print(_O);
  }
  else   
    if(str.equals(P)){
    //Serial.print(_P); 
    lcd.print(_P);
  }
  else   
    if(str.equals(Q)){
    //Serial.print(_Q); 
    lcd.print(_Q);
  }
  else   
    if(str.equals(R)){
    //Serial.print(_R); 
    lcd.print(_R);
  }
  else   
    if(str.equals(S)){
    //Serial.print(_S); 
    lcd.print(_S);
  }
  else   
    if(str.equals(T)){
    //Serial.print(_T); 
    lcd.print(_T);
  }
  else   
    if(str.equals(U)){
    //Serial.print(_U); 
    lcd.print(_U);
  }
  else   
    if(str.equals(V)){
    //Serial.print(_V); 
    lcd.print(_V);
  }
  else   
    if(str.equals(W)){
    //Serial.print(_W); 
    lcd.print(_W);
  }
  else   
    if(str.equals(X)){
    //Serial.print(_X); 
    lcd.print(_X);
  }
  else   
    if(str.equals(Y)){
    //Serial.print(_Y); 
    lcd.print(_Y);
  }
  else   
    if(str.equals(Z)){
    //Serial.print(_Z); 
    lcd.print(_Z);
  } 
  else   
    if(str.equals(zero)){
    //Serial.print(_0); 
    lcd.print(_0);
  }
  else   
    if(str.equals(um)){
    //Serial.print(_1); 
    lcd.print(_1);
  }
  else   
    if(str.equals(dois)){
    //Serial.print(_2); 
    lcd.print(_2);
  }
  else   
    if(str.equals(tres)){
    //Serial.print(_3); 
    lcd.print(_3);
  }
  else   
    if(str.equals(quatro)){
    //Serial.print(_4); 
    lcd.print(_4);
  }
  else   
    if(str.equals(cinco)){
    //Serial.print(_5); 
    lcd.print(_5);
  }
  else   
    if(str.equals(seis)){
    //Serial.print(_6); 
    lcd.print(_6);
  }
  else   
    if(str.equals(sete)){
    //Serial.print(_7); 
    lcd.print(_7);
  }
  else   
    if(str.equals(oito)){
    //Serial.print(_8); 
    lcd.print(_8);
  }
  else   
    if(str.equals(nove)){
    //Serial.print(_9); 
    lcd.print(_9);
  }

  else{    
    //Serial.print(str); 
    lcd.print(str);
    index += str.length();

  }
  limpaLcd();

}




void leitura()
{
  while(true){
    // read a byte from the current address of the EEPROM
    value = EEPROM.read(address);

    if(value==35) return;  //'#' sai do metodo

    t = value; 

    //Serial.print(address);
    //Serial.print("\t");
    //Serial.print(t);
    //Serial.print("\t");
    //Serial.print(value);
    //Serial.println();
    txt.concat(t);
    //Serial.println(txt);



    // advance to the next address of the EEPROM
    address = address + 1;

    // there are only 512 bytes of EEPROM, from 0 to 511, so if we're
    // on address 512, wrap around to address 0
    if (address == tamanhoMemoria){
      address = 0;
      return;
    }
    //  delay(500);
  }
}


void mostraSplashScreen(){

  //
  lcd.setCursor(0,0);
  lcd.print(splash1);
  lcd.setCursor(0,1);
  lcd.print(splash2); 
  delay(tempoSplashScreen);
  lcd.clear();
  //

}

void textoMemorizar(){
  lcd.clear();
  lcd.setCursor(c,0);
  lcd.cursor();
  //  boolean isStay = true;
  // while(!isMenuAtivo){  

  while(true){


    if((digitalRead(chave2)==HIGH)&&(digitalRead(chave1)==HIGH)){

      delay(1000);
      if((digitalRead(chave2)==HIGH)&&(digitalRead(chave1)==HIGH)){  

        loop();

      }


    }

    if((digitalRead(chave1)==HIGH) && (out.length()>0)){
      delay(10);
      //if((digitalRead(chave1)==LOW) && (out.length()>0)){        
      delay(250); 
      gravaMemoria(); 
      //TESTE
      //   isAutomatico = true;
      isMenuAtivo = true;
      // isStay = false;
      //return;
      //
      //}
    }

    if(digitalRead(chave2)==HIGH){
      //      delay(10);
      //        if(digitalRead(chave2)==LOW){
      delay(250); 
      c--;
      lcd.setCursor(c,0); 
      out = out.substring(0,c); 
      //    }
    }

    if((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== LOW)){  
      do{
        lcd.noCursor();
        lcd.setCursor(c,0); 
        i++;

        if(i>37)
        {
          i = 0;
          v = 32;
        }

        v = vetorCaracteres[i];
        lcd.print(v);
        delay(400);
      }
      while ((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== LOW));
    }
    else if((digitalRead(teclaPonto)== HIGH)&&(digitalRead(teclaTraco)== LOW)){  

      do{
        lcd.noCursor();
        lcd.setCursor(c,0); 
        i--;
        if(i<0)
        {
          i =37;
          v = 32; 
        }
        v = vetorCaracteres[i];
        lcd.print(v);
        delay(400);
      }
      while ((digitalRead(teclaPonto)== HIGH)&&(digitalRead(teclaTraco)== LOW));
    }
    if((digitalRead(teclaTraco)== HIGH)&&(digitalRead(teclaPonto)== HIGH)){
      delay(10);
      // if((digitalRead(teclaTraco)== LOW)&&(digitalRead(teclaPonto)== LOW)){
      c++;
      lcd.clear();
      out.concat(v);

      i = 64;
      lcd.setCursor(c,0);
      lcd.cursor();  
      delay(100);
     // isMenuAtivo = false;
      // isStay = true;
      //break;

    lcd.clear(); 
    lcd.print(out);
    delay(1000);

       //}
    }

  }
  //  isMenuAtivo = true;
  //  }
}


void gravaMemoria(){

  lcd.setCursor(0,1);
  lcd.print("Gravando Mem....");
  limpaMemoria(); 

  int addr = 0;

  for(; addr<=out.length(); addr++){
    EEPROM.write(addr, out.charAt(addr));
    if (addr == tamanhoMemoria){

      break;
    }


  }
  EEPROM.write(addr, 35);
  lcd.clear();
  lcd.setCursor(0,1);
  lcd.print("    Gravado!    ");
  beep();


}


void limpaMemoria(){

  for (int i = 0; i < tamanhoMemoria; i++)
    EEPROM.write(i, 0);
}

void beep(){

  digitalWrite(saida2, HIGH);
  delay(100);
  digitalWrite(saida2, LOW);
  delay(100);
  digitalWrite(saida2, HIGH);
  delay(100);
  digitalWrite(saida2, LOW);
  delay(100);
  digitalWrite(saida2, HIGH);
  delay(300);
  digitalWrite(saida2, LOW);
  delay(100);

  lcd.clear();
  loop();

}

////////////////////////////////////////////
//void S(){
//
//  ponto();
//  delay(ditTime); 
//  ponto();
//  delay(ditTime); 
//  ponto();
//  delay(ditTime); 
//
//}
//
//
//void O(){
//
//  traco();
//  delay(ditTime); 
//  traco();
//  delay(ditTime); 
//  traco();
//  delay(ditTime); 
//
//}





Nenhum comentário:

Postar um comentário