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
 

13 comentários:

  1. Cara.. em termos d video aula, é vc e o neri dominam o mercado...hehe
    vc em arduino e ele em programação..
    Faz os vídeos meio q no improviso e só não aprende quem não quer..
    Está de parabens.. Ótimas Vídeo aulas... vlw ai..

    ResponderExcluir
    Respostas
    1. Obrigado pelo comentario e pelo apoio!!!
      Abraços
      Renato

      Excluir
  2. Boa tarde,

    Gostaria de tirar uma duvida.
    É possível com Arduíno + algum outro adicional simular um controle remoto, por exemplo para controlar um ar condicionado.

    ResponderExcluir
    Respostas
    1. Este comentário foi removido pelo autor.

      Excluir
    2. Obrigado pelo comentário!!!
      Participe do forum do curso Arduino, poste suas duvidas tecnicas la!!!
      Existem tópicos exclusivos separados por aula.
      http://www.seriallink.com.br/forum
      Abraços
      Renato

      Excluir
  3. Boa Noite, tem algum e-mail que poderia passar pra poder tirar duvidas sobre o arduino?
    poderia entrar em contato comigo pelo meu e-mail kmorett@gmail.com

    Obrigada

    ResponderExcluir
  4. cara, eu to tentando ligar um LCD 16x2 mas não estou conseguindo fazer o upload, ta dando um erro ('LiquidCrystal_I2C' does not name a type)
    oque pode esta acontecendo?

    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.seriallink.com.br/forum
      Abraços
      Renato

      Excluir
  5. Essas portas "extras" são analógicas ou digitais?? Posso utilizá-las para ler sensores?? Obrigado

    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.seriallink.com.br/forum
      Abraços
      Renato

      Excluir
  6. boa noite Renato você pode fazer um video, arduino com TEMPORIZADOR LCD como neste video youtube.com/watch?v=3JtEOQgNd0­8

    ResponderExcluir
  7. Boa Tarde!
    Estou com o PCF8574P e no meu projeto preciso dar nome aos pinos! Estou usando a lib PCF8574.h a programação foi toda feita e funciona ate a hora que coloco no PCF. Os leds não da nem sinal setando eles pelo binário de cada pino! Outro problema que encontrei e que um programa no computar manda via serial o sinal para cada led acender separadamente. Usei o chip 74HC595 e fiz funcionar o problema foi que todos os leds ligarão juntos! Poderia me ajudar por favor não tem nada parecido na internet fiz muita pesquisa e não achei nada nem parecido! Obrigado desde já!

    ResponderExcluir