Ejercicio 2. Proyecto 6 - Arduino Starter Kit

hola. he estado tratando de hacer este ejercicio:

y no logro hacer el efecto de salto. ya he intentado de todo y todavía no logro resolver este ejercicio. este es el código base que hice y todavía no hallo la manera de restar la variable "m" para dar el efecto de rebote como en el vídeo.

byte ledPin[] = {13, 12, 11, 10, 9, 8, 7, 6, 5, 4};

byte potPin = 0;

byte a = 0;
byte s = 1;
byte m = 9;

byte i, j;

int ledDelay;

/////////

void setup(){
 
 Serial.begin(9600);
 
 for(i=0;i<10;i++){
   
   pinMode(ledPin[i], OUTPUT);
 }
}

void loop(){
 
 ledDelay = analogRead(potPin);
 
 for(i=0;i<10;i++){
   
   digitalWrite(ledPin[i], LOW);
 }
 
 bounLed();
}

void bounLed(){
 
 for(i=0;i<10;i++){
   
   digitalWrite(ledPin[i], LOW);
 }
 
 digitalWrite(ledPin[a], HIGH);
 delay(ledDelay);
 
 a += s;
 
 if(a==m){ s = -1; }
 if(a==0){ s = 1; }
}

lo que trato de hacer básicamente es esto:

Prueba con un par de bucles anidados algo asi:

byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
byte potPin = 0;
byte a, s;

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 10; i++) {
    pinMode(ledPin[i], OUTPUT);
  }
}

void loop() {
  for (s = 9; s >= 0; s--) { // rebote
    // IDA
    for (a = 0; a < s ; a++) {
      if (a >= 0 && a < 10 ) {
        digitalWrite(ledPin[a - 1], LOW);
      }
      if (a >= 0 && a < 10 ) {
        digitalWrite(ledPin[a ], HIGH);
      }
      delay(analogRead(potPin));
    }
    // vuelta
    for (a = s; a <= 0 ; a--) {
      if (a >= 0 && a < 10 ) {
        digitalWrite(ledPin[a + 1], LOW);
      }
      if (a >= 0 && a < 10 ) {
        digitalWrite(ledPin[a], HIGH);
      }
      delay(analogRead(potPin));
    }
  }
}

Saludos.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.