Array de LEDs controlado por LDR

Todos se lembram do efeito de luz do KIT, o carro falante conduzido pelo Michael Knight. Mostro aqui um video do mesmo efeito mas em que a velocidade do movimento da luz é controlada por uma LDR. É um circuito simples em que é usada uma entrada analógica para receber a informação da LDR e fazer variar o tempo de passagem entre LEDs.

 

Video

 

Sketch

// Project 6 - Interactive LED Chase Effect
//
// Adptado do tutorial Arduino do Earthshine Electronics.
//
// 20101120 Luis Sismeiro

// Create array for LED pins
byte ledPin[] = {3, 5, 6, 9, 10, 11};
int ledDelay; // delay betwen changes
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
int potPin = 0;    // select the input pin for the LDR

void setup() {
 // set all pins to output
 for (int x=0; x<7; x++) {
 pinMode (ledPin[x], OUTPUT); }
 changeTime = millis();
}

void loop() {
 ledDelay = analogRead(potPin);    // read the value from the LDR
 // if it has been ledDelay ms since last change
 if ((millis() - changeTime) > ledDelay) {
 changeLED();
 changeTime = millis();
 }
}

void changeLED() {
 // turn off all LED's
 for (int x=0; x<7; x++) {
 digitalWrite(ledPin[x], LOW);
 }
 // turn on the current LED
 digitalWrite(ledPin[currentLED], HIGH);
 // increment by the direction value
 currentLED += direction;
 // change direction if we reach the end
 if (currentLED == 5) {direction = -1;}
 if (currentLED == 0) {direction = 1;}
}

Etiquetas: ,

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s


%d bloggers like this: