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}