¿Escribir un programa en C fuera de Arduino IDE?

12

Me gusta la idea de usar Arduino IDE para proyectos simples y comenzar a trabajar con Arduino, pero el consenso que he llegado hasta ahora es que es para aquellos que son nuevos en Arduino y / o la programación en general.

Tengo entendido que es posible escribir un programa en C desde cero, completamente fuera del IDE de Arduino, y luego usar una herramienta como AVRDUDE para cargarlo en un MCU de Arduino. Esta opción, aunque atractiva e interesante, me deja con algunas preocupaciones:

  • ¿Qué bibliotecas Arduino necesitarían ser importadas / vinculadas por un programa "C sin procesar"? Supongo que cuando un programa basado en Arduino IDE se ejecuta digitalWrite(...), realmente está llamando a C lib, probablemente proporcionado por Arduino, bajo el capó. Me preocupa asegurarme de que todas estas "bibliotecas subyacentes" se incluyan con mi programa C. Pensamientos?
  • ¿Hay algo más "perdido" al volar solo y aventurarse fuera del IDE de Arduino? ¿Alguna capacidad / característica que ahora tendría que "rodar por mi cuenta"?
smeeb
fuente
arduino.stackexchange.com/questions/9538/… Las respuestas a mi pregunta me ayudaron a configurarlo. Puede reemplazar / omitir cualquier cosa de arduino. Puedes: -Haz tu propio tablero. -Utilice su propio IDE. -Utiliza tus propias bibliotecas.
Paul

Respuestas:

4

Aquí hay dos buenos artículos sobre cómo Arduino realmente funciona en segundo plano. Cómo eliminó la fricción de la programación del microcontrolador.

  1. Un recorrido por las partes internas de Arduino: ¿Cómo funciona realmente Hello World?
  2. Arduino y GCC, compilando y cargando programas usando solo makefiles

También se discutió aquí. ¿Hay alguna forma o tutorial para convertir el código Arduino en código C?

Michal Foksa
fuente
Gracias @Michal Foksa (+1) - ¡Creo que estoy sorprendido de que la respuesta a esto no sea mucho más conocida! Yo hubiera pensado que el IDE Arduino tenía, digamos, una lib/en algún directorio bajo la raíz de la instalación que tenía cosas como arduino-core.dll, arduino-io.dll, etc.
smeeb
@smeeb: Tiene razón, la instalación de Arduino IDE incluye, tiene que incluir, bibliotecas de las funciones básicas de tiempo de ejecución más las proporcionadas por el usuario. A la mitad de la página del enlace 2, en el archivo MAKE, el símbolo LIBS los señala. No son .dlls (que en Windows se llaman en tiempo de ejecución); son archivos de objetos (.o en sistemas similares a Unix, probablemente los mismos en Windows) que están vinculados estáticamente con sus archivos de objetos compilados en (en última instancia) un archivo de carga .hex, que es la imagen completa del cargador. ...
JRobert
... Es bien conocido por las personas que escriben programas para ganarse la vida, pero los diseñadores de herramientas Arduino (marca) han ocultado deliberadamente tantos detalles desordenados como sea posible para que la aplicación de la electrónica digital esté disponible para las personas sin que tengan que convertirse en profesionales. programadores e ingenieros para hacerlo. En la medida en que encuentre esta información difícil de encontrar en la comunidad Arduino, ¡han tenido éxito!
JRobert
Desafortunadamente, por razones heredadas, construyes el software Arduino de manera bastante diferente a la forma estándar aceptada. Al "eliminar la fricción" para simplificarlo, crearon una gran comunidad incompatible. Cada 'complemento' de IDE es un intento de hacer que algo no estándar funcione de manera casi estándar. Tenga eso en cuenta cuando tenga problemas.
5

Tiene toda la razón sobre la necesidad de vincular con otras bibliotecas. Sin embargo, no necesariamente debe preocuparse por todos los detalles usted mismo, a menos que quiera / necesite hacer algo inusual. Varios IDE alternativos ya admiten Arduino, generalmente a través de complementos que manejan muchos de los detalles automáticamente.

Normalmente recomiendo Eclipse, ya que es un IDE muy utilizado para diversos fines. Sin embargo, hay varias otras posibilidades. Vea esta pregunta para más información:

Peter Bloomfield
fuente
Gracias @Peter R. Bloomfield (+1), sin embargo, realmente estoy buscando una respuesta no centrada en IDE. No es que tenga nada en contra de los IDE, es solo que para comprender el "panorama de la biblioteca" de Arduino, siento que los IDE son solo un intermediario innecesario. Dicho esto, supongo que hay 1+ "bibliotecas principales" con las que TODAS las aplicaciones de Arduino deben vincularse, y que hay bibliotecas opcionales que puede necesitar o no, dependiendo de lo que su aplicación realmente haga. ¿Me puede indicar una lista de estas "bibliotecas principales", así como otras opcionales? ¡Gracias de nuevo!
smeeb
Y para calificar lo que estaba diciendo sobre que los IDE son "intermediarios innecesarios", lo que realmente quiero decir es que debería poder escribir una aplicación C fuera de cualquier IDE (Arduino, Eclipse u otro), enlace a las bibliotecas Arduino que mi aplicación necesita, y aún compila / implementa la aplicación en el hardware Arduino. Me pregunto cuáles son esas bibliotecas y dónde puedo encontrar documentación sobre ellas.
smeeb
@smeeb Dado que Arduino está dirigido a principiantes, no creo que haya mucha (o ninguna) documentación oficial en ese sentido. Espero que la mejor manera de investigarlo sea buscar en línea ejemplos de archivos MAKE Arduino. Hay algunos ejemplos antiguos cerca de la parte inferior de esta página .
Peter Bloomfield
@smeeb: Al igual que tú, no soy fanático de los IDEs. Hay algunos makefiles genéricos de Arduino que flotan en la Web. Es, básicamente, tiene que compilar la biblioteca núcleo de Arduino en libore.a, a continuación, compilar el archivo .ino con -x c++ -include Arduino.hpara su compilador para entenderlo (además de un montón de -D, -I, etc) y el enlace con libcore.a.
Edgar Bonet
0

Sí, puedes escribir un programa fuera de Arduino IDE. Por ejemplo, probé Eclipse IDE con el complemento AVR y ahora me quedo con AVR Studio. Por supuesto, no tendrá algunas funciones que puede usar cuando escribe en Arduino IDE y también algunas bibliotecas. Pero, ¿por qué no intentar implementar cosas? ¿Por qué limitarse a las funciones y bibliotecas creadas por otros cuando puede aprender y escribir sus propias pertenencias, tal vez mejor que las existentes?

23ars
fuente
-3

ESP8266 + Arduino IDE 1.6.4 portátil - Guía de instalación rápida completa www.instructables.com /.../ ESP8266-Arduino-IDE-164-Portable-F ...

Todos sus archivos Arduino IDE v 1.6.4, incluidas la extensión ESP8266, bocetos, bibliotecas instaladas, etc., deben ubicarse solo en la nueva carpeta creada "arduino-1.6.4".

SMILEA
fuente
Esta no es una respuesta muy útil. El enlace no es un enlace real. E incluso si lo fuera, Stack Exchange desaprueba las respuestas de solo enlace, ya que el sitio vinculado puede fallar. Por favor amplíe su respuesta.
Nick Gammon