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
domingo, 28 de outubro de 2012
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
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);
?>
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;
}
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
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++;
}
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!");
}
}
}
}
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
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
Assinar:
Comentários (Atom)