This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

[UNDERtip] Simplificar Código de Arduino

  • 0 Replies
  • 2528 Views

0 Members and 1 Guest are viewing this topic.

Offline Riojas

  • *
  • Underc0der
  • Posts: 60
  • Actividad:
    0%
  • Reputación 4
  • -RIOJAS
    • View Profile
    • Arduino Center
    • Email

[UNDERtip] Simplificar Código de Arduino

  • on: May 15, 2017, 05:26:29 pm
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.
Code: (c) You are not allowed to view links. Register or Login
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!!
Code: (c) You are not allowed to view links. Register or Login
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:

Code: (c) You are not allowed to view links. Register or Login
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:
Code: (c) You are not allowed to view links. Register or Login
// 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.
Code: (c) You are not allowed to view links. Register or Login
  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
You are not allowed to view links. Register or Login


Saludos!!!
« Last Edit: May 15, 2017, 05:52:30 pm by Riojas »