sexta-feira, 27 de outubro de 2017

Vigésimo primeiro encontro - Sensores

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


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);
}


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