Serial Monitor, localiza-se logo abaixo da barra de ferramentas como irei mostra logo a seguir. Esse ícone serve para exibir dados que vem da placa do Arduino ou enviar dados para o Arduino.
Primeiramente para poder ver esses valores, logo no void setup() precisamos usar o Serial.begin(). Relembrando o quer seria isso, a função Serial serve para poder ter uma comunicação entre a placa e o computador e a função begin() é para definir a taxa de transmissão de bits por segundo para transmissão de dados serial, vale ressaltar que essas taxas são: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, ou 115200. Mas geralmente é usado a taxa de 9600 bps. Logo relembrando isso, na programação dentro do loop() ou no setup() iremos usar outra função que seria o print() e/ou println(). O comando print() podemos escrever qualquer coisa contanto que esteja entre aspas "", mas pode colocar a variável em que deseja visualizar o valor ou poder ver os valores da Tabela ASCII (logo iria colocar o valor logo depois desse valor a virgula e o formato (val, format)) e tudo é visto na mesma linha. O comando printiln() é idêntico ao print() sendo que depois desse valor irá pular uma linha na leitura.
A janela em que possamos ver o que deseja, basta clicar no Serial Monitor e abrirá uma janela como essa, logo a seguir. Mas só podemos ver essas variáveis contanto que o arduino esteja ligado ao computador pelo USB.
Como sempre espero que tenham entendido pessoal!!! Até....
A programação do Sensor de Toque, praticamente é igual ao do Sensor de Luz, mas é mais pratico usar esse Sensor numa porta Digital do Arduino, porque nesse sensor você só irá ligar e desligar algo, vai ser 0 quando estiver pressionado ou 1 quando não pressionar o botão (ou vice versa dependendo do circuito que você queira), na minha opinião, o mais adequado para isso seria usar o push button. Mas podendo fazer numa porta analógica, ai seria melhor usar a Chave Switch porque podemos controlar um pouco a intensidade do toque no sensor.
Quando usamos as portas analógicas do Arduino, o arduino irá fazer uma leitura de 0-1023 na porta digital, a leitura vai ser 0-1, mas na programação colocamos HIGH (1) e LOW (0).
Para quem não conhece o que é um Push Button ou Chave Switch, logo abaixo tem foto desses sensores e para quem não sabe montar o Sistema do Sensor de Toque aqui o link para saber montar.
Como disse a programação não tem mistério praticamente o idem do Sensor de Luz, mas nesse aqui estou usando o PushButton para controlar os LEDs mas a partir disso dá para usar no sensor de toque, por exemplo o projeto desviar de obstáculos.
O circuito do PushButton é fácil de montar mas tem que prestar atenção no botão nos terminais, ver onde ficar o NA e o NF (Normalmente Aberto e Fechado). O circuito do RGB é independente do botão os circuitos não se misturam como mostra a imagem a seguir:
Programação:
int led13 = 13; int R = 11; int G = 10; int B = 9; int botao13 = 2; int valor13 = 0; int botaoR = 3; int valorR = 0; int botaoG = 4; int valorG = 0; int botaoB = 5; int valorB = 0; int botaoReset = 6; int valorReset = 0; void setup() { pinMode(led13, OUTPUT); pinMode(R, OUTPUT); pinMode(G, OUTPUT); pinMode(B, OUTPUT); pinMode(botao13, INPUT); pinMode(botaoR, INPUT); pinMode(botaoG, INPUT); pinMode(botaoB, INPUT); pinMode(botaoReset, INPUT); } void loop() { // Liga a Desliga o Led13 valor13=digitalRead(botao13); if(valor13 == HIGH) { digitalWrite(led13, HIGH); } else { digitalWrite(led13, LOW); } // Liga a Desliga Cores do RGB valorR=digitalRead(botaoR); valorG=digitalRead(botaoG); valorB=digitalRead(botaoB); valorReset=digitalRead(botaoReset); if(valorR == HIGH) { digitalWrite(R, HIGH); digitalWrite(G, LOW); digitalWrite(B, LOW); } if(valorG == HIGH) { digitalWrite(R, LOW); digitalWrite(G, HIGH); digitalWrite(B, LOW); } if(valorB == HIGH) { digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, HIGH); } if(valorReset == HIGH) { digitalWrite(R, LOW); digitalWrite(G, LOW); digitalWrite(B, LOW); } }
Explicando a primeira parte da programação, o
1º botão só vai servir para ligar o LED quando for pressionado, quando não for,
o LED fica apagado. Para fazer isso como vimos usei a programaçãoelse serve para fazer o
contrario (dependendo da programação) doif,
o Arduino irá ler assim: "SE (if) botão for igual a 1 (HIGH), o LED
acende, DO CONTRARIO (else) caso o botão não fique pressionado o LED
apaga. Não colocando oelse,
o Microcontrolador irá entender que quando pressionar uma vez o LED ficará
acesso e não apaga.
Na programação, devemos sempre colocar até os mínimos detalhes
como você quer, quando quer que uma situação (exemplo) o LED acenda e outra
situação o LED apague, porque se não pode gerar conflito dependendo da
programação.
Na segunda parte da programação, ai usei 4 botões para isso, cada um vai
ligar uma única cor (sem fazer misturas de cores) e o quarto botão vai ser um
botão de Reset que vai apagar todas as cores independendo de qual cor esteja
acesso.
Como falei
um pouco antes, eu tive que detalhar a programação falando como eu queria que funcionasse,
que se eu aperta o botaoR, quero que só a cor vermelha acenda fique HIGH e
outras LOW. Caso aperte o botaoG quero que só o verde acenda e os outros
apaguem e caso eu aperte o botaoB só o azul fique HIGH e o resto LOW. Mas tipo
fazendo isso em qualquer sequencia de quando eu apertar o botão, ai no
botaoReset como quero que apague tudo deixei claro que quando eu aperta-se o
botão, todos vão se apagar, vão ficar LOW.
Vídeo:
Até mais... espero que tenham entendido mesmo, qualquer duvida já sabem!!!
Como já vimos já usamos o LED normal, agora podemos brincar com o LED RGB. Mas o que seria esse LED RGB é praticamente 3 LEDs com único encapsulamento que possui as cores: Vermelho (R), Verde (G) e Azul (B).
Com esse LED podemos gerar até 16.581.375 cores diferentes usando porta PWM do arduino. Mas lembrando que precisa colocar uma resistência em cada terminal, eu usei 470ohm. O circuito fica mais ou menos isso:
A programação também não tem nada de mais praticamente é idêntica ao LED normal (Blink) sendo que em vez de programar 1 LED, programei 3 LEDs. Nessa programação a seguir usei a sequência de cores como a Tabela Verdade com 3 Variáveis, tanto na programação Básica de liga e desliga o LED e na programação for para ligar e desligar lentamente.
Programação:
int r = 11;
int g = 10;
int b = 9;
void setup()
{
pinMode(r, OUTPUT);
pinMode(g, OUTPUT);
pinMode(b, OUTPUT);
}
void loop()
{
// Programação Liga e Desliga os LED's
int M = 255;
int m = 0;
int t = 15;
// Tudo apagado
analogWrite(r, m);
analogWrite(g, m);
analogWrite(b, m);
delay(1000);
// Vermelho acesso
analogWrite(r, M);
analogWrite(g, m);
analogWrite(b, m);
delay(1000);
// Verde acesso
analogWrite(r, m);
analogWrite(g, M);
analogWrite(b, m);
delay(1000);
// Vermelho e Verde acesso
analogWrite(r, M);
analogWrite(g, M);
analogWrite(b, m);
delay(1000);
// Azul acesso
analogWrite(r, m);
analogWrite(g, m);
analogWrite(b, M);
delay(1000);
// Azul e Vermelho acesso
analogWrite(r, M);
analogWrite(g, m);
analogWrite(b, M);
delay(1000);
// Azul e Verde acesso
analogWrite(r, m);
analogWrite(g, M);
analogWrite(b, M);
delay(1000);
//Todos acessos
analogWrite(r, M);
analogWrite(g, M);
analogWrite(b, M);
delay(1000);
//Programação Acende e Apaga os LED's lentamente
// Vermelho
for(int i=0; i<255; i++)
{
analogWrite(r, i);
analogWrite(g, m);
analogWrite(b, m);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, i);
analogWrite(g, m);
analogWrite(b, m);
delay(t);
}
// Verde
for(int i=0; i<255; i++)
{
analogWrite(r, m);
analogWrite(g, i);
analogWrite(b, m);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, m);
analogWrite(g, i);
analogWrite(b, m);
delay(t);
}
//Vermelho e Verde
for(int i=0; i<255; i++)
{
analogWrite(r, i);
analogWrite(g, i);
analogWrite(b, m);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, i);
analogWrite(g, i);
analogWrite(b, m);
delay(t);
}
//Azul
for(int i=0; i<255; i++)
{
analogWrite(r, m);
analogWrite(g, m);
analogWrite(b, i);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, m);
analogWrite(g, m);
analogWrite(b, i);
delay(t);
}
//Azul e Vermelho
for(int i=0; i<255; i++)
{
analogWrite(r, i);
analogWrite(g, m);
analogWrite(b, i);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, i);
analogWrite(g, m);
analogWrite(b, i);
delay(t);
}
//Azul e Verde
for(int i=0; i<255; i++)
{
analogWrite(r, m);
analogWrite(g, i);
analogWrite(b, i);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, m);
analogWrite(g, i);
analogWrite(b, i);
delay(t);
}
//Todos
for(int i=0; i<255; i++)
{
analogWrite(r, i);
analogWrite(g, i);
analogWrite(b, i);
delay(t);
}
for(int i=255; i>0; i--)
{
analogWrite(r, i);
analogWrite(g, i);
analogWrite(b, i);
delay(t);
}
}
Para começar a explicar essa programação, primeiramente logo no inicio do loop, declarei 3 variáveis, M que seria o valor máximo (255) para as portas pwm, m que seria o valor mínimo (0) e t que seria o tempo que usei no delay na programação dor for. A pequena diferença da programação liga e desliga o LED, seria que geralmente usamos digitalWrite(pin, HIGH ou LOW) usei o analogWrite(pin, 0-255), apesar que, poderia ter usado o primeiro, mas para fazer a programação do LED acender e apagar lentamente precisamos usar portas pwm para controlar a corrente que iria passar no terminal do componente. Na programação for para cada LED usei 2 programações, 1 para acender e outra para acender lentamente, e claro fazendo as combinações como citei fazendo por Tabela Verdade.
Mas também podemos brincar com esse LED usando um LDR, a cada valor que o LDR detectar pode acender uma cor diferente, só para começar (sem mistura de cores), ai quem gosta de dificuldade a cada valor seria uma cor diferente mas já misturando todas as cores (ai usaria map na programação, futuramente explicarei).
Na filmagem a seguir, a câmera não mostra muito a cores quando se misturam, por isso na segunda filmagem coloquei uma folha de papel oficio porque dava para ver melhor as mistura de cores.
Vídeo:
Espero que tenham entendido, qualquer coisa já sabe só comentar. Até mais...
Bom pessoal, ao decorrer da semana irei fazer edições nas postagens colocando videos, feitos por mim, de cada projeto. Não coloquei antes porque não tinha câmera, agora você poderão acompanhar os projetos vendo também e não só lendo.
Agora com a câmera irei postar o meu projeto de robótica, inicialmente chamado de ProtoTanque. Mas a programação feita por mim (porém como todos tem dúvidas, quem me ajudou foi o Carlos Eduardo que também participa do grupo ArduInRio).
OBS.: Quando alguém estiver com duvidas pode pergunta a mim deixando como comentário no blog ou mandar um e-mail para o meu amigo Antonio, faz parte do grupo de robótica de onde eu estudo, o e-mail dele é : carvalho.sistema@gmail.com
A pedido do pessoal do CEFET, hoje houve uma palestra que eu e a minha turma fizemos com a organização da Desiree.
No blog já possui duas apostilas falando de cada função, estrutura falando da parte de programação, isso tem na segunda postagem do blog. Segunda Postagem nome dos links são Programação Arduino e Arduino.
Essa nova apostila é para o pessoal pode estudar a montagem de projetos simples, bem básicos e entender a programação e ir evoluindo com o arduino. Arduino Experiments Guide.
Espero que goste dessa apostila, da para estudar bem o arduino em cima dessa apostila, mas ela é toda em inglês. Até mais...