Funcionamiento
El objetivo de este proyecto es crear un menú principal en un Arduino que permita controlar un ventilador, un LED y un servomotor mediante el monitor serial. A continuación se detallan las opciones y funciones del menú.
Menú Principal
Menú ventilador
- Encender ventilador
- Apagar ventilador
Menú led
- Encender led
- Apagar led
Menú servomotor
- Introduce el ángulo
Componentes
- Placa Arduino (por ejemplo, Arduino Uno)
- Relé de 5V
- Resistencia de 330 ohmios
- Ventilador de 5V
- Led
- Servomotor 5v
- Protoboard (opcional)
Conexiones
Conexión del teclado 4×4:
- Fila 1 del teclado matricial a pin 9 del Arduino.
- Fila 2 del teclado matricial a pin 8 del Arduino.
- Fila 3 del teclado matricial a pin 7 del Arduino.
- Fila 4 del teclado matricial a pin 6 del Arduino.
- Fila 5 del teclado matricial a pin 5 del Arduino.
- Fila 6 del teclado matricial a pin 4 del Arduino.
- Fila 7 del teclado matricial a pin 3 del Arduino.
- Fila 8 del teclado matricial a pin 2 del Arduino.
Conexiones del Rele:
- Conecta la entrada del relé (IN) al pin 11 de la placa Arduino.
- Conecta el pin VCC del relé al pin de 5V de la placa Arduino.
- Conecta el pin GND del relé al pin GND de la placa Arduino.
- Conecta el ventilador a la fuente de alimentación(5v) y al relé(común y normalmente cerrado).
Conexiones del Servo:
- Conecta la entrada del servo(IN) al pin 10 de la placa Arduino.
- Conecta el pin VCC del servo al pin de 5V de la placa Arduino.
- Conecta el pin GND del servo al pin GND de la placa Arduino.
Conexión del LED:
- Conecta el LED al pin 12 del Arduino y al GND, usando una resistencia 330 ohmios.
Código
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | #include <Arduino.h> #include <Keypad.h> #include <Servo.h> void fanMenu(); void ledMenu(); void servoMenu(); void mainMenu(); void handleMainMenu(char); const byte ROWS = 4; // Cuatro filas const byte COLS = 4; // Cuatro columnas char keys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte rowPins[ROWS] = {9, 8, 7, 6}; // Conectar a las salidas de fila del teclado byte colPins[COLS] = {5, 4, 3, 2}; // Conectar a las salidas de columna del teclado Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); Servo myservo; int servoPin = 10; int fanPin = 11; int ledPin = 12; void setup() { Serial.begin(9600); pinMode(fanPin, OUTPUT); pinMode(ledPin, OUTPUT); myservo.attach(servoPin); mainMenu(); } void loop() { char key = keypad.getKey(); if (key) { handleMainMenu(key); } } void mainMenu() { Serial.println(); Serial.println("Menu Principal"); Serial.println(); Serial.println("1: Ventilador"); Serial.println("2: LED"); Serial.println("3: Servomotor"); } void handleMainMenu(char key) { switch (key) { case '1': fanMenu(); break; case '2': ledMenu(); break; case '3': servoMenu(); break; default: mainMenu(); } } void fanMenu() { Serial.println(); Serial.println("Menu Ventilador"); Serial.println(); Serial.println("1: Encender Ventilador"); Serial.println("2: Apagar Ventilador"); char key = keypad.waitForKey(); switch (key) { case '1': digitalWrite(fanPin, HIGH); mainMenu(); break; case '2': digitalWrite(fanPin, LOW); mainMenu(); break; case '#': mainMenu(); break; } } void ledMenu() { Serial.println(); Serial.println("Menu Led"); Serial.println(); Serial.println("1: Encender LED"); Serial.println("2: Apagar LED"); char key = keypad.waitForKey(); switch (key) { case '1': digitalWrite(ledPin, HIGH); mainMenu(); break; case '2': digitalWrite(ledPin, LOW); mainMenu(); break; case '#': mainMenu(); break; } } void servoMenu() { Serial.println(); Serial.println("Menu Servo"); Serial.println(); Serial.println("Ingrese el angulo:"); String angleStr = ""; char key; while ((key = keypad.waitForKey()) != '*') { if (key >= '0' && key <= '9') { angleStr += key; Serial.print(key); } else if (key == '#') { mainMenu(); return; } } int angle = angleStr.toInt(); myservo.write(angle); mainMenu(); } |
Diseños

Videos