[UNDERtip] Simplificar Código de Arduino

Iniciado por Riojas, Mayo 15, 2017, 05:26:29 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Mayo 15, 2017, 05:26:29 PM Ultima modificación: Mayo 15, 2017, 05:52:30 PM por Riojas
Muy buenas underc0ders!!!
Bienvenidos a el Undertip de el dia.

Esto va dirigido principalmente a la gente que va comenzando con Arduino y no tiene mucho conocimiento de el lenguaje de programación de este mismo. Pero también les servirá a algunos otros.

Les daré unos puntos claves de el uso de la estructura "For".

El código que muestro a continuación se encarga de hacer un efecto de "barrido" con 6 leds.
Código: c
void setup() {
  pinMode(3,OUTPUT);
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
}

void loop() {
  digitalWrite(3,HIGH);
  delay(200);
  digitalWrite(3,LOW);
  delay(200);
  digitalWrite(4,HIGH);
  delay(200);
  digitalWrite(4,LOW);
  delay(200);
  digitalWrite(5,HIGH);
  delay(200);
  digitalWrite(5,LOW);
  delay(200);
  digitalWrite(6,HIGH);
  delay(200);
  digitalWrite(6,LOW);
  delay(200);
  digitalWrite(7,HIGH);
  delay(200);
  digitalWrite(7,LOW);
  delay(200);
  digitalWrite(8,HIGH);
  delay(200);
  digitalWrite(8,LOW);
  delay(200);
}


Como verán tenemos 35 lineas de código para algo tan sencillo...
Ahora veremos el código ya simplificado!!
Código: c
int led[]={3,4,5,6,7,8};
int numero_led=6;

void setup() {
  for (int i=0;i<numero_led;i++)
  {
  pinMode(led[i],OUTPUT);
  } 
}

void loop() {
  for (int i=0;i<numero_led;i++)
  {
  digitalWrite(led[i],HIGH);
  delay(200);
  digitalWrite(led[i],LOW);
  delay(200);
  }   
}


El codigo se redujo a tan solo 19 lineas, gracias a el uso de el "For" y a la implementacion de matrices de datos.

Descripción

La sentencia for se utiliza para repetir un bloque de declaraciones encerrado entre llaves. Normalmente se utiliza un contador de incremento para incrementar y terminar el bucle. La instrucción for es útil para cualquier operación repetitiva, y se utiliza a menudo en combinación con matrices para operar en colecciones de datos / pines.

Hay tres partes para el encabezado de bucle for:

Código: c
for(inicialización; condición; incremento) {

// declaración (es);

}


La inicialización ocurre primero y exactamente una vez. Cada vez a través del bucle, la condición se prueba; Si es verdad, el bloque de la instrucción, y el incremento se ejecuta, entonces la condición se prueba otra vez. Cuando la condición se convierte en falsa, el bucle termina.

Ejemplo:
Código: c
// Efecto Dim de un LED usando un pin PWM
int PWMpin = 10; // LED en serie con resistor de 470 ohmios en el pin 10

void setup ()
{
  // no se necesita configuración
}

void loop ()
{
   for(int i = 0; i <= 255; i ++) {
      analogWrite (PWMpin, i);
      delay(10);
   }
}


Matrices

Una matriz es una colección de variables a las que se accede con un número de índice. Arrays en el lenguaje de programación C, en el que se basa Arduino, puede ser complicado, pero el uso de arrays simples es relativamente sencillo.

Crear (declarar) una matriz

Todos los métodos a continuación son formas válidas para crear (declarar) una matriz.
Código: c
  int myInts[6];
  int myPins[] = {2, 4, 8, 3, 6};
  int mySensVals[6] = {2, 4, -8, 3, 2};
  char message[6] = "hello";


Puede declarar una matriz sin inicializarla como en myInts.

En myPins declaramos una matriz sin elegir explícitamente un tamaño. El compilador cuenta los elementos y crea una matriz del tamaño adecuado.

Finalmente puede inicializar y dimensionar su matriz, como en mySensVals. Tenga en cuenta que cuando se declara una matriz de tipo char, se requiere un elemento más que su inicialización, para mantener el carácter nulo requerido.

Infografia en:
blog.underc0de.org/tips-informaticos


Fuente:
Riojas
www.arduino.cc


Saludos!!!