quarta-feira, 27 de junho de 2012

Codigo Fonte Aula 13 - Optoacopladores

Conforme Aula 13 do Curso Arduino Advanced, seguem os códigos apresentados:

Acendendo uma lâmpada pelo Arduino - Parte 1

void setup() {               
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  pinMode(8, INPUT);
  digitalWrite(8, HIGH); 
}

void loop() {
  byte ok = 0;
  if (digitalRead(8) == LOW)
  {
    unsigned long tempo = millis();
    while(tempo + 500 > millis());
    if (digitalRead(8) == LOW) ok = 1;
  } 
  if (ok)
    digitalWrite(13, !digitalRead(13));
  delay(500);   
}

Verificando no Arduino se um dispositivo foi acionado - Parte2

byte LED = 13;
byte DETECT = 2;
volatile unsigned long contador;

void setup()
{
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
  pinMode(DETECT, INPUT);
  digitalWrite(DETECT, HIGH);
  contador = 0;
  attachInterrupt(0, detect, FALLING);
}

void loop()
{
  unsigned long contador_loop = contador;
  unsigned long mark = millis() + 100;
  while (mark > millis());
 
  if (contador > contador_loop)
  {
    // ligado
    digitalWrite(LED, HIGH);
  }
  else
  {
    // desligado
    contador = 0;
    digitalWrite(LED, LOW);
  }
  //delay(100);
}

void detect()
{
  contador++;
}

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!");
      }
    }
  }
}