RuiViana

FA_Ver5

Mar 17th, 2018
140
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <SPI.h>                                        // Incluímos as bibliotecas necessárias
  2. #include <SD.h>                                         // Para o funcionamento do módulo
  3. File arquivo;                                           // Dizemos que nosso arquivo é da classe File
  4. int recNum = 0;                                         // Contador de linhas
  5. #include<EEPROM.h >                                     // Biblioteca de EEPROM
  6. int ponteiro = 1;                                       // Numero da linha salvo na EEPROM
  7. #define Abotao 7                                        // Botão A de acionar leitura no port 7
  8. #define Bbotao 8                                        // Botao B para inicializar port 8
  9. int flag = 0;                                           // Controle do botao
  10. String list = "";
  11. //-----------------------------------------
  12. void sdRead()                                           //essa função vai ler o nosso arquivo e escrever na serial
  13. {
  14.   arquivo = SD.open("ARDUINO.txt");                     // como sempre, devemos abrir nosso arquivo antes de qualquer operação, note que para ler é só abrir o arquivo
  15.   if (arquivo)                                          // verificamos se foi aberto para podermos manipular o arquivo
  16.   {
  17.     if (arquivo.available())                            // Se o nosso arquivo está disponível...
  18.     {
  19.       while (recNum != ponteiro)                        // Enquanto forem diferentes
  20.       {
  21.         list = arquivo.readStringUntil('\r');           // Leia uma linha até encontra linha ponteiro
  22.         recNum++;                                       // Incremente contador
  23.       }
  24.       Serial.println(list);                          
  25.       if (recNum == ponteiro)                           // Se encontrou a linha
  26.       {
  27.         EEPROM.put(0,recNum);                          // Salva valor da ultima linha lida
  28. //      int xpto = EEPROM.get(0,ponteiro);
  29. //      Serial.print("recNum :");Serial.println(xpto);
  30.       }
  31.       ponteiro = recNum + 1;
  32.       recNum = 0;
  33.     }
  34.   }
  35.   else                                                  // se o arquivo não foi aberto...
  36.   {
  37.     Serial.println("Erro ao ler ARDUINO.txt");          // imprimimos na serial que não foi possível ler
  38.   }
  39.   arquivo.close();                                      // e por fim, fechamos nosso arquivo
  40. }
  41. //-----------------------------------------
  42. void setup()
  43. {
  44.   Serial.begin(9600);                                   // iniciamos a serial com 9600 bauds
  45.   pinMode(Abotao, INPUT_PULLUP);
  46.   pinMode(Bbotao, INPUT_PULLUP);                        // Botao de inicialiuzacao como entrada pullup
  47.   //  while (!Serial) ;
  48.   Serial.print("Iniciando SDCard...");                  // escrevemos na serial que estamos iniciando o SDCard
  49.   if (!SD.begin(4))                                     // se o sdcard com o CS na 4 não for iniciado
  50.   {
  51.     Serial.println("Falhou.");                          //escrevemos na serial que falhou
  52.     return;
  53.   }
  54.   EEPROM.get(0,ponteiro);                               // Le o valor guardado na EEPROM
  55.   Serial.println(ponteiro,HEX);
  56.   Serial.println("Terminado.");                         // dizemos q a tentativa de iniciar terminou
  57.   Serial.println("Aperte A para proxima linha e B para reiniciar");
  58. }
  59. //-----------------------------------------
  60. void loop()
  61. {
  62.   if (digitalRead(Bbotao) == LOW)                       // Se botao B foi pressionado
  63.   {
  64.     delay(30);                                          // Deboucing
  65.     if (digitalRead(Bbotao) == LOW)                     // Se botao B continua pressionado
  66.     {
  67.       ponteiro = 1;                                     // Reinicia leitura
  68.       recNum = 0;
  69.     }
  70.   }
  71.   //Serial.println(digitalRead(botao));
  72.   if (digitalRead(Abotao) == HIGH)                       // Se botao A esta liberado
  73.   {
  74.     flag = 0;
  75.   }
  76.   if (flag == 0)                                        // Se não foi pressionado botao
  77.   {
  78.     if (digitalRead(Abotao) == LOW)                     // Se botao A foi pressionado
  79.     {
  80.       delay(30);                                        // Deboucing
  81.       if (digitalRead(Abotao) == LOW)                   // Se botao A continua pressionado
  82.       {
  83.         flag = 1;                                       // Informa que botao A foi pressionado
  84.         sdRead();                                       // Chamar metodo de leitura
  85.       }
  86.     }
  87.   }
  88. }
  89. //---------------------------------------
RAW Paste Data