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();
}
#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