Acendendo LED sem acender o LED
Mas hein? Que título é esse?
O título é meio louco, mas a ideia é interagir com o arduino sem qualquer conectividade física entre o Arduino e o interruptor que irá ativar o LED. Bora ver como faz?
E, pensando mais pro lado troll da coisa, até pregar umas peças no futuro...
O código é o seguinte:
int pin = A0; //Pino analógico que vou usar
int refresh = 250; //Taxa de atualização
int led = 8; //Pino do LED que vou comandar
void ledOnOff(int val) { //Acende ou apaga o LED
if(val >= 400) { //Se a luz for maior ou igual a 400...
digitalWrite(led, HIGH); //Acende o LED
} else { //Caso contrário
digitalWrite(led, LOW); //Apaga o LED
}
}
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT); //Esse LED vive aceso :-/
digitalWrite(13, LOW);
pinMode(led, OUTPUT);
}
void loop() {
int value = analogRead(pin); //Lê o valor do sensor
//Serial.println(value); //Escreve no serial monitor
ledOnOff(value); //Toma providência quanto a ação
delay(refresh); //Espera um tempo
}
Note que eu comentei a linha que envia o valor para o serial monitor porque só precisei disso uma vez: identificado o valor da luminosidade da minha bancada (por volta de 400), não vou precisar mais disso.
Veja o vídeo:
O título é meio louco, mas a ideia é interagir com o arduino sem qualquer conectividade física entre o Arduino e o interruptor que irá ativar o LED. Bora ver como faz?
Usando sensor de luz
O sensor de luz é bacana: quando tem muita luz a energia passa na boa, mas quando tem pouca luz a energia tem dificuldades de passar. Um sensor de luz é um resistor sensível a luz, só isso, e vai me ajudar a bolar um circuito pra acender o tal LED usando qualquer coisa que emita luz: a tela do celular, a lâmpada da oficina, o abajur da bancada, enfim.E, pensando mais pro lado troll da coisa, até pregar umas peças no futuro...
O conceito e o circuito
Vou usar uma das portas analógicas pra ler a tensão do circuito e, se o valor lido for maior ou igual a um determinado valor, o LED acende; do contrário, apaga. Para o sensor, vou usar um resistor de 10K para limitar a tensão a valores bem baixos. Para o LED, um de 300 ohms resolve.O código é o seguinte:
int pin = A0; //Pino analógico que vou usar
int refresh = 250; //Taxa de atualização
int led = 8; //Pino do LED que vou comandar
void ledOnOff(int val) { //Acende ou apaga o LED
if(val >= 400) { //Se a luz for maior ou igual a 400...
digitalWrite(led, HIGH); //Acende o LED
} else { //Caso contrário
digitalWrite(led, LOW); //Apaga o LED
}
}
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT); //Esse LED vive aceso :-/
digitalWrite(13, LOW);
pinMode(led, OUTPUT);
}
void loop() {
int value = analogRead(pin); //Lê o valor do sensor
//Serial.println(value); //Escreve no serial monitor
ledOnOff(value); //Toma providência quanto a ação
delay(refresh); //Espera um tempo
}
Note que eu comentei a linha que envia o valor para o serial monitor porque só precisei disso uma vez: identificado o valor da luminosidade da minha bancada (por volta de 400), não vou precisar mais disso.
Veja o vídeo:
Comentários
Postar um comentário