Caderno de
Atividades 1
2
1º Experimento
Objetivo: Acender um LED com uma push button.
Funcionamento: Ao se pressionar a push Button o LED deverá acender, e caso ela seja solta o LED deverá apagar.
Procedimentos:
(1) Monte o circuito no protoboard da maneira que segue abaixo, uma ob-servação: para essas primeiras aplicações não é necessário fonte externa, pois o próprio computador
fornece energia ao Arduino, antes de ligar no computador verifique todas as ligações no-vamente;
(2) Com o circuito montado e verificado conecte o Arduino na USB do computador, abra o programa e copie o código descrito na próxima página:
3
int Pinoled = 13; //led no pino 13 int Botao = 2; //botao no pino 2
int EstadoBotao = 0; //Variável para ler o status do pushbutton void setup()
{
pinMode(Pinoled, OUTPUT); //Pino do led será saída
pinMode(Botao, INPUT); //Pino com botão será entrada }
void loop() {
EstadoBotao = digitalRead(Botao); /*
novo estado do botão vai ser igual ao que Arduino ler no pino onde está o botão. Poderá ser ALTO (HIGH)se o botão estiver Pressionado, ou BAIXO (LOW),se o botão estiver solto
*/
if (EstadoBotao == HIGH) //Se botão estiver pressionado (HIGH) {
digitalWrite(Pinoled, HIGH); // acende o led do pino 13. }
else //se não estiver pressionado {
digitalWrite(Pinoled, LOW); //deixa o led do pino 13 apagado }
}
(3) Verifique se o código não possui erros, caso tudo esteja devidamente preparado é só pressionar o botão de gravar. É necessário que você siga to-dos os passos a risca para não correr o risco de danificar a plataforma.
Para pensar...
Através do primeiro experimento pense como seria o programa caso quisés-semos inverter o estado do LED, ou seja, ele só seria ligado caso a chave não estivesse pressionada, e caso contrário o LED apagaria.
4
2º Experimento
Objetivo: Controlar 3 LED com 3 botões.
Funcionamento: Iremos seguir o mesmo princípio do experimento anteri-or, mas agora com 3 LED e 3 push buttons. Cada botão irá acionar um único LED quando for pressionado, e irá desliga-lo caso contrário.
Procedimentos:
(1) Monte o circuito no protoboard da maneira que segue abaixo, note que o circuito será praticamente o mesmo, mas com 2 chaves e 2 LED a mais, an-tes de ligar o Arduino no computador verifique todas as ligações novamen-te;
5
(2) Com o circuito montado e verificado conecte o Arduino na USB do com-putador, abra o programa e copie o código descrito abaixo:
int ledPin1 = 13; //Led 1 ligado no pino 13 int ledPin2 = 12 //Led 2 ligado no pino 12 int ledPin3 = 11; //Led 3 ligado no pino 11 int Botao1 = 2; //Botão 1 ligado no pino 2 int Botao2 = 3; //Botão 2 ligado no pino 3 int Botao3 = 4; //Botão 3 ligado no pino 4 int EstadoBotao1 = 0; //Botão 1 desligado
int EstadoBotao2 = 0; //Botão 2 desligado int EstadoBotao3 = 0; //Botão 3 desligado
void setup(){ //Configurações dos pinos
pinMode(ledPin1, OUTPUT); //pino do Led 1 configurado como saída pinMode(Botao1, INPUT); //pino do botão 1 configurado como entrada pinMode(ledPin2, OUTPUT); //pino do led 2 configurado como saída pinMode(Botao2, INPUT); //pino do botão 2 configurado como entrada pinMode(ledPin3, OUTPUT); //pino do led 3 configurado como saída pinMode(Botao3, INPUT); //pino do botão 3 configurado como entrada }
void loop(){
EstadoBotao1 = digitalRead(Botao1); // Lê o estado do botão 1 EstadoBotao2 = digitalRead(Botao2); // Lê o estado do botão 2 EstadoBotao3 = digitalRead(Botao3); // Lê o estado do botão 3 if (EstadoBotao1 == HIGH){ //Se o botão 1 está pressionado digitalWrite(ledPin1, HIGH); //acende o led 1
}
else{ //Se não digitalWrite(ledPin1, LOW); //apaga o led 1 }
if (EstadoBotao2 == HIGH){ //Se o botão 2 está pressionado digitalWrite(ledPin2, HIGH); //acende led 2
}
else{ //Se não digitalWrite(ledPin2, LOW); //apaga o led 2 }
if (EstadoBotao3 == HIGH){ //Se o botão 3 está pressionado digitalWrite(ledPin3, HIGH); //acende o led 3
}
else{ //Se não digitalWrite(ledPin3, LOW); //apaga led 3 }
6 (3) Verifique se o código não possui erros, caso tudo esteja devidamente preparado é só pressionar o botão de gravar. É necessário que você siga to-dos os passos a risca para não correr o risco de danificar a plataforma. Note que neste experimento o programa apesar de parecer mais complexo nada mais é do que uma ampliação do primeiro.
Para pensar...
Com base no experimento 2 altere o código para que a primeira chave, da esquerda para a direita, acenda o LED verde, a segunda o LED amarelo, e o LED vermelho só poderá ser aceso com o segundo e o terceiro botão pres-sionados ao mesmo tempo.
Exercitando o conhecimento
Com o conhecimento adquirido nesse encontro elabore a so-lução para os seguintes problemas:
1 – Com base no experimento 2, altere o código de programação, para que sejam trocados de lugar os pinos onde estão conectados os LED - troque para os pinos 8, 9, e 10) e as chaves - para os pinos 5, 6, 7.
2 - Você tem 4 botões e 4 LED, sendo que cada botão será responsá-vel por acender uma quantidade especifica de LED
simultanea-mente, sendo o 1º botão responsável por acender o primeiro LED,
o segundo botão responsável por acender os 2 primeiros LED, o terceiro botão responsável por acender os 3 primeiros LED, e o últi-mo que irá acender todos os LED. Implemente o código desse pro-grama.
7
3º Experimento
Objetivo: Controlar 1 Led com um botão, utilizando a estrutura “while” .
Funcionamento: Enquanto uma chave “push button” estiver pressionada o led se manterá aceso.
Procedimentos:
(1) Monte o circuito no protoboard da maneira que segue abaixo, note que o circuito será o mesmo do primeiro experimento, e o funcionamento tam-bém, com a diferença que será utilizada a estrutura “while” em vez do “if”, antes de ligar o Arduino no computador verifique todas as ligações nova-mente:
8
(2) Com o circuito montado e verificado conecte o Arduino na USB do com-putador, abra o programa e copie o código descrito abaixo:
(3) É importante observar nesse experimento que, para podermos sair da condição “while”, é necessário alterar o valor da variável EstadoBotao den-tro do próprio “while”, pois caso contrário ele ficará em uma volta eterna.
int Pinoled = 13; //led no pino 13 int Botao = 2; //botao no pino 2
int EstadoBotao = 0; //Variável para ler o status do pushbutton void setup()
{
pinMode(Pinoled, OUTPUT); //Pino do led será saída
pinMode(Botao, INPUT); //Pino com botão será entrada } void loop() { EstadoBotao = digitalRead(Botao); while(EstadoBotao==HIGH) { digitalWrite(Pinoled, HIGH); EstadoBotao = digitalRead(Botao); } digitalWrite(Pinoled,LOW); }
9
4º Experimento
Objetivo: Controlar uma sequência de leds com um botão, utilizando a es-trutura “while”.
Funcionamento: Enquanto uma chave “push button” estiver pressionada um conjunto de 5 leds irá se acender sequencialmente, e permanecerá acesa enquanto o botão se mantiver pressionado, caso contrário todos os leds se apagam.
Procedimentos:
(1) Monte o circuito no protoboard da ma-neira que segue abai-xo, e na programação iremos utilizar a fun-ção “delay();” que ser-ve para gerar uma pausa no programa, fa-remos isso para po-dermos visualizar os led se acendendo pau-sadamente, antes de ligar o Arduino no computador verifique todas as ligações nova-mente:
10 int l5 = 13; int l4 = 12; int l3 = 11; int l2 = 10; int l1 = 9;
int Botao = 2; //botao no pino 2
int EstadoBotao = 0; //Variável para ler o status do pushbutton void setup(){
pinMode(l1, OUTPUT); //Pino do led será saída pinMode(l2, OUTPUT); //Pino do led será saída pinMode(l3, OUTPUT); //Pino do led será saída pinMode(l4, OUTPUT); //Pino do led será saída pinMode(l5, OUTPUT); //Pino do led será saída
pinMode(Botao, INPUT); //Pino com botão será entrada } void loop() { EstadoBotao = digitalRead(Botao); while(EstadoBotao==HIGH) { digitalWrite(l1, HIGH); delay(100); digitalWrite(l2, HIGH); delay(100); digitalWrite(l3, HIGH); delay(100); digitalWrite(l4, HIGH); delay(100); digitalWrite(l5, HIGH); delay(100); EstadoBotao = digitalRead(Botao); } digitalWrite(l1,LOW); digitalWrite(l2,LOW); digitalWrite(l3,LOW); digitalWrite(l4,LOW); digitalWrite(l5,LOW); }
11 (3) Novamente fizemos a leitura do estado do botão dentro do “while”, para podermos sair dessa estrutura quando o botão for solto.
Para pensar...
Dessa vez altere o código para que o led anterior apague quando o led se-guinte acender, e quando chegar no último led ele retorna ao primeiro repe-tindo a sequência.
12
5º Experimento
Objetivo: Controlar uma sequência de leds com um botão, utilizando a es-trutura “while” e “for”.
Funcionamento: O circuito será o mesmo anterior e o funcionamento tam-bém, enquanto uma chave “push button” estiver pressionada um conjunto de 5 leds irá se acender sequencialmente, e permanecerá acesa enquanto o botão se mantiver pressionado, caso contrário todos os leds se apagam. A diferença agora é que iremos utilizar a estrutura “for”, a qual deixará o pro-grama mais curto.
Procedimentos:
(1) Monte o circuito no protoboard da maneira que segue abaixo, e na programação iremos u-tilizar a função “delay ();” que serve para ge-rar uma pausa no pro-grama, faremos isso pa-ra podermos visualizar os led se acendendo pausadamente, antes de ligar o Arduino no com-putador verifique todas as ligações novamente:
13 int l5 = 13; int l4 = 12; int l3 = 11; int l2 = 10; int l1 = 9;
int Botao = 2; //botao no pino 2
int EstadoBotao = 0; //Variável para ler o status do pushbutton int led;
void setup() {
pinMode(l1, OUTPUT); //Pino do led será saída pinMode(l2, OUTPUT); //Pino do led será saída pinMode(l3, OUTPUT); //Pino do led será saída pinMode(l4, OUTPUT); //Pino do led será saída pinMode(l5, OUTPUT); //Pino do led será saída
pinMode(Botao, INPUT); //Pino com botão será entrada } void loop() { EstadoBotao = digitalRead(Botao); while(EstadoBotao==HIGH) { for(led=9; led<=13;led++){ digitalWrite(led, HIGH); delay(100); } EstadoBotao = digitalRead(Botao); } for(led=9;led<=13;led++) { digitalWrite(led, LOW); } }
14 (3) Repare que nosso programa diminuiu consideravelmente seu tamanho, isso devido a nova estrutura “for”, que nos permite repetir a mesma ação di-versas vezes, sem que precisemos reescrever tudo.
Para pensar...
Aumente seu circuito para 10 leds, e controle-os da mesma forma, mas ago-ra acionando-os com 2 botões em vez de um, ou seja, a sequencia só será a-cionada quando 2 botões estiverem pressionados ao mesmo tempo.
15
6º Experimento
Objetivo: Acionar um buzzer variando seu som emitido, através da estrutu-ra “for”.
Funcionamento: Uma variável chamada tom irá iniciar em zero, sendo ela a responsável por definir a frequência do buzzer, e irá sendo incrementada ao longo do tempo, alterando o som do mesmo.
16 int Buzzer = 9; int x=10; int tom = 0; void setup() { pinMode(Buzzer, OUTPUT); } void loop() { for(tom=0; tom<=1000;tom++){
digitalWrite(Buzzer, HIGH); // Liga buzzer
delayMicroseconds(tom); // Espera o tempo proporcional ao comprimento de onda da nota musical em microsegundos
digitalWrite(Buzzer, LOW); // Desliga buzzer
delayMicroseconds(tom); // Espera o tempo proporcional ao comprimento de onda da nota musical em microsegundos
if(tom==1000) { tom=0; } } }
17 (3) Note que dentro do for é utilizado um “if” para verificar quando a variá-vel tom chega no seu máximo, quando isso ocorre ela é reiniciada e volta a zero, colocando a frequência do buzzer em seu máximo.
Para pensar...
Altere o código acima para reproduzir o som do buzzer ao contrário come-çando com a frequência mínima, em vez de máxima como era o anterior, di-ca: a variável tom deve ser tratada de maneira diferente.
18
Oficinas Tecnológicas para
alunos do Ensino Médio
Prof. Dr. Leonardo Mesquita
[email protected] Coordenador do Projeto
Prof. Dr. Galeno José de Sena
Prof. Dr. Marco Aurélio Alvarenga Monteiro
Prof. José Marcelo de A. Wendling Jr.
Felipe Barbosa da Silva Ismael de Almeida Júnior Letícia Miranda de França Mota
Renan Moura Santana Samuel José de Carvalho