Os sensores são dispositivos eletrônicos que tem basicamente duas funções: detectar um estímulo e responder a esse estímulo. Há vários tipos de sensores que detectam as mais variadas quantidades de estímulos: sensores de movimento, cheiro, luz, fumaça, e até sensor de cor. A grande sacada está justamente no que você pode fazer com a resposta que o sensor envia. As possibilidades são infinitas!
Sabe a luz que acende quando alguém bate palmas? Sensor de Som. Por baixo dos panos é um programa que fica sempre alerta, esperando detectar o som em um nível pré determinado via programação. Se este nível for atingido, o sensor retorna OK para o programa que toma a ação de, neste caso, ligar uma luz.
Tem um sensor muito bacana que é o LDR, sensor de luminosidade.
É um componente cuja resistência varia de acordo com a intensidade da luz. Quanto mais luz incidir sobre ele, menor a resistência. Pode ser usado em alarmes, luzes de emergência, etc.
Pois bem. Hoje vamos usar esse sensor para enganar o Dinossauro do Google.
Um parênteses. O dinossauro do Google (T-Rex Game) é um jogo integrado ao navegador Google Chrome. O jogo foi criado por Sebastien Gabriel em 2014 e pode ser facilmente acessado pressionando a barra de espaço quando estiver offline no Chrome.
A ideia aqui é fazer justamente como no vídeo: fazer o nosso dinossauro pular sozinho todos os obstáculos.
Vamos precisar de:
1 Arduino Uno R3 (ou similar)
1 Sensor de Luminosidade LDR
1 Resistor de 10 kΩ
1 Micro Servo 9g
O código é extremamente simples:
Incluindo as bibliotecas Arduino e do Micro Servo:
#include <Arduino.h>
#include <Servo.h>
Instalando o Micro Servo e o Sensor LDR:
Servo servo_2;
void setup()
{
pinMode(A0, INPUT); //Sensor LDR
Serial.begin(9600);
servo_2.attach(2); //Micro Servo
}
É neste método que a mágica acontece: O Sensor LDR ligado na porta A0 irá ler a quantidade de luz a que ele está exposto. Se esse número for abaixo de 300 (ou seja, se um obstáculo passou pelo sensor), o Micro Servo é acionado e aperta a barra de espaço:
void acionaServo()
{
Serial.println(analogRead(A0));
if (analogRead(A0) < 300) {
servo_2.write(60);
delay(150);
} else {
servo_2.write(0);
}
}
void loop()
{
acionaServo();
}
O Sketch do projeto ficou assim:
A montagem não tem segredos: basta posicionar o sensor diretamente no Monitor. Eu coloquei bem a esquerda. O Micro servo eu colei com uma fita 3M ao lado da barra de espaço. Agora é só acertar a distância em que o Micro Servo é acionado.
Quem já brincou com este jogo, sabe que também tem obstáculos onde é preciso abaixar, ao invés de pular. Eai, o que fazer?
Implemente, modifique!
Código fonte disponível no meu GitHub
Se quiser saber mais sobre as possibilidades do sensor LDR, aqui está o Datasheet.
E se ficou alguma dúvida, manda seu comentário.
Top comments (0)