Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NIVEL SECUNDARIA
Ciclo Escolar
2022-2023
Disciplina:
TECNOLOGÍA III
ROBÓTICA
Semestre B
Guía de estudio
¿Qué es una función? y como utilizarla
Es un segmento de código que está separado del código principal del programa, que realiza una
tarea específica y regresa a la zona del programa donde fue llamada.
Al utilizar funciones podemos hacer más compacto nuestro código organizándolo por bloques y
llamando a las funciones con solo utilizar su nombre para correr su código interno esto nos
permite que nuestro código sea más ligero y fácil de entender. Las funciones codifican una acción
en un lugar solo deben ser depuradas de errores una vez.
Declarando funciones
Tipo de dato: int, doublé, void. (Tipo void, si no regresa ningún valor).
Nombre de la función: El nombre no puede llevar espacios puedes usar guion bajo “ejemplo_1” y
no puedes utilizar palabras reservadas del lenguaje de programación.
Parámetros: es una variable que envía la función loop, se utiliza para realizar algún cálculo o tarea.
Se dejan vacíos si no requiere ningún parámetro.
Código: El código que escribiremos debe estar entre las llaves y cada línea se cierra con punto y
coma.
Retorno: “return” es el valor que regresa la función, debe ser del mismo tipo del parámetro que se
escribió.
Llamar la función.
Para invocar la función en este caso para funciones que regresan un valor. Está compuesta por una
variable que va a almacenar el valor de retorno, en este caso la variable se llama “res” ahora esta
variable vale 50, seguido pondremos el nombre de la función “cincuenta_porciento (100)”.
Básicamente este es el código con el que se manda a llamar una función.
NOTA: Puedes crear una función para hacer los 2 ciclos for.
Código
void setup(){
for(int c=9;c<=13;c++){
pinMode(c,OUTPUT);
}
}
void loop(){
for(int i=9;i<=13;i++){
digitalWrite(i, HIGH);
delay(200);
digitalWrite(i, LOW);
delay(200);
}
for(int i=13;i>=9;i--){
digitalWrite(i, HIGH);
delay(200);
digitalWrite(i, LOW);
delay(200);
}
}
Ejercicio 2: En el siguiente código debes crear tus propias funciones para que en la sección void
loop() solo estén llamadas a funciones
NOTA: Puedes crear una función para hacer la comparación de distancia
Código
#define LED 9
#define TRIGGER 7
#define ECHO 6
int distancia = 0;
long duracion;
void setup(){
Serial.begin(9600);
pinMode(GND_M, OUTPUT);
pinMode(VCC_M, OUTPUT);
pinMode(LED,OUTPUT);
pinMode(TRIGGER,OUTPUT);
pinMode(ECHO,INPUT);
}
void loop(){
digitalWrite(LED,LOW);
digitalWrite(TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
duracion = pulseIn(ECHO, HIGH);
distancia = duracion*0.034/2;
if(distancia > 10){
digitalWrite(LED,HIGH);
}else{
digitalWrite(LED,LOW);
}
Serial.print("Distnacia: ");
Serial.println(distancia);
}
Ejercicio 3: En el siguiente código debes crear tus propias funciones para que en la sección void
loop() solo estén llamadas a funciones
NOTA: Puedes crear una función para hacer los giros del motor.
Código
int GND = 7;
int VCC = 6;
void setup(){
pinMode(GND, OUTPUT);
pinMode(VCC, OUTPUT);
}
void loop(){
digitalWrite(GND, LOW);
digitalWrite(VCC, HIGH);
delay(500);
digitalWrite(GND, LOW);
digitalWrite(VCC, LOW);
delay(1000);
}
Estos sensores trabajan solamente en el aire, y pueden detectar objetos con diferentes formas,
colores, superficies y de diferentes materiales. Los materiales pueden ser sólidos, líquidos o
polvorientos, sin embargo, han de ser deflectores de sonido.
Los sensores trabajan según el tiempo de transcurso del eco, es decir, se valora la distancia temporal
entre el impulso de emisión y el impulso del eco.
Un sensor óptico tiene un transmisor y receptor, mientras que un sensor ultrasónico utiliza un
elemento ultrasónico único, tanto para la emisión como la recepción. En un sensor ultrasónico de
modelo reflectivo, un solo oscilador emite y recibe las ondas ultrasónicas, alternativamente. Esto
permite la miniaturización del cabezal del sensor.
Distancia L = 1/2 × T × C
ACTIVIDAD
En esta práctica vamos a aprender a medir la distancia desde un sensor a un objeto. Para ello,
usaremos el sensor de ultrasonidos HC-SR04. Se pide que por el serial salga la distancia, en cm, entre
el sensor de ultrasonidos y el primer objeto que se interponga con el sensor.
El rango de medición del HC-SR04 está entre los dos 2 cm y los 500 cm; fuera de estos límites no
mide con exactitud. La resolución es de 0,3 cm.
La idea básica es que el sensor lanza un ultrasonido que chocará con el objeto regresando al sensor.
Sabiendo el tiempo que dura este proceso y la velocidad del sonido (340 m/s), podremos calcular la
distancia a la que se encuentra el objeto.
Código
#define LEDVERDE 11
#define LEDAMARILLO 12
#define LEDROJO 13
#define TRIGGER 5
#define ECHO 4
#define BUZZER 8
const float sonido = 34300.0; // Velocidad del sonido en cm/s
const float umbral1 = 250.0;
const float umbral2 = 150.0;
const float umbral3 = 50.0;
void setup() {
Serial.begin(9600);
pinMode(LEDVERDE,OUTPUT);
pinMode(LEDAMARILLO,OUTPUT);
pinMode(LEDROJO,OUTPUT);
pinMode(BUZZER,OUTPUT);
pinMode(TRIGGER,OUTPUT);
pinMode(ECHO,INPUT);
apagarLEDs();
}
void loop(){
iniciarTrigger();
apagarLEDs();
void apagarLEDs(){
digitalWrite(LEDVERDE, LOW);
digitalWrite(LEDAMARILLO, LOW);
digitalWrite(LEDROJO, LOW);
}
void iniciarTrigger(){
digitalWrite(TRIGGER,LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER,HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER,LOW);
}
float calcularDistancia(){
// La función pulseIn obtiene el tiempo que tarda en cambiar entre estados, en este caso a HIGH
unsigned long tiempo = pulseIn(ECHO,HIGH);
// Obtenemos la distancia en cm, hay que convertir el tiempo en segundos ya que está en
microsegundos por eso se multiplica por 0.000001
float distancia = tiempo * 0.000001 * sonido / 2.0;
Serial.print(distancia);
Serial.print("cm");
Serial.println();
delay(500);
return distancia;
}
Montaje.
Debemos guiarnos del diagrama
mostrado en la siguiente ilustración
Driver L293D
El L293D es un controlador cuádruple de alta intensidad de media-H. El L293D está diseñado para
proporcionar corrientes de accionamiento bidireccionales de hasta 600 mA a tensiones de 4.5V a
36V. El dispositivo está diseñado para impulsar cargas inductivas, como relés, solenoides, motores
paso a paso bipolares y CC, así como otras cargas de alta corriente/alto voltaje en aplicaciones de
suministro positivo. Todas las entradas son TTL compatibles. Cada salida es un circuito de
accionamiento de tótem completo, con un sumidero de transistor darlington y una fuente pseudo-
Darlington. Los controladores se habilitan en pares, con los controladores 1 y 2 habilitados por 1,2EN
y los controladores 3 y 4 habilitados por 3,4EN. Cuando una entrada de habilitación es alta, los
controladores asociados están habilitados y sus salidas están activas y en fase con sus entradas.
Cuando la entrada de habilitación es baja, esos controladores están deshabilitados y sus salidas
están apagadas y en el estado de alta impedancia. Con las entradas de datos adecuadas, cada par
de conductores forma una unidad reversible-H completa (o puente) adecuada para aplicaciones de
solenoide o el motor.
PARA LAS PRÁCTICAS ANTERIORES “HECHAS EN TINKERCAD” DEBES
HACER SU REPORTE SIGUEINDO EL SIGUIENTE FORMATO EN TU
LIBRETA FIRMADO POR TU PADRE O TUTOR
Nombre de la práctica: Concepto:
Firma: