Curso C para Arduino

1. Monitor de temperatura:

  • Leer un sensor y mostrar el valor en el monitor serie cada segundo.

2. Control desde teclado:

  • Enviar caracteres desde el PC y realizar diferentes acciones (encender LED, cambiar estado, mostrar mensaje).

3. Interfaz de usuario simple:

  • Permitir al usuario introducir valores (como umbral de temperatura) y usarlos en el código.

Aquí tienes la solución a los ejercicios prácticos de la Unidad 7: Comunicación Serial, ideales para reforzar la lectura y escritura con el monitor serie en Arduino:


✅ 1. Monitor de temperatura

Leer un sensor (como un LM35) y mostrar el valor en el monitor serie cada segundo.

1const int pinLM35 = A0;
2
3void setup() {
4  Serial.begin(9600);
5}
6
7void loop() {
8  int lectura = analogRead(pinLM35);
9  float voltaje = lectura * (5.0 / 1023.0);
10  float temperaturaC = voltaje * 100.0; // 10mV por °C en LM35
11
12  Serial.print("Temperatura: ");
13  Serial.print(temperaturaC);
14  Serial.println(" ºC");
15
16  delay(1000); // actualizar cada segundo
17}

✅ 2. Control desde teclado

Enviar caracteres desde el PC y realizar diferentes acciones (encender LED, cambiar estado, mostrar mensaje).

1const int pinLED = 13;
2bool estadoLED = false;
3
4void setup() {
5  pinMode(pinLED, OUTPUT);
6  Serial.begin(9600);
7  Serial.println("Comandos: '1' para encender LED, '0' para apagar, 'm' para mensaje");
8}
9
10void loop() {
11  if (Serial.available() > 0) {
12    char comando = Serial.read();
13
14    switch (comando) {
15      case '1':
16        digitalWrite(pinLED, HIGH);
17        estadoLED = true;
18        Serial.println("LED encendido");
19        break;
20      case '0':
21        digitalWrite(pinLED, LOW);
22        estadoLED = false;
23        Serial.println("LED apagado");
24        break;
25      case 'm':
26        Serial.println("¡Hola desde Arduino!");
27        break;
28      default:
29        Serial.println("Comando no válido");
30        break;
31    }
32  }
33}

✅ 3. Interfaz de usuario simple

Permitir al usuario introducir valores (como umbral de temperatura) y usarlos en el código.

1const int pinLM35 = A0;
2float umbral = 30.0;
3
4void setup() {
5  Serial.begin(9600);
6  Serial.println("Introduce nuevo umbral de temperatura (ej: 28.5):");
7}
8
9void loop() {
10  if (Serial.available() > 0) {
11    float nuevoUmbral = Serial.parseFloat();
12    if (nuevoUmbral > 0) {
13      umbral = nuevoUmbral;
14      Serial.print("Nuevo umbral establecido: ");
15      Serial.println(umbral);
16    }
17    while (Serial.available()) Serial.read(); // limpiar buffer
18  }
19
20  int lectura = analogRead(pinLM35);
21  float voltaje = lectura * (5.0 / 1023.0);
22  float temperatura = voltaje * 100.0;
23
24  Serial.print("Temp actual: ");
25  Serial.print(temperatura);
26  Serial.print(" ºC | Umbral: ");
27  Serial.println(umbral);
28
29  delay(1000);
30}