Como foi visto no último post daremos o início do estudo de MatLab e Arduino. Nesse primeiro post sobre tal assunto iremos fazer um simples botão de ligar e outro para desligar um LED, usando a interface gráfica do MatLab. Bom, vamos começar!
Primeiramente, abra seu software MatLab e no COMMAND WINDOW digite tal frase: GUIDE. Na aba Create new GUI escolha a 1ª opção: Blank GUI(default), a figura abaixo ilustra esse passo.
Já com a GUIDE criada colocaremos os respectivos botões de "ON" e "OFF". Para isso selecione a ferramenta pushbutton na paleta:
Fala pessoal, desculpa a demora em postar algo novo, mas estou sem tempo em atualizar. Faculdade tomando todo tempo. Mas sem chororo, hoje vamos falar sobre uma ferramenta muito útil na engenharia que o software MATLAB, com esse programa podemos fazer muitas simulações tanto físicas, matemáticas ou de engenharia.
Bom, em meados de 2010 a Mathworks, desenvolvedora do MatLab, disponibilizou uma forma de interagir em conjunto com o Arduino, toda a programação é feita em ambiente MatLab, abandonando o IDE do Arduino.
O 4º passo do nosso tutorial é como fazer links entre páginas e hospedar imagens, tudo usando o arduino mais o shield ethernet e o cartão de memória micro SD.
Nesse 3º passo do tutorial Shield Ethernet Arduino, iremos estudar uma das várias formas de controle de componentes externo por uma página em HTML. Nesse caso iremos usar 2 LED's para fácil compreensão do código.
Material:
- Arduino
- Shield Ethernet
- 2 Led's
- Fios Jumpers, cabo USB e cabo com conexão RJ-45
Imagens:
Na imagem abaixo podemos ver como conectei o arduino mais o shield com os led's.
Continuando nosso estudo sobre shield ethernet iremos hoje explorar uma vantagem dessa ferramenta, o uso do cartão micro SD pra armazenar sites em formato HTML, você pode programar qualquer tipo de linguagem e armazenar no cartão.
Há algum tempo adquiri uma placa shield ethernet para usar no Arduino. Já postei algo sobre essa placa alguns posts atrás. (11 projeto arduino e shield ethernet). Decidi então estudar melhor esse shield e também criar um pequeno tutorial sobre meus estudos, que achei em livros e sites.
Nesse 1º tutorial aborda o uso do shield para construção simples em HTML de um site hospedado pelo próprio shield.
Um web server hospeda sites que você pode acessar pelo browser de qualquer computador em rede com o arduino e seu shield ethernet. Com o esse shield você poderá controlar e monitorar alguns hardware. como lâmpadas, motores e etc.
Abaixo segue os materiais que iremos usar nesse e nos próximos tutoriais.
Há mais ou menos um mês fiz minha última postagem sobre shield ethernet, tal assunto que ainda quero muito estudar e irei. Demorei esse tempo para fazer uma nova postagem porque estava sem tempo - novamente: maldita engenharia -, hoje gostaria de aborda um shield que comprei algum tempo. que o motor shield da ladyAda.
Há cerca de uma semana chegou minha tao estimada compra no dealextreme.com/ e dessa vez chegou para mim um arduino Mega e o tão famoso shield Ethernet.
Já de cara quis aprender a mexer com esse shield tão poderoso, verifiquei que há muitos projetos na net mas poucos projetos didáticos, então decidir criar algo fácil de entender.
No caso eu decidir criar um sketch cujo tal o usuário apertava um botão e um led acendesse, coisa simples porém queria já criar um ambiente em html. Então...decidir estudar e foi esse o resultado
Mas antes vamos entender um pouco sobre o shield Ethernet:
Depois de um mês sem postar nada - maldita engenharia! -, hoje eu volto com algo que sempre fui curioso em aprender. Como acender uma lâmpada por controle remoto?
Desde que comecei a estudar o Arduino aprendi muito sobre eletrônica, que admito e meu ponto mais fraco, e para fazer esse projeto tive q corre atrás e estudar um pouco mais, agradeço agora ao incrível professor Luis Paulo da faculdade CES/jf campus Academia cujo tal foi um excelente orientador e paciente comigo. Muito Obrigado!
Mas como falava, tive que aprender um pouco mais e no caso desse projeto o incrível valor do relé. Link para entendimento de relé
O 9º projeto é um clássico do arduino. Seria como fazer uma leitura com o sensor LM35, que tem seu custo muito barato, e imprimir o valor em um display de LCD 16X2.
Vamos ao projeto:
No 8º projeto damos um salto grande em relação a complexidade e recursos para realizar esse projeto. Recentemente realizei um compra no site dealextreme.com e chegou vários "brinquedos" para mim, e um deles foi:
Nesse sexto projeto venho apresentar um caro amigo de faculdade e estudos de Arduino, Alberto Pena. Ele desenvolveu uma bomba para o uso de airsoft e pediu minha humilde ajuda para encontrar e retirar alguns "bugs" de seu sketch. Ao encontro-la para estudar seu projeto achei muito interessante e propus á ele q cedesse seu código mais seu esquema para eu postar no meu blog. Bom, como podemos ver, ele aceitou!!
Então vamos logo ao projeto:
Material:
- Arduino
- Protoboard
- Fios Jumpers
- Display cristal liquido
- 2 Resistores 220ohms (pushbuttons) - 2 Resistor 1Kohm (Buzzer e LCD) - Led Resistor 220Ohms (Led)
- 1 potenciômetro
- 2 pushbottons
- 1 buzzer
- Fonte externa de alimentação do arduino(pilhas, baterias,...)
No 5º projeto de nosso blog continuaremos a estudar um pouco mais na prática uma das formas de uso do servomecanismo, nesse exemplo coloquei na ponta do servo um resistor LDR cuja função e comparar o valor da luminosidade local com um valor do programa se esse valor for maior o servo deverá travar sua posição até que a luminosidade mude.
Bom, esse post é um pouco diferente dos outros, pois não há nenhum projeto a ser discutido, mas continuarei dando ênfase no estudo do servomotor.
Para maior conhecimento organizei uma tabela com os principais comandos do uso da porta serial e destaquei algumas explicações de tais comandos.
Com estudo dessa tabela o uso da porta serial ficará bem mais facil.
Depois irei postar um novo projeto bem simples usando apenas o arduino e um servomecanismo.
Nesse novo projeto iremos controlar um servo utilizando o teclado do PC. É um program simples onde entenderemos mais a fundo sobre os comandos Serial.
Material:
- Arduino
- Servo
Esquema:
Código:
#include <Servo.h> //incluir a biblioteca de servo
Servo myservo; //Inclusao do servo
int n = 0; //Entradas seriais
int pos = 0; //Posição zero para o servop
void setup(){
Serial.begin(9600); //Ativando a porta serial
myservo.attach(8); //Pino do servo+arduino
myservo.write(0); //Servo setado com valor zero
Serial.flush(); //Limpando a memoria do serial
Serial.println("Digite: \n 2-90 \n 3-180 \n 4-02"); //criação de um cabeçalho no serial
}
void loop(){
if(Serial.available()>0){ //Teste se porta serial esta recebendo dados
n = Serial.read(); //leitura de dados
Serial.print("Valor lido: ");
Serial.println(n); //Printa o valor teclado
if(n==50){ //girar 90
myservo.write(90);
delay(500);
}
if(n==51){ //girar 180
myservo.write(180);
delay(500);
}
if(n==52){ //volta pra 0
myservo.write(-180);
delay(500);
}
}
Serial.flush();
}
Vídeo:
Comentário sobre o código:
Podemos notar que ao fazer o upload do código e abrirmos o serial(Crtl+Shift+M) aparecerá um tipo de cabeçalho:
Digite:
- 2-90
- 3-180
- 4-0
Isso ocorre porque o Serial.print está no void setup, se estivesse no void loop seria constantemente mostrado na tela.
Temos a leitura do valor "n" que é gerado pelo teclado. Como o objetivo é comparar valores lidos pelo teclado precisamos utilizar o valor real do "n" e compara-lo em uma condição: (n==50) "n é igual a 50?", como 50 representa do digito "2", caso você tenha pressionado o número "2" a condição torna-se verdade e uma tarefa é executada.
É possível usar outros valores e também acionar outros dispositivos como motores/leds usando essa mesma lógica, basta adicionar mais condições.
Bom, esse segundo projeto é uma maneira simples de interagir um servo usando um LDR. Tente fazer a parte de hardware mais simples possível e ao mesmo tempo mais explicativa possível.
Material:
- Servomecanismo
- Resistor 10kohms
- LDR
- Arduino
- Protoboard
- Fios Jumpers
Esquema:
Código:
#include <Servo.h> //inclusão da biblioteca servo
Servo myservo; //nomeando o servo
int pos = 0; //determinando posição 0 para o servo
int pinLDR = A0; //Pino analógico A0 para o LDR
int valor; //variável valor
#define LDR 0 //definindo o valor de LDR como zero
void setup(){
Serial.begin(9600); //Abrindo comunicação serial
myservo.attach(9); //Pino de conexão servo+arduino
myservo.write(0); //Servo com valor setado zero
}
void loop(){
valor = analogRead(LDR); //Variável valor recebendo o valor do LDR
Serial.print("O valor do LDR e: "); //Printar a frase O valor do LDR e:
Serial.println(valor); //Printar o valor serial do LDR
//Se variável valor for menor que 550 o servo deverá andar 180 graus com resposta de 500ms
if(valor<550){
myservo.write(180);
delay(500);
}
//Se não, o servo deverá voltar ao estado original
else{
myservo.write(-180);
delay(500);
}
} Vídeo:
Ao fazer o upload do programa o servo se comportará toda vez que um sombra atuá sobre o LDR, movimentando-o 180 graus.
O primeiro projeto que apresento é o velho mas
também importante semáforo interativo, onde temos as luzes para o tráfego dos
automóveis e as luzes para a travessia dos pedestres. Mas, nesse projeto
adicionei algo á mais: um display de 7 segmentos, cujo faz a contagem
regressiva de 5 até 0, cronometrando o tempo de travessia do pedestre.
DICA: Para realizar esse projeto baseie no exemplo
nº 4 do livro Arduino Básico, ed. NOVATEC (recomendo).
int redCar = 12; //pino luz vermelho
int yellowCar = 11; //pino luz amarelo
int greenCar = 10;
int redPed = 7; //pino luz vermelho pedestre
int greenPed = 8; //pino luz verde pedestre
int button = 2; //push button
int displayA = 3; //seguencia de leds do display e seus respecitvos pinos
int displayB = 4;
int displayC = 5;
int displayD = 1;
int displayE = 6;
int displayF = 9;
int displayG = 13;
digitalWrite(greenCar, HIGH); //acende verde para carros
digitalWrite(redPed, HIGH);
pinMode(3, OUTPUT); //pinos dos display como saída
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(1, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(13, OUTPUT);
}
void loop(){
int state = digitalRead(button); /* verifica se o botão foi pressionado e
se transcorreram 5 segundos desde a última vez que isso ocorreu*/
if(state == HIGH){ //Chama a funçao para alterar as luzes
trocaLed();
}
}
void trocaLed(){
digitalWrite(greenCar, LOW); //Apaga o verde
digitalWrite(yellowCar, HIGH); //acende o amarelo
delay(2000); //espera dois segundos
digitalWrite(yellowCar, LOW); //Apaga o amarelo
digitalWrite(redCar, HIGH); //Acende o vermelho
delay(2000); //Espera 2 segundos
digitalWrite(redPed, LOW); //Apaga o vermelho dos pedestres
digitalWrite(greenPed, HIGH); //cende o verde dos pedestres
//espera por um intervalo de tempo predefinido
digitalWrite(displayA, LOW); //Seqüência do numero 5
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, HIGH);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
delay(1000);
digitalWrite(displayA, LOW); //Seqüência do numero 4
digitalWrite(displayB, LOW);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, LOW);
delay(1000);
digitalWrite(displayA, LOW); //Seqüência do numero 3
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, LOW);
digitalWrite(displayG,LOW);
delay(1000);
digitalWrite(displayA, LOW); //Seqüência do numero 2
digitalWrite(displayB, HIGH);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, HIGH);
delay(1000);
digitalWrite(displayA, HIGH); //Seqüência do numero 1
digitalWrite(displayB, HIGH);
digitalWrite(displayC, HIGH);
digitalWrite(displayD, LOW);
digitalWrite(displayE, HIGH);
digitalWrite(displayF, HIGH);
digitalWrite(displayG, LOW);
delay(1000);
digitalWrite(displayA, HIGH); //Seqüência do numero 0
digitalWrite(displayB, LOW);
digitalWrite(displayC, LOW);
digitalWrite(displayD, LOW);
digitalWrite(displayE, LOW);
digitalWrite(displayF, LOW);
digitalWrite(displayG, LOW);
delay(1000);
//pisca o verde para os pedetres
for(int x=0; x<3; x++){
digitalWrite(greenPed, HIGH);
delay(250);
digitalWrite(greenPed, LOW);
delay(250);
}
//Acende o vermelho dos pedretres
digitalWrite(redPed, HIGH);
delay(500);
digitalWrite(yellowCar, HIGH);
digitalWrite(redCar, LOW);
delay(1000);
digitalWrite(greenCar, HIGH);
digitalWrite(yellowCar, LOW);
//Registra o tempo desde a ultima alteração no semaforo
}
Vídeo:
Ao fazer o upload do arquivo os led's verde para carros e
vermelhos para pedestres deverão está aceso, ao pressionar o botão o led
vermelho para carro apaga e o amarelo se acenderá logo depois o verde de
pedestre também se acenderá e o led vermelho se apagará começando a contagem do
tempo no display, em seguido ao término da contagem o led verde de pedestre
piscará 3 vezes e voltará ao estado inicial do programa.
Comentário: Esse projeto é muito interessante pois já
requer um certo nível de conhecimento de programação somado com eletrônica
básica.
Aperfeiçoamento: - Reduzir código;
Agradeço a atenção de todos e fico aberto a sugestões
Bom, vejamos, por que criar um blog? Para registro?
Talvez!....No meu caso o blog foi uma sugestão de um dos meus
"mentores" sobre programação de Arduino. Isso mesmo, esse blog tem
como objetivo expor experiências e projetos que andei fazendo ou estudando.
Logo abaixo temos um projeto que fiz recentemente.