Arrancando con arduino, pregunta general

Que tal gente! estoy introduciendome en el ardunico mundo y recurro a uds para que me orienten un poco.
Vengo del 8051 y copilaba con keil, tenia un diminuco main.c con una maquina de estado que lo unico que hace es llamar funciones que tenia en otros files .c todo muy muy prolijo, meticuloso y comprendible. Al punto que si hagarro hoy un programa de hace 5años muy probablemente comprenda que hacia y como lo hacia.

Lo que noto en arduino es que no es tannnnnnn asi. Si no que en un mismo main o sketch como le dicen se llama tambien a funciones que no se donde estan, y cuando quieren hacer otra funcion la hacen dentro del mismo sketch. No se si esto esta mal o bien, tampoco mi intencion como novato en este mundo es poner en tela de juicio que todos esten programando mal y yo soy el capo del C porque la verdad que me cuesta un monton hacer que un led titile... IMAGINEN! jajaja

Tengo una serie de dudas .. me podrán ayudar?

1) veo que en el ejemplo del blink se hace que un led titile, que pasa si no me interesa tenerlo dentro del sketch y quiero hacer una funcion por ejemplo "void blink(char,char)" que cuando la llamo le digo "blink (pin,cantidad de veces)" y bueno.. entro a un for donde hago que el pin tal titile tantas veces. ok muy simple no?
pero hora si me interesa hacer que esa funcion sea universal y utilizarla de la misma forma que un printf.... como hago? tengo que hacer un blink.h y meterlo en mi proximo sketch con un "#include <blink.h>" o algo asi??

2) en referencia a la pregunta 1, veo por ejemplo que para hacer andar el enc28j60 trae un ejemplo que llama a algunas funciones por ejemplo "EthernetServer()" y no se donde estan, me recorri toda la libreria y no la encontre y no solo eso,... si no que cuando hace el "include" lo hace a algun file.h ...

Me dan una mano?
Muchas gracias!!
 
Hola.
Como te entiendes mejor con la manera de programar clásica, sugiero que pruebes con el Altmel Studio que tiene soporte para Arduino.
Saludos.
 
En el propio entorno del arduino tienes un montón de ejemplos de todo tipo.
Arduino es muy sencillo para cosas fáciles, cuando se complica un poco hay que tirar de C "normal" para complementarlo un poco.
 
que tal gente!! se me complico y estuve apartodo un tiempo, ahora retomo nuevamente!

Axel, ya me instale el atmel studio, es medio complicado ahora, no encuentro nada pero ya veremos!! no es tan intuitivo como el arduino jaja. Eso si, se lo ve mucho mas potente!!!

Scooter, claaro!. Yo vengo de la vieja escuela donde lo complicado es ley, y tener las cosas tan a mano hace que muchas veces no encuentre nada. Veo si, muchos proyectos en arduino y mucho mas complicados de los que quiero hacer. Pero noto que pasan por alto muchas cosas y las dan por sabida o como soluciones o resetas magistrales que "yo" no logro entender. No me interesa ahora la maquina de hacer chorizos donde copio y pego lo que hizo otro hasta que de con alguno que funcione si no mas bien en ver y analizar que hizo otra persona, como lo hizo, porque lo hizo y lograr utilizar lo mismo, o similar o una mejora en mi proyecto basicamente.

Muchas gracias!
 
Todo el código fuente para el MCU lo tienes en la carpeta de 'arduino-1.0.x/hardware/arduino/cores/arduino'
Basicamente todo sketch empieza con el archivo main.c dentro de esa carpeta y el resto del codigo es lo que uno va escribiendo, el main solo inicia setup(); y Loop(); pero uno debe escribirlas, si se pueden crear tus propias funciones y colocarlas aparte en sus archivos .h y .cpp.
El código de las librerias esta en 'arduino-1.0.x/libraries' aparte hay otros que son específicos para determinadas tarjetas como el mapa de pines.

Te adjunto el ejemplo que decias sobre colocar la funcion de destello en otro archivo, solo que aunque el IDE puede abrir y modificar los archivos, no le veo una opción para crearlos, así que simplemento tomo el bloc de notas y creo los primeros archivos .h y .cpp, luego solo es cuestión de guardar lo en la misma carpeta del sketch y el IDE lo carga sin problemas, la linea #include <Arduino.h> es para llamar al resto de las funciones del lenguaje Arduino.
 

Adjuntos

  • blink.zip
    704 bytes · Visitas: 8
Última edición:
Atrás
Arriba