domingo, 28 de outubro de 2012

Curso Arduino Advanced - Aula 17 (Bluetooth)

Pessoal,

Segue o link para acessar o código fonte desta aula sobre bluetooth e o Arduino:

http://seriallink.com.br/forum/viewtopic.php?f=71&t=1554

Abraços,
Renato

sexta-feira, 12 de outubro de 2012

Fórum do Curso do Arduino

Pessoal,

Estou publicando este post para divulgar o fórum do Curso do Arduino no endereço do meu site:

http://www.seriallink.com.br/forum

Por favor utilizem o fórum para dúvidas técnicas e discussões sobre os posts feitos no blog.

Abraços,
Renato Aloi

domingo, 26 de agosto de 2012

Código Fonte - Aula 15 do Curso Arduino Advanced (PHP)

Pessoal,

Segue o código utilizado no Arduino:


void setup()
{
  Serial.begin(9600);
  delay(1000);
}

void loop()
{
  if (Serial.available())
  {
    char recebido = Serial.read();
    if (recebido = 't')
    {
      int valorLido = analogRead(0);
      float temperatura = (valorLido * 0.00488) * 100;
      Serial.print("Temperatura: ");
      Serial.println(temperatura);
    }
  }
}

Código utilizado no PHP:




<?php

//MAC/Linux
//$portAddress = '/dev/tty.XYZ';

//Windows
$portAddress = 'COM3';
exec("mode com3: BAUD=9600 PARITY=N data=8 stop=1 xon=off");

echo(" <h1> Temperatura Via Arduino </h1> ");

echo(" <p> Conectando, aguarde...");
$port = fopen($portAddress, 'w+');
if(!$port)
{
echo " <br /> Nao foi possivel abrir a porta $portAddress";
}
else
{
echo " <br /> Conectado com sucesso na porta $portAddress";
}
echo(" </p> ");


sleep(3);
fwrite($port, 't');

sleep(1);
echo fgets($port);

fclose($port);

?>


terça-feira, 31 de julho de 2012

Código Dimmer Digital AC - Aula 14

Pessoal,

Conforme prometido na Aula 14 do Curso Arduino Advanced, segue o código do Dimmer Digital AC com TRIAC:


int UP = 7;
int DOWN = 8;
int LAMP = 3;  
int dimming = 128;
int counts = 7;
int dimmer[7] = { 1, 105, 100, 75, 50, 25, 10 };
int i = 0;

void setup()
{
  //Serial.begin(9600);
  //delay(1000);
  pinMode(UP, INPUT);
  pinMode(DOWN, INPUT);
  pinMode(LAMP, OUTPUT);
  digitalWrite(UP, HIGH);
  digitalWrite(DOWN, HIGH);
  attachInterrupt(0, zero_crosss_int, RISING);
}

void loop()
{
  if (!digitalRead(UP) || !digitalRead(DOWN))
  {
    if (verifica_botao(UP))
    {
      if (i < (counts - 1)) i++;
      //Serial.print("UP: ");
      //Serial.println(i, DEC);
    }
    else if (verifica_botao(DOWN))
    {
      if (i > 0) i--;
      //Serial.print("DOWN: ");
      //Serial.println(i, DEC);
    }
  }
  //Serial.print("VALOR: ");
  //  Serial.println(i, DEC);
  dimming = dimmer[i];
  delay(100);
}

void zero_crosss_int()
{
  int dimtime = (65 * dimming);    
  delayMicroseconds(dimtime);  
  digitalWrite(LAMP, HIGH);  
  delayMicroseconds(8.33);        
  digitalWrite(LAMP, LOW);  
}

byte verifica_botao(byte botao)
{
  if (!digitalRead(botao))
  {
    unsigned long tempo = millis() + (150 - dimming);
    while(tempo > millis())
    {
     if (digitalRead(botao)) return LOW;
    }
    return HIGH;
  }
  else
    return LOW;
}

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

sábado, 26 de maio de 2012

Códigos Fontes da Aula 10 (Expansor de Porta) do Curso Arduino

Pessoal,

Segue os códigos fontes utilizados na Aula 10 do Curso Arduino Advanced. E conforme prometido segue o código também do contador regressivo.


Código #1

#include

#define expansor1 0x38

void setup()
{
  Wire.begin();
  Wire.beginTransmission(expansor1);
  Wire.send(0xFF);
  Wire.endTransmission();
}

void loop()
{
  Wire.beginTransmission(expansor1);
  Wire.send(B10000001);
  Wire.endTransmission();
  delay(1000);
  Wire.beginTransmission(expansor1);
  Wire.send(B01111101);
  Wire.endTransmission();
  delay(1000);
}
 
Código #2
 
#include

#define expansor1 0x38
#define expansor2 0x39

void setup()
{
  Wire.begin();
  comunica(expansor1, 0xFF);
  comunica(expansor2, 0xFF);
}

void loop()
{
  comunica(expansor1, B10000001);
  comunica(expansor2, B01111101);
  delay(1000);
  comunica(expansor2, B10000001);
  comunica(expansor1, B01111101);
  delay(1000);
}

void comunica(byte endereco, byte digito)
{
  Wire.beginTransmission(endereco);
  Wire.send(digito);
  Wire.endTransmission();
}
 
Código Extra do Contador Regressivo
 
 #include

#define expansor1 0x38
#define expansor2 0x39

void setup()
{
  Wire.begin();
  EscreveDigito(expansor1, 0xFF);
  EscreveDigito(expansor2, 0xFE);
}

void loop()
{
  for(int i = 99; i >= 0; i--)
  {
    byte a = i / 10;
    byte b = i - (a * 10);
    if (i < 10) a = 0;
    EscreveDigito(expansor2, ConverteDigito(a));
    EscreveDigito(expansor1, ConverteDigito(b));
    delay(1000);
  }
}

byte ConverteDigito(byte decimal)
{
  switch(decimal)
  {
    case 0:
      return B00010001;
    case 1:
      return B01111101;
    case 2:
      return B00100011;
    case 3:
      return B00101001;
    case 4:
      return B01001101;
    case 5:
      return B10001001;
    case 6:
      return B10000001;
    case 7:
      return B00111101;
    case 8:
      return B00000001;
    case 9:
      return B00001001;
    default:
      return B11101111;
  }
}

void EscreveDigito(byte endereco, byte digito)
{
  Wire.beginTransmission(endereco);
  Wire.send(digito);
  Wire.endTransmission();
}
 
Abraços,
Renato Aloi