Boa tarde!

   Bom, sou principiante no uso do arduino e estou ainda fazendo aqueles tutoriais para iniciantes... Enfim, estou tentando fazer, com que dez LED's se acendam em pares das extremidades até o centro, e depois retornando (efeito de perseguição), com o uso de um potenciômetro para regular o Delay entre o acender e apagar das LED's. Meu código para isso está com problema, por favor, me digam onde está o meu erro!

byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int ledDelay;
int direction = 1;
int currentLED = 0;
int currentLEd = 9;
unsigned long changeTime;
int potPin = 2;
void setup () {
for (int x=0; x<5; x++) {
pinMode (ledPin[x], OUTPUT); }
for (int x=9; x>4; x--) {
pinMode (ledPin[x], OUTPUT); } 
changeTime = millis();
}
void loop() {
ledDelay = analogRead (potPin);
if ((millis() - changeTime)> ledDelay) {
changeLED();
changeTime = millis(); }
}
void changeLED() {
for (int x=0; x<5; x++) {
digitalWrite (ledPin [x], LOW);
}
for (int x=9; x>4; x--) {
digitalWrite (ledPin [x], LOW);
}
for (int x=0; x<5; x++)
digitalWrite (ledPin[currentLED], HIGH);
currentLED += direction;
if (currentLED == 0) {direction = 1;}
if (currentLED == 4) {direction = -1;}
for (int x=9; x>4; x--) {
digitalWrite(ledPin[currentLEd], HIGH);
}
currentLEd += direction;
if (currentLEd == 9) {direction = -1;}
if (currentLEd == 5) {direction = 1;}
}

Aqui está o circuito: 

Exibições: 365

Responder esta

Respostas a este tópico

Qual o problema exatamente que está com o código?

Dois posts de sequenciais que talvez possa te ajudar:

http://www.efeitonerd.com.br/2011/12/sequencial-de-leds.html

http://www.efeitonerd.com.br/2012/09/super-sequencial-de-leds.html

Quando eu coloco o programa para rodar no arduino, alem das LED's ficarem com tempos diferentes elas acedem e não se apagam!

Dando uma olhada rápida, ta faltando o delay dentro do loop da função changeLED. Por isso não pisca. Tem que ter o delay pra "segurar" o led acesso e depois apagado.

Hum... Acho que você ta certo, contudo se eu estabelecer um Delay em uma das funções a outra não iria parar?  Não coloquei o Delay justamente por causa disso, então achei que o comando "for" seria o suficiente... Mas abrigado, vou tentar estabelecer o delay!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço