Encuentra informaci贸n referente a la programaci贸n, electr贸nica y mucho m谩s, la p谩gina est谩 pensada para compartir contenido educativo relevante coadyuvando a su aprendizaje diario.
Estructuras de control en Arduino

Las estructuras de control en Arduino son similares a los que usan los lenguajes de programaci贸n m谩s populares, al programar en  Arduino para realizar nuestros proyecto electr贸nicos se hace imprescindible utilizar estructuras de control para controlar las acciones de nuestros actuadores, por lo cual es necesario conocer que estructuras de control podemos utilizar para realizar alguna tarea en espec铆fico.

Estructuras de control condicionales

Estas estructuras de control las usamos para comparar una condici贸n, pudiendo ser verdadera (true) o falsa (false), en caso que sea verdadera ejecutara una serie de instrucciones que le indiquemos, en caso de ser falso ejecutara otra acci贸n pero esta condicional no es obligatoria, podemos obviar esta instrucci贸n en caso que no sea necesario para nuestro programa.

if

Para utilizar esta estructura de control condicional usaremos las palabras reservada 鈥渋f鈥 seguida de la condici贸n que deseamos controlar delimitada por dos par茅ntesis.

Sintaxis

if(condici贸n para ser evaluada)
{
// Instrucciones 
}

else

Cuando no cumple la condici贸n que fue evaluada anteriormente y queremos realizar alguna acci贸n 聽se utiliza la palabra reservada 鈥渆lse鈥 para hacer notar al programa que se debe ejecutar un conjunto de instrucciones, esta condicional no es obligatoria solo es usada cundo es necesaria.

Sintaxis

else
{
	// Instrucciones 
}

Anidamiento de condicionales if 鈥 else

Muchas veces cuando requerimos usar multiples condiciones, generalmente no es suficiente usar una condicional if, por lo cual podemos realizar lo que se conoce como anidamiento que consiste declarar una condicional if dentro otra condicional if de modo que podemos comprobar varias condiciones en nuestro programa.

Sintaxis

if(condici贸n para ser evaluada)
  {
  // Instrucciones 
    if(condici贸n para ser evaluada)
     {
        // Instrucciones 
     }
    else {
		// Instrucciones 
     }
  }
else {
	// Instrucciones 
   if(condici贸n para ser evaluada)
    {
       // Instrucciones 
    }
   else
    {
	// Instrucciones 
    }
}

switch

Esta estructura de control condicional de Arduino en muy utilizada cuando queremos evaluar m煤ltiples valores y dependiendo del valor de entrada se ejecutara una instrucci贸n distinta, si bien podemos utilizar un anudamiento de condicionales if esto har谩 que nuestro programa se ejecute con un retardo mayor, para utilizar esta condicional usamos la palabra reservada 鈥渟witch鈥 junto a la expresi贸n que ser谩 evaluada delimitada por par茅ntesis, al ser evaluada esta expresi贸n determina que caso tomar y ejecutar las instrucciones que le hayamos declarado.

Sintaxis

switch (expresi贸n) {
          case valor1:
          //sentencias si la expresi贸n es igual al valor1;
                    [break]
          case valor2:
          // sentencias si la expresi贸n es igual al valor2;
                    [break]
.
.
.
        default:
            //sentencias que se ejecutan si no se cumple ninguna
             //de las anteriores
}  

Estructuras de control repetitivas o iterativas en Arduino

Arduino nos da la posibilidad al igual que muchos otros lenguajes de programaci贸n utilizar varias opciones para trabajar con bucles como son el while, do while y el for.

Trabajar con bucles implica que realizaremos una misma tarea varias veces por lo cual debemos utilizarlos con precauci贸n y no provocar inconsistencias en nuestros programas porque debemos tomar en cuenta que al margen del c贸digo estaremos trabajando con distintos dispositivos que quiz谩s podr铆amos malograr si no tomamos nuestras precauciones.

while

Esta estructura de control repetitiva de Arduino agrupa un conjunto de instrucciones que solo es ejecutada en caso que cumpla una condici贸n que es evaluada en cada iteraci贸n.

Para trabajar con esta estructura de control es necesario declarar dentro las instrucciones una variable que cambia constantemente y es evaluada para seguir o finalizar el bucle.

Como esta al inicio la condicional esto har谩 que trabaje como si fuera un cerrojo, es decir que si no cumple la condici贸n en un principio jam谩s entrara a ejecutar ninguna instrucci贸n.

Sintaxis

while (condici贸n) {
     // sentencias que se ejecutan si la condici贸n es true
}   

do while

Esta estructura de control repetitiva trabaja parecido que el while con la diferencia que no se hace la comparaci贸n al principio sino al final de la estructura de control repetitiva, esto hace que por lo menos en una ocasi贸n ejecutara las instrucciones que tenga dentro esta estructura, esta forma de control es muy 煤til cuando deseamos trabajar con men煤s de selecci贸n e imprimirlas en una pantalla LCD otorg谩ndole al usuario varias opciones para trabajar.

Sintaxis

do {
     // Instrucciones
} while (condici贸n)

for

Esta estructura de control repetitiva o iterativa de Arduino se caracteriza de poder inicializar una variable para la condici贸n, evaluar la condici贸n y realizar un incremento o decremento en una sola expresi贸n d谩ndonos una mejor compresi贸n sobre el control que realizar esta estructura de control repetitiva de Arduino, adem谩s esta expresi贸n se inicia al principio de la estructura por lo que si no cumple la condici贸n jam谩s entrara a ejecutar ninguna instrucci贸n.

Sintaxis

for( inicializaci贸n de la variable; condici贸n a ser evaluada; incremento/decremento)
{
	// Instrucciones que se ejecutaran en caso que cumpla la condici贸n.
}

Anidamiento de estructuras de control repetitivas o iterativas en Arduino

Con estas estructuras de control tambi茅n podemos anidar nuestras estructuras de control repetitivas dentro otra estructura de control repetitivo, haciendo con esto un programa m谩s robusto y complejo, con esto logramos poco a poco hacer que nuestros programas trabajen de mejor manera y con m煤ltiples opciones para manipular infinidad de variables.

Elementos de control de flujo en Arduino

Seguramente muchos habr谩n utilizado sentencias de control de flujo en sus programas m谩s a煤n si vienen de programar en BASIC o C/C++, porque son muy usados cuando requerimos saltar de instrucci贸n en instrucci贸n sin un orden en espec铆fico, esto hace que para muchos vean como complejo un programa que usa estos elemento pero la realidad es que si se entiende como trabajan estos elementos no es muy dif铆cil descifrar como trabaja el programa.

Estos elementos de control son el Goto, Continue y Break.

Goto

Esta sentencia nos da la posibilidad de saltar a cualquier parte de nuestro programa que reconozca una etiqueta dispuesta por nosotros mismos, es decir si el programa encuentra la sentencia Goto lee nuestra etiqueta e inmediatamente salta donde existe otra etiqueta con el mismo nombre sin importar el lugar donde se declar贸 dicha etiqueta.

Sintaxis

goto nombre_etiqueta; //Nombre etiqueta que buscara en el programa para saltar donde se la declaro

nombre_etiqueta: //Esta etiqueta se declara d贸nde queremos que una vez ejecute Goto vaya a esta etiqueta.

Ejemplo

if(n == 10)
{
	goto salto1; 
}
salto1:

Continue

Generalmente usado para omitir alguna instrucci贸n y una vez omitida dicha instrucci贸n continua con el resto del programa, usada en la mayor铆a de las veces cunado realizamos iteraciones y queremos omitir algunos resultados, si uso es muy f谩cil solo debemos colocar la palabra reservada 鈥continue鈥 donde deseamos omitir estas instrucciones.

Ejemplo

for (int x = 0; x <= 255; x ++) {
  if (x > 60 && x < 100) 
{ 
    // Omite los valores le铆dos que sean mayores a 60 y menores a 100
    continue;
  }
  analogWrite(PWMpin, x);
  delay(50);
}

Break

Esta sentencia nos da la posibilidad de romper una estructura de control y salir de la misma sin importar el resto de las instrucciones de la estructura de control, generalmente es usada en la estructura de control switch, pero tambi茅n puede ser usada por por otras estructuras de control, por esto el uso de esta esta instrucci贸n se debe realizar con mucha precauci贸n porque podemos obviar instrucciones vitales para el buen funcionamiento de nuestro programa en Arduino.

Ejemplo

int maximo_permitido = 40;
for (int x = 0; x < 255; x++) {
  analogWrite(PWMpin, x);
  sensor = analogRead(sensorPin);
  if (sensor > maximo_permitido) {     // Detecta que se super贸 el valor m谩ximo permitido del sensor y se sale
        
    x = 0;
    break;
  }
  delay(50);
}

Ejemplo de uso de las estructuras de control en Arduino

Este ejemplo consiste en incrementar el numero de leds encendidos con un bot贸n y disminuir el numero de leds encendidos con otro bot贸n.

Materiales

  • Arduino UNO
  • 5 resistencias de 330 ohmios
  • 2 resistencias de 10 k
  • 5 leds
  • 2 pulsadores
  • cables para la conexi贸n
  • Protoboard

Diagrama del circuito propuesto

Estructuras de control en Arduino 
Ejemplos de Arduino

C贸digo fuente de Arduino

  
  /**** AUTOR: Creatividad Codificada ****/
  
  int contador = 0;
  byte leds[5] = {13,12,11,10,9}; 
void setup() {
  //Declaramos salidas y entradas
  pinMode(13,OUTPUT);  
  pinMode(12,OUTPUT);
  pinMode(11,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(8,INPUT);
  pinMode(7,INPUT);
}
void loop() {
  // Lee el boton encender led
  if(digitalRead(8)==HIGH)
  {
    contador++;
    if(contador>5)contador = 0; // control del contador
    cantidad_led(contador);
    }
  // Lee el boton apagar led  
  if(digitalRead(7)==HIGH)
  {
    contador--;
    if(contador<=0)contador = 0; // control del contador
    cantidad_led(contador);
    }
}
// Funcion para encender o apagar los leds
void cantidad_led(byte cont) 
{
    for(byte j=0; j<5;j++)
    {
      digitalWrite(leds[j],LOW);
      }
    for(byte i=0; i<cont;i++)
     {
      digitalWrite(leds[i],HIGH);
      }
    delay(200);
} 

驴Que te parecio el art铆culo?

Su direcci贸n de email no sera publicado. Los campos obligatorios est谩n marcados con *.

驴Qu茅 hacemos con tus datos?

Creatividad Codificada como responsable tratar谩 tus datos con la finalidad de gestionar tu participaci贸n en nuestro blog informativo. Puedes acceder, rectificar y suprimir tus datos, as铆 como ejercer otros derechos consultando la informaci贸n adicional y detallada sobre protecci贸n de datos en nuestra Pol铆tica de Privacidad