El uso de funciones en los lenguajes de programación es fundamental para escribir programas más compactos y legibles. Por ejemplo, para un robot Sanduino que hace lo siguiente de forma repetida:
- Avanza 2 segundos
- Retrocede 1 segundo
- Avanza 1 segundo
- Retrocede 2 segundos
Se puede tener el siguiente programa:
/* Programa: Sanduino_avretro.ino
Autor: Julio Sandria (Enero 2015)
Requiere: Robot Sanduino A01, con puente H
y Arduino UNO conectados.
Mueve el motor izquierdo con pines 6 y 7
Mueve el motor derecho con pines 8 y 9
*/
void setup() {
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
}
void loop() {
// Robot avanza 2 segundos
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
delay(2000);
// Robot retrocede 1 segundos
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
delay(1000);
// Robot avanza 1 segundos
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
delay(2000);
// Robot retrocede 2 segundos
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
delay(2000);
}
Se puede hacer un programa más compacto y que hace lo mismo usando las funciones avanza() y retrocede():
/* Programa: Sanduino_avretrof.ino
Autor: Julio Sandria (Enero 2015)
Requiere: Robot Sanduino A01, con puente H
y Arduino UNO conectados.
Mueve el motor izquierdo con pines 6 y 7
Mueve el motor derecho con pines 8 y 9
*/
void setup() {
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
}
void loop() {
avanza(2000);
retrocede(1000);
avanza(1000);
retrocede(2000);
}
void avanza(int tiempo) {
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
delay(tiempo);
}
void retrocede(int tiempo) {
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
delay(tiempo);
}
En la función loop se hacen las llamadas siguientes:
avanza(2000);
retrocede(1000);
avanza(1000);
retrocede(2000);
Observa que esto prácticamente se puede leer así: avanza 2000, retrocede 1000, avanza 1000, retrocede 2000 (los tiempos en milisegundos). Esto es mucho más fácil de leer y entender que el contenido de loop() del primer programa.
Después de la función loop() están las definiciones de las funciones avanza() y retrocede().