jueves, 1 de agosto de 2024

Cuestionario sobre librería serial

 

Preguntas de Selección Múltiple

  1. ¿Qué es la comunicación serial en Arduino?

    • a) Un método para almacenar datos en la memoria.
    • b) Un método para transmitir datos entre un Arduino y otros dispositivos.
    • c) Una forma de alimentar el Arduino.
    • d) Un lenguaje de programación para Arduino.
  2. ¿Qué función se utiliza para iniciar la comunicación serial en el setup()?

    • a) Serial.print()
    • b) Serial.read()
    • c) Serial.begin()
    • d) Serial.available()
  3. ¿Qué hace la función Serial.println() que la función Serial.print() no hace?

    • a) Añade un salto de línea al final del dato.
    • b) Inicia la comunicación serial.
    • c) Termina la comunicación serial.
    • d) Verifica si hay datos disponibles.
  4. ¿Qué valor se usa comúnmente como baudrate en los ejemplos de Arduino?

    • a) 4800
    • b) 9600
    • c) 14400
    • d) 19200
  5. ¿Cómo se verifica si hay datos disponibles para leer en la comunicación serial?

    • a) Serial.begin()
    • b) Serial.print()
    • c) Serial.read()
    • d) Serial.available()

Preguntas de Verdadero o Falso

  1. La librería Serial permite la comunicación a través de los pines digitales 2 (RX) y 3 (TX) en la mayoría de las placas Arduino.

    • Verdadero
    • Falso
  2. La función Serial.end() se utiliza para finalizar la comunicación serial.

    • Verdadero
    • Falso
  3. El monitor serie es una herramienta útil para depurar y monitorear programas en tiempo real.

    • Verdadero
    • Falso

Preguntas de Respuesta Corta

  1. ¿Qué parámetros básicos se configuran automáticamente con Serial.begin()?

  2. En el ejemplo práctico de control de LED, ¿qué comando se debe enviar desde el monitor serie para encender el LED?

Preguntas de Desarrollo

  1. Explica la diferencia entre Serial.print() y Serial.println() y da un ejemplo de cuándo utilizarías cada una.

  2. Describe un escenario en un proyecto de Arduino en el que la comunicación serial sería esencial y explica cómo la implementarías.

Preguntas de Relacionar

  1. Relaciona las funciones con su propósito:
  • Serial.read() →
  • Serial.print() →
  • Serial.available() →
  • Serial.begin() →

a) Verifica si hay datos disponibles. b) Inicia la comunicación serial. c) Envía datos sin salto de línea. d) Lee un carácter entrante.

 

Ejercicios: 


Ejercicio 1: Control de la Intensidad del LED

Objetivo: Modificar el código para que el LED pueda cambiar su intensidad (brillo) en función de los comandos recibidos desde el monitor serie.

Instrucciones:

  1. Configura el LED para usar PWM en lugar de simplemente encenderlo o apagarlo.
  2. Envía un valor entre 0 y 255 desde el monitor serie para ajustar el brillo del LED.

Código Inicial:

 

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    int brillo = Serial.parseInt(); // Lee un entero desde el monitor serie
    if (brillo >= 0 && brillo <= 255) {
      analogWrite(LED_BUILTIN, brillo); // Ajusta el brillo del LED
      Serial.print("Brillo del LED: ");
      Serial.println(brillo);
    } else {
      Serial.println("Valor fuera de rango. Enviar un valor entre 0 y 255.");
    }
  }
}
 

 

Ejercicio 2: Secuencia de Parpadeo del LED

Objetivo: Modificar el código para que el LED parpadee en una secuencia específica basada en los comandos recibidos desde el monitor serie.

Instrucciones:

  1. Envía el comando 'S' desde el monitor serie para iniciar una secuencia de parpadeo.
  2. Envía el comando 'P' desde el monitor serie para detener la secuencia de parpadeo.

Código Inicial:

 

bool parpadeoActivo = false;

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    char comando = Serial.read();
    if (comando == 'S') {
      parpadeoActivo = true;
      Serial.println("Secuencia de parpadeo iniciada");
    } else if (comando == 'P') {
      parpadeoActivo = false;
      digitalWrite(LED_BUILTIN, LOW); // Apaga el LED al detener el parpadeo
      Serial.println("Secuencia de parpadeo detenida");
    }
  }

  if (parpadeoActivo) {
    digitalWrite(LED_BUILTIN, HIGH); // Enciende el LED
    delay(500); // Espera 500 ms
    digitalWrite(LED_BUILTIN, LOW); // Apaga el LED
    delay(500); // Espera 500 ms
  }
}
  

 

Ejercicio 3: Control de Múltiples LEDs

Objetivo: Modificar el código para controlar dos LEDs utilizando comandos diferentes desde el monitor serie.

Instrucciones:

  1. Conecta dos LEDs a los pines 9 y 10 del Arduino.
  2. Envía los comandos 'H1' y 'L1' para encender y apagar el LED en el pin 9, respectivamente.
  3. Envía los comandos 'H2' y 'L2' para encender y apagar el LED en el pin 10, respectivamente.

 

const int led1 = 9;
const int led2 = 10;

void setup() {
  Serial.begin(9600);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}

void loop() {
  if (Serial.available() > 0) {
    String comando = Serial.readStringUntil('\n');
    if (comando == "H1") {
      digitalWrite(led1, HIGH);
      Serial.println("LED 1 Encendido");
    } else if (comando == "L1") {
      digitalWrite(led1, LOW);
      Serial.println("LED 1 Apagado");
    } else if (comando == "H2") {
      digitalWrite(led2, HIGH);
      Serial.println("LED 2 Encendido");
    } else if (comando == "L2") {
      digitalWrite(led2, LOW);
      Serial.println("LED 2 Apagado");
    } else {
      Serial.println("Comando desconocido");
    }
  }
}
 

 

 


No hay comentarios:

Publicar un comentario

.