segunda-feira, 4 de junho de 2012

Código Fonte Aula 11 do Curso Arduino Advanced

Pessoal,

Segue o código fonte da Aula 11 do Curso Arduino Advanced, sobre EEPROM e SD Card.

#include
#include

File arquivo;
byte inicio_ok;

void setup()
{
  inicio_ok = 1;
  Serial.begin(9600);
  if(!SD.begin(4))
  {
    Serial.println("Erro ao iniciar cartao SD!");
    inicio_ok = 0;
    return;
  }
  Serial.println("Iniciacao Ok!");
}

void loop()
{
  if (inicio_ok)
  {
    int opcao = Serial.read();
    if (opcao == 'c')
    {
      Serial.println("Opcao Configuracao Selecionada!");
      opcao = Serial.read();
      while(opcao == -1)
      {
        opcao = Serial.read();
      }
      int valorConfig = opcao - 48;
      EEPROM.write(0, valorConfig);
      Serial.print("Valor gravado com sucesso: ");
      Serial.println(valorConfig);
    }
    else if (opcao == 'w')
    {
      while(opcao != 'x')
      {
        int leituraSensor = analogRead(0);
        arquivo = SD.open("sensor.txt", FILE_WRITE);
        if(arquivo)
        {
          arquivo.print("Valor do sensor em ");
          arquivo.print(millis());
          arquivo.print(" ms: ");
          arquivo.println(leituraSensor);
          arquivo.close();
          delay(1000 * EEPROM.read(0));
          Serial.print("Feita leitura do sensor em ");
          Serial.print(EEPROM.read(0), DEC);
          Serial.println(" segs.");
        }
        else
        {
          Serial.println("Erro ao abrir o arquivo para escrita!");
        }
        opcao = Serial.read();
      }
      Serial.println("Terminando leitura do sensor!");
    }
    else if (opcao == 'r')
    {
      arquivo = SD.open("sensor.txt");
      if (arquivo)
      {
        while(arquivo.available())
        {
          Serial.write(arquivo.read());
        }
        arquivo.close();
        Serial.println("Termino do arquivo");
      }
      else
      {
        Serial.println("Erro ao abrir arquivo para leitura!");
      }
    }
    else if (opcao == 'e')
    {
      SD.remove("sensor.txt");
      if (!SD.exists("sensor.txt"))
      {
        Serial.println("Arquivo apagado com sucesso!");
      }
      else
      {
        Serial.println("Erro ao apagar arquivo!");
      }
    }
  }
}

9 comentários:

  1. MAIS AULAS RENATO!!

    Muito boa as aulas espero que continuem!!

    ResponderExcluir
  2. Parabens pelas video aulas ,sao excelentes, eu comecei a estuda-las esta semana e ja estou aprendendo muito,eu ja tenho conhecimento em C e C++ e esta me ajudando muito agora,eu queria saber se voce continuara com as video aulas?
    abraços

    ResponderExcluir
    Respostas
    1. Obrigado pelo comentario!!!!
      Acompanhe as video aulas do curso Arduino no meu canal no Youtube: http://www.youtube.com/user/graccula?feature=guide
      Abraços
      Renato

      Excluir
  3. Boa noite Renato. Sobre o código fonte da Aula 11 do Curso Arduino Advanced, sobre EEPROM e SD Card, digitei o código acompanhando a aula do youtube. A primeira parte até apresentar na saida "Iniciacao Ok" tudo ok. Mas quando eu digito o c nada acontece. Pensei em ter escrito o código errado, conferi e nada. Copiei o que vc escreveu neste post e nada. Estou usando o UNO e o scketch 1.0.1. Onde poderia estar o problema? vc pode ajudar?

    ResponderExcluir
    Respostas
    1. Obrigado pelo comentário!!!
      Participe do forum do curso Arduino, poste suas duvidas tecnicas la!!!
      Existem tópicos exclusivos separados por aula.
      http://www.youtube.com/user/graccula?feature=guide
      Abraços
      Renato

      Excluir
  4. Renato, bom dia!
    Primeiramente parabéns pelo seu trabalho!
    Gostaria de saber se você já fez algum exemplo em que, além de usar o Ethernet shild para ler e escrever no cartão SD, o mesmo transmitia os dados do cartão para algum IP?
    Precisava de algo desse gênero, mas só consegui em códigos separados e não consigo fazê-lo.
    Abs

    ResponderExcluir
  5. Boa noite Renato.
    Parabéns pelas aulas, são muito esclarecedoras.
    Estava utilizando o código fonte da Aula 11 do curso de Arduino Advanced (EEPROM e SD) e gostaria de fazer a leitura do “sensor” em tempo maior como 15 minutos, por exemplo. Acontece que usei um tempo de delay de 10.000 (no original é 1.000), mas aí só aceita valores de configuração até no máximo 3, o que dá um pouco mais de trinta segundos entre leituras. Alguma sugestão para aumentar este tempo para 15 min? Grato pela gentileza. Att., Sidney.

    ResponderExcluir
    Respostas
    1. Obrigado pelo comentário!!!
      Participe do forum do curso Arduino, poste suas duvidas tecnicas la!!!
      Existem tópicos exclusivos separados por aula.
      http://www.youtube.com/user/graccula?feature=guide
      Abraços
      Renato

      Excluir
  6. Muito bom cara!! Ajudou bastante em um projeto de onde eu trabalho!! Isso sim que significa compartilhar conhecimento.

    ResponderExcluir