es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Arduino Void Loop translates to Arduino Bucle de Vacío.

Para clase, desarrollé el siguiente código. Sin embargo, mi profesor quiere que lo condense. Si alguien tiene alguna recomendación, estaría agradecido. Gracias.

void setup()
{
  DDRD = 0b11111111;
  DDRB = 0b00000001;
}

void loop()
{
  PORTD = 0b00000001;
  PORTB = 0b00000000;
  delay(t);
  PORTD = 0b00000010;
  PORTB = 0b00000000;
  delay(t);
  PORTD = 0b00000100;
  PORTB = 0b00000000;
  delay(t);
  PORTD = 0b00001000;
  PORTB = 0b00000000;
  delay(t);
  PORTD = 0b00010000;
  PORTB = 0b00000000;
  delay(t);
  PORTD = 0b00100000;
  PORTB = 0b00000000;
  delay(t);
  PORTD = 0b01000000;
  PORTB = 0b00000000;
  delay(t);
  PORTD = 0b10000000;
  PORTB = 0b00000000;
  delay(t);
  PORTD = 0b00000000;
  PORTB = 0b00000001;
  delay(t);
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para condensar el código, puedes usar un bucle para recorrer cada uno de los valores deseados para PORTD y retrasar cada iteración. De esta manera, el código repetitivo puede ser reemplazado por una versión más concisa.

    Aquí tienes un ejemplo de cómo se puede condensar el código:

    void setup()
    {
      DDRD = 0xFF; // se establecen todos los pines de PORTD como salida
      DDRB = 0x01; // se establece el pin 0 de PORTB como salida
    }
    
    void loop()
    {
      for(int i = 0; i < 8; i++){
        PORTD = 1 << i; // se establece el bit correspondiente en PORTD
        PORTB = 0; // se establece el pin 0 de PORTB como 0
        delay(t);
      }
    
      PORTD = 0; // se establecen todos los pines de PORTD como 0
      PORTB = 1; // se establece el pin 0 de PORTB como 1
      delay(t);
    }
    

    En esta versión, el bucle for recorre cada uno de los bits en PORTD y establece el bit correspondiente en función del valor actual de i. La expresión 1 << i desplaza el 1 binario hacia la izquierda por i bits, dando como resultado el valor binario deseado para cada iteración.

    Este código condensado logra el mismo resultado que el código original, pero con menos repetición y un uso más eficiente de los recursos.

Comments are closed.