- Portada
- Ensamblaje mecánico
-
Montaje eléctrico y programación
-
Introducción al Montaje Electrónico
-
Resistencias y Ejemplos de cálculo
-
La protoboard y los LEDs
-
El pulsador
-
Actividad 1: Uso de pulsadores y leds
-
El Servomotor
-
Actividad 2: El servomotor
-
El Zumbador
-
Pantallas LCD
-
Actividad 3: Uso de pantalla LCD
-
Sensor de proximidad por ultrasonidos
-
Actividad 4: Uso del sensor de ultrasonidos
-
Las funciones
-
Actividad 5: Uso de funciones
-
- Para terminar
Actividad 5: Uso de funciones
Actividad 5

Uso de funciones
Para esta actividad no es necesario realizar ningún montaje nuevo.
El objetivo principal de esta actividad es aprovechar el código realizado en la actividad anterior e implementar el uso de las funciones en ese mismo código.
A continuación se muestran algunas pistas de utilidad y el código resultado.
Pista 1: Declaración de funciones
A continuación se muestra un ejemplo de cómo declarar una función. En este caso, se declaran los
parámetros de entrada de la función como tipo lógico:
void led_Verde_Rojo(bool verde, bool rojo){
parámetros de entrada de la función como tipo lógico:
void led_Verde_Rojo(bool verde, bool rojo){
digitalWrite(LedVerde,verde);
digitalWrite(LedRojo,rojo);
}
Pista 2: Uso de funciones
Para usar una función únicamente debemos escribir el nombre de esta función indicándole entre
paréntesis, qué variables o qué valores se van a pasar como parámetros a la función. A
continuación, se muestra un ejemplo de cómo llamar a la función vista en la pista 1:
paréntesis, qué variables o qué valores se van a pasar como parámetros a la función. A
continuación, se muestra un ejemplo de cómo llamar a la función vista en la pista 1:
led_Verde_Rojo( 1, 0);
Solución código C++
//Agregamos librerías
#include <Servo.h>
#include <HCSR04.h>
#include <Wire.h> //Comunicacion con modulo I2C
#include <LiquidCrystal_I2C.h> //Pantalla LCD
// Se crea el objeto de la pantalla LCD
LiquidCrystal_I2C lcd(0x27, 16,2);
#define trig2 9
#define echo2 8
#define trig1 7
#define echo1 6
#define LedRojo 3
#define LedVerde 4
#define Zumbador 12
#define BE 5 //boton entrada
#define BS 13 //boton salida
bool estadoVerde = false;
bool estadoRojo = false;
bool ultimoEstadoPulsador1 = HIGH;
bool ultimoEstadoPulsador2 = HIGH;
HCSR04 HC_SR_1(trig1, echo1);
HCSR04 HC_SR_2(trig2, echo2);
Servo servoMotor1;
Servo servoMotor2;
int Contador = 0;
int Salida = 0;
void led_Verde_Rojo(bool verde, bool rojo){
digitalWrite(LedVerde,verde);
digitalWrite(LedRojo,rojo);
}
void SonarZumbador(int times, int t_delay){
for (int i = 0 ; i < times;i++){
tone(Zumbador, 1000);
delay(t_delay);
noTone(Zumbador);
delay(t_delay);
}
}
void setup() {
Serial.begin(9600);
pinMode(LedRojo,OUTPUT);
pinMode(LedVerde,OUTPUT);
pinMode(BE,INPUT);
pinMode(BS,INPUT);
pinMode(Zumbador,OUTPUT);
lcd.init();
lcd.backlight();
lcd.clear();
servoMotor1.attach(10);
servoMotor2.attach(11);
tone(Zumbador, 100);
delay(500);
servoMotor1.write(0);
servoMotor2.write(180);
noTone(Zumbador);
delay(500);
servoMotor1.write(60);
servoMotor2.write(90);
tone(Zumbador, 100);
delay(500);
noTone(Zumbador);
servoMotor1.write(0);
servoMotor2.write(180);
}
void loop() {
// Leer el estado actual de los pulsadores
bool estadoPulsador1 = digitalRead(BE);
bool estadoPulsador2 = digitalRead(BS);
float distancia1 = HC_SR_1.dist();
Serial.print("Distancia 1: ");
Serial.println(distancia1);
delay(100);
float distancia2 = HC_SR_2.dist();
Serial.print("Distancia 2: ");
Serial.println(distancia2);
delay(100);
Serial.println("---------------------------------");
if(Contador <= 5){
led_Verde_Rojo( 1, 0);
lcd.setCursor(0,0);
lcd.print("Numero de");
lcd.setCursor(0,1);
lcd.print("vehiculos:");
lcd.setCursor(12,1);
lcd.print(Contador);
delay(100);
}
if(Contador > 5){
led_Verde_Rojo( 0, 1);
lcd.setCursor(0,0);
lcd.print("Parking");
lcd.setCursor(0,1);
lcd.print("Completo");
delay(100);
}
if ((ultimoEstadoPulsador1 == HIGH && estadoPulsador1 == LOW) && (Contador <= 5)){
servoMotor1.write(60);
led_Verde_Rojo( 0, 1);
lcd.clear();
lcd.setCursor(0,0);
Salida = 1;
lcd.print(" Entrando ");
delay(500);
SonarZumbador(1, 500);
while(Salida == 1){
delay(50);
distancia1 = HC_SR_1.dist();
Serial.print("Distancia 1: ");
Serial.println(distancia1);
if((distancia1 <= 6) && (distancia1>=1)){
SonarZumbador(3, 177);
Salida = 0;
}
}
lcd.clear();
servoMotor1.write(0);
Contador = Contador + 1;
Serial.println(Contador);
}
if((ultimoEstadoPulsador2 == HIGH && estadoPulsador2 == LOW) && (Contador > 0)){
Salida = 1;
servoMotor2.write(90);
led_Verde_Rojo( 0, 1);
lcd.setCursor(0,0);
lcd.print(" Saliendo ");
delay(500);
SonarZumbador(1, 500);
while(Salida == 1){
distancia2 = HC_SR_2.dist();
Serial.print("Distancia 2: ");
Serial.println(distancia2);
delay(50);
if((distancia2 >= 15) && (distancia2<25)){
SonarZumbador(2, 333);
Salida = 0;
}
}
lcd.clear();
servoMotor2.write(180);
Contador = Contador - 1;
Serial.println(Contador);
}
// Actualizar los últimos estados de los pulsadores
ultimoEstadoPulsador1 = estadoPulsador1;
ultimoEstadoPulsador2 = estadoPulsador2;
delay(100); // Pequeña pausa para evitar rebotes
}
| Vistas | |
|---|---|
| 11 | Número de vistas |
| 11 | Vistas de miembros |
| 0 | Vistas públicas |
| Acciones | |
|---|---|
| 0 | Gustos |
| 0 | No me gusta |
| 0 | Comentarios |
Compartir por correo
Por favor iniciar sesión para compartir esto webpage por correo.