Conhecendo sensores - LDR - Resistor dependente de luz
Salve turma,
Nesta data, 20/10/2017, brincamos com um novo componente, o LDR. Um componente que altera suas propriedades elétricas na presença da luz. Muito utilizado em circuitos de iluminação automática.
Nossa atividade:
Desenvolver um circuito que aumenta a luminosidade quando o um ambiente escurece.
Os alunos foram divididos em grupos que pesquisaram e montaram os circuitos
Montagem eletrônica:
Criar um circuito similar, análogo ao que está abaixo no laboratório virtual tinkercad:
https://d10zxokiwapyap.cloudfront.net/circuits/3wGBSv0XBCw-eac5a5d5-caca-4547-906c-4976467675ce-snapshot-thumb
programação
Criar um código funcional para o circuito
//Sensor de luz com LDR
int ledPin = 6; //Led no pino
int ldrPin = A0; //LDR no pino analígico a0
int ldrValor = 0; //Valor lido do LDR
void setup() {
pinMode(ledPin,OUTPUT); //define a porta 6 como saída
Serial.begin(9600); //Inicia a comunicação serial
}
void loop() {
///ler o valor do LDR
ldrValor = analogRead(ldrPin); //O valor lido será entre 0 e 1023
int valorMap=map(ldrValor,0,1023,0,255); // converte o valor lido para a faixa de a a 255
analogWrite(ledPin,valorMap); //
//imprime o valor lido do LDR no monitor serial
Serial.println(ldrValor);
Serial.println(valorMap);
delay(10);
}
void simNao(){
//se o valor lido for maior que 500, liga o led
if (ldrValor>= 800) digitalWrite(ledPin,HIGH);
// senão, apaga o led
else digitalWrite(ledPin,LOW);
}
Façam os testes que acharem interessantes
Abraço a todo
sexta-feira, 27 de outubro de 2017
quinta-feira, 19 de outubro de 2017
Vigésimo encontro - funções (continuação)
Trabalhando com funções (programação)
Olá turma no nosso encontro, dia 6/10/2017, continuamos a conhecer um pouco mais de programação através de nosso experimentos com funções.
Vimos que elas são um bloco de códigos e as utilizamos para situações repetitivas de forma a deixar nosso código mais limpo e legível.
Neste encontro também solucionamos o problema de senha de alguns alunos que não estavam conseguindo cadastrar-se no site do tinkercad.
Revimos os conceitos de variável e estruturas de repetição; comando if.
Segue abaixo alguns links para vocês poderem estudar e tirar dúvidas
Caso queiram um bom canal no Youtube sobre arduino vejam estas aulas: Click
Abraço a todos!
sexta-feira, 6 de outubro de 2017
Código completo com sensor e funções piscar
Trabalhando com sensores - funções
// Conexão Ping))) conectar pino do arduino ao sensor
int sinal=8; //indica qual pino do arduino o sensor esta ligado
int distancia; //gurada o valor da distancia medida
unsigned long pulseduration=0; //duração do pulso
//conexão dos leds
int led1=13;
int led2=12;
int led3=11;
int led4=10;
//função roda apenas quando o arduino é ligado e configura
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(sinal, OUTPUT); //configura o pino de sinal como saida
Serial.begin(9600); //faz a comunicação do arduino com o computador via usb
}
void loop()
{
// le o sensor Ping)))
medirDistancia();
// divideo o valor do pulso pela metade
pulseduration=pulseduration/2;
// now convert to centimetres. We're metric here people...
//converte a duranção do pulso em centimetros e armazena na variavel distância
distancia = int(pulseduration/29);
// Display on serial monitor
Serial.print("Distance - ");
Serial.print(distancia);
Serial.println(" cm");
//acender();
if(distancia<100){
piscar2();
} else { piscar();}
delay(100);
}
//função para calcular a distancia
void medirDistancia()
{
// set pin as output so we can send a pulse
//definir pino sinal como saída para que possamos enviar um pulso
pinMode(sinal, OUTPUT);
// set output to LOW
digitalWrite(sinal, LOW);
delayMicroseconds(5);
// now send the 5uS pulse out to activate Ping)))
//agora envie o pulso de 5uS para ativar Ping
digitalWrite(sinal, HIGH);
delayMicroseconds(5);
digitalWrite(sinal, LOW);
// now we need to change the digital pin
// to input to read the incoming pulse
//agora precisamos mudar o pino digital
// para inserir para ler o pulso recebido
pinMode(sinal, INPUT);
// finally, measure the length of the incoming pulse
//finalmente, medimos o comprimento do pulso recebido
pulseduration=pulseIn(sinal, HIGH);
}
//--------------------
//função para acender os led conforme a distancia
void acender(){
if(distancia<30){
digitalWrite(led1, HIGH);}else{digitalWrite(led1, LOW);
}
if(distancia<60){ digitalWrite(led2, HIGH);}else{digitalWrite(led2, LOW);}
if(distancia<90){ digitalWrite(led3, HIGH);}else{digitalWrite(led3, LOW);}
if(distancia<120){ digitalWrite(led4, HIGH);}else{digitalWrite(led4, LOW);}
}
//função piscar leds
void piscar(){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(500);
}//fim da funcçãp piscar
//função piscar sequencialmente leds
void piscar2(){
int tempo=50;
digitalWrite(led1, HIGH);
delay(tempo);
digitalWrite(led1, LOW);
delay(tempo);
digitalWrite(led2, HIGH);
delay(tempo);
digitalWrite(led2,LOW);
delay(tempo);
digitalWrite(led3, HIGH);
delay(tempo);
digitalWrite(led3, LOW);
delay(tempo);
digitalWrite(led4, HIGH);
delay(tempo);
digitalWrite(led4,LOW);
delay(tempo);
}
// Conexão Ping))) conectar pino do arduino ao sensor
int sinal=8; //indica qual pino do arduino o sensor esta ligado
int distancia; //gurada o valor da distancia medida
unsigned long pulseduration=0; //duração do pulso
//conexão dos leds
int led1=13;
int led2=12;
int led3=11;
int led4=10;
//função roda apenas quando o arduino é ligado e configura
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(sinal, OUTPUT); //configura o pino de sinal como saida
Serial.begin(9600); //faz a comunicação do arduino com o computador via usb
}
void loop()
{
// le o sensor Ping)))
medirDistancia();
// divideo o valor do pulso pela metade
pulseduration=pulseduration/2;
// now convert to centimetres. We're metric here people...
//converte a duranção do pulso em centimetros e armazena na variavel distância
distancia = int(pulseduration/29);
// Display on serial monitor
Serial.print("Distance - ");
Serial.print(distancia);
Serial.println(" cm");
//acender();
if(distancia<100){
piscar2();
} else { piscar();}
delay(100);
}
//função para calcular a distancia
void medirDistancia()
{
// set pin as output so we can send a pulse
//definir pino sinal como saída para que possamos enviar um pulso
pinMode(sinal, OUTPUT);
// set output to LOW
digitalWrite(sinal, LOW);
delayMicroseconds(5);
// now send the 5uS pulse out to activate Ping)))
//agora envie o pulso de 5uS para ativar Ping
digitalWrite(sinal, HIGH);
delayMicroseconds(5);
digitalWrite(sinal, LOW);
// now we need to change the digital pin
// to input to read the incoming pulse
//agora precisamos mudar o pino digital
// para inserir para ler o pulso recebido
pinMode(sinal, INPUT);
// finally, measure the length of the incoming pulse
//finalmente, medimos o comprimento do pulso recebido
pulseduration=pulseIn(sinal, HIGH);
}
//--------------------
//função para acender os led conforme a distancia
void acender(){
if(distancia<30){
digitalWrite(led1, HIGH);}else{digitalWrite(led1, LOW);
}
if(distancia<60){ digitalWrite(led2, HIGH);}else{digitalWrite(led2, LOW);}
if(distancia<90){ digitalWrite(led3, HIGH);}else{digitalWrite(led3, LOW);}
if(distancia<120){ digitalWrite(led4, HIGH);}else{digitalWrite(led4, LOW);}
}
//função piscar leds
void piscar(){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(500);
}//fim da funcçãp piscar
//função piscar sequencialmente leds
void piscar2(){
int tempo=50;
digitalWrite(led1, HIGH);
delay(tempo);
digitalWrite(led1, LOW);
delay(tempo);
digitalWrite(led2, HIGH);
delay(tempo);
digitalWrite(led2,LOW);
delay(tempo);
digitalWrite(led3, HIGH);
delay(tempo);
digitalWrite(led3, LOW);
delay(tempo);
digitalWrite(led4, HIGH);
delay(tempo);
digitalWrite(led4,LOW);
delay(tempo);
}
Obs.: As funções que vc não for utilizar comente-as, ou seja, coloque duas barras // antes da função.
Décimo nono encontro - sensores e funções
Trabalhando com sensores e funções (programação)
Olá turma no encontro do dia 29/09/17
Fizemos experimentos com funções de programação para tornar nosso código interessante.
Criamos funções para piscar um 4 leds simultaneamente e sequencialmente conforme uma distancia pré definida por nós.
Segue abaixo o código
//função piscar leds
void piscar(){
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
delay(500);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
delay(500);
}
//função piscar sequencialmente leds
void piscar2(){
int tempo=50;
digitalWrite(led1, HIGH);
delay(tempo);
digitalWrite(led1, LOW);
delay(tempo);
digitalWrite(led2, HIGH);
delay(tempo);
digitalWrite(led2,LOW);
delay(tempo);
digitalWrite(led3, HIGH);
delay(tempo);
digitalWrite(led3, LOW);
delay(tempo);
digitalWrite(led4, HIGH);
delay(tempo);
digitalWrite(led4,LOW);
delay(tempo);
}
Não esqueçam de colocar estas funções no final do código principal e para usá-las basta chamá-las dentro da função loop, ou seja, dentro de void loop () em sua última linha
Abraço
Assinar:
Comentários (Atom)