(27-12-2015, 09:08 PM)pedmar escribió: (27-12-2015, 08:44 PM)Aeros escribió: es porque el for esta dentro de loop(), todo lo que esté dentro de loop se va ejecutando hasta que se apaga(para la simulación).
ponle un delay muy grande entre el { del for y el del loop y ya verás como "para" después de 8 ciclos.
efectivamente le he puesto un delay(20000); despues del } del for y antes del} del loop y se ha parado justo a los 8 ciclos.
¿pero esto ocurre solo en la simulación u ocurrirá también con los componentes físicos?
La mayoría de los lenguajes no te obligan a estar ejecutando algo continuamente. En Arduino te imponen una determinada estructura de ejecucion y lo hacen como si fuera parte del lenguaje.
La estructura básica del lenguaje de programación de Arduino es bastante simple y se compone de al menos dos partes. Cada una de estas dos partes necesarias, o funciones (setup y loop), encierran bloques que contienen declaraciones, estamentos o instrucciones, también se pueden llamar sentencias.
Código:
void setup() //Primera Parte
{
estamentos;
}
void loop() //Segunda Parte
{
estamentos;
}
En mi humilde opinión no era necesario definir con esa estructura, pero en un programa para un controlador como Arduino tiene bastante sentido que permamentemente haga algo. Si termina quedaría como muerto. Lo normal es que siempre tenga que hacer algo.
Por eso se define una función que se ejecuta en primer lugar (setup) y otra para que se ejectute continuamente (loop). En la primera como se ejecuta una sola vez antes que ninguna otra cosa, se aprovecha para incluir proceso de reparación o de inicialización.
Se han realizado unas pocas variaciones en el lenguaje C para Arduino y las más aparentes se refieren a esa estructura de doble función setup() y loop().
Esta estructura y el propio IDE de Arduino está inspirado en un lenguaje bastante nuevo y muy interesante llamado Processing, pero el lenguaje de Processing es bastante diferente. El lenguaje de Arduino es C++ con muy pocos cambios.
Si quieres hacer un programa que se ejecute una sola vez mete las instrucciones en la función setup() y deja la función loop() vacía.
Para más info:
Estructura de un programa
Para los que tengan curiosidad sobre los orígenes de C
En el lenguaje C estandar, de tola la vida, solo existe una función obligatoria que es la que se ejecuta inicialmente. Se llama main() y se ejecuta una sola vez. Opcionalmente, puede recibir argumentos a través de la linea de comandos y puede devolver un código que será 0 para indicar finalización correcta y se puede hacer que devuelva otro valor para indicar que no terminó correctamente.
C es un lenguaje de programación originalmente desarrollado por Dennis M. Ritchie entre 1969 y 1972 en los Laboratorios Bell. En 1969, un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Dennis Ritchie, Ken Thompson y Douglas McIlroy desarrollaron el sistema operativo Unix y la mayor parte de los programas de este sistema operativo se escribieron en lenguaje C.
El lenguaje C está muy orientado a la obtención de un código rápido lo cual es importante cuando trabajamos con sistemas operativos o con controladores que se conectan a dispositivos periféricos.