Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[UNDERtip] Simplificar Código de Arduino

  • 0 Respuestas
  • 1802 Vistas

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

Desconectado Riojas

  • *
  • Underc0der
  • Mensajes: 59
  • Actividad:
    0%
  • Reputación 4
  • -RIOJAS
    • Ver Perfil
    • Arduino Center
    • Email
« en: Mayo 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.
Código: C
  1. void setup() {
  2.   pinMode(3,OUTPUT);
  3.   pinMode(4,OUTPUT);
  4.   pinMode(5,OUTPUT);
  5.   pinMode(6,OUTPUT);
  6.   pinMode(7,OUTPUT);
  7.   pinMode(8,OUTPUT);
  8. }
  9.  
  10. void loop() {
  11.   digitalWrite(3,HIGH);
  12.   delay(200);
  13.   digitalWrite(3,LOW);
  14.   delay(200);
  15.   digitalWrite(4,HIGH);
  16.   delay(200);
  17.   digitalWrite(4,LOW);
  18.   delay(200);
  19.   digitalWrite(5,HIGH);
  20.   delay(200);
  21.   digitalWrite(5,LOW);
  22.   delay(200);
  23.   digitalWrite(6,HIGH);
  24.   delay(200);
  25.   digitalWrite(6,LOW);
  26.   delay(200);
  27.   digitalWrite(7,HIGH);
  28.   delay(200);
  29.   digitalWrite(7,LOW);
  30.   delay(200);
  31.   digitalWrite(8,HIGH);
  32.   delay(200);
  33.   digitalWrite(8,LOW);
  34.   delay(200);
  35. }

Como verán tenemos 35 lineas de código para algo tan sencillo...
Ahora veremos el código ya simplificado!!
Código: C
  1. int led[]={3,4,5,6,7,8};
  2. int numero_led=6;
  3.  
  4. void setup() {
  5.   for (int i=0;i<numero_led;i++)
  6.   {
  7.   pinMode(led[i],OUTPUT);
  8.   }  
  9. }
  10.  
  11. void loop() {
  12.   for (int i=0;i<numero_led;i++)
  13.   {
  14.   digitalWrite(led[i],HIGH);
  15.   delay(200);
  16.   digitalWrite(led[i],LOW);
  17.   delay(200);
  18.   }  
  19. }

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
  1. for(inicialización; condición; incremento) {
  2.  
  3. // declaración (es);
  4.  
  5. }

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
  1. // Efecto Dim de un LED usando un pin PWM
  2. int PWMpin = 10; // LED en serie con resistor de 470 ohmios en el pin 10
  3.  
  4. void setup ()
  5. {
  6.   // no se necesita configuración
  7. }
  8.  
  9. void loop ()
  10. {
  11.    for(int i = 0; i <= 255; i ++) {
  12.       analogWrite (PWMpin, i);
  13.       delay(10);
  14.    }
  15. }

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
  1.   int myInts[6];
  2.   int myPins[] = {2, 4, 8, 3, 6};
  3.   int mySensVals[6] = {2, 4, -8, 3, 2};
  4.   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!!!
« Última modificación: Mayo 15, 2017, 05:52:30 pm por Riojas »

 

¿Te gustó el post? COMPARTILO!



Arduino + Snap4Arduino "Hola Mundo"

Iniciado por Riojas

Respuestas: 1
Vistas: 3152
Último mensaje Febrero 19, 2017, 09:31:50 pm
por rreedd
Arduino + Snap4Arduino "Juego PONG" [Parte1]

Iniciado por Riojas

Respuestas: 0
Vistas: 2415
Último mensaje Febrero 24, 2017, 04:59:07 pm
por Riojas
Arduino + Snap4Arduino "Juego PONG" [Final]

Iniciado por Riojas

Respuestas: 0
Vistas: 1920
Último mensaje Marzo 15, 2017, 02:33:08 pm
por Riojas
Arduino + Snap4Arduino "Juego PONG" [Parte2]

Iniciado por Riojas

Respuestas: 0
Vistas: 2129
Último mensaje Marzo 03, 2017, 07:07:08 pm
por Riojas
Entornos Gráficos para la Programación: Plataforma Open Hardware Arduino

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2817
Último mensaje Junio 30, 2012, 06:47:30 pm
por ANTRAX