Tengo experiencia en la programación de sistemas integrados (TI MSP430, Atmel ATxmega). ¿Cómo es la programación de un Arduino diferente a esos? ¿Qué conocimiento sobre C puedo tomar para programar el Arduino?¿Cómo es la programación de un Arduino diferente al estándar C?
Respuesta
Si bien no conozco el ATXMega, los chips AVR de 8 bits como el ATmega328 utilizado en los nuevos Arduinos utilizan el compilador AVR-GCC. Esto permite compilar C e incluso C++ en un chip AVR. Un nivel por encima del AVR-GCC es el AVR Libc, una biblioteca C que hace que la programación para el AVR sea una tarea de nivel superior (ya no tiene que referirse a los registros directamente, etc.).
El Arduino IDE utiliza AVR-GCC y AVR libc library en el back-end. Además, el Arduino IDE hace other libraries available, como una buena interfaz serial.
Finalmente, el Arduino viene con un gestor de arranque grabado en el chip AVR. El gestor de arranque simplemente hace posible programar el AVR usando una conexión en serie (desde USB) en lugar de un Programador In-Sytem o una Junta de Desarrollo.
Suficiente historia de fondo, para responder a su pregunta: El Arduino se puede programar en C e incluso en C++. Las bibliotecas disponibles están escritas en C y todo se compilará utilizando AVR-GCC. El Arduino IDE ni siquiera es necesario.
Editar
Parece que hay una buena cantidad de interés en este tema. Escribí una publicación de blog para tratar de dar more in-depth details on the AVR, Arduino, and AVR-GCC.
están escritas en C y MAYORMENTE en C++ –
El repositorio del proyecto Eclipse ha sido eliminado. – oldmud0
@ oldmud0 gracias, debo haber eliminado el repositorio de GitHub en algún momento. Eliminé la referencia al proyecto Eclipse de la respuesta. – baalexander
Arduino es C, excepto que esta se inserta en cada programa:
void main() {
setup();
for(;;) {
loop();
}
}
'void' main?;-) –
Arduino es más que C, es [(un subconjunto de) C++] (http://en.wikipedia.org/wiki/Processing_%28programming_language%29#Wiring.2C_Arduino.2C_and_Fritzing). –
También existen algunas otras excepciones cuando se usa el Arduino IDE. Por ejemplo, hay problemas al utilizar estructuras en llamadas a funciones o devoluciones a menos que defina la estructura en un archivo .h separado. Como se dice en http://playground.arduino.cc/Code/Struct: la solución alternativa Arduino/hack es tener todas las funciones que requieren estructuras de datos personalizadas para colocarse en un archivo .h adicional. Simplemente cree una nueva pestaña en el IDE y asígnele un nombre.h, luego #include "name.h" – ViennaMike
Puede tomar más o menos todos sus conocimientos con C y sistemas embebidos y que será más que bien. No es difícil de usar en absoluto. Marque la página Arduino Reference y estará escribiendo cosas en poco tiempo.
Arduino tiene forma de C y es extremadamente fácil de recoger. Se han abstraído de hacer cosas como leer y escribir en registros periféricos para realizar tareas básicas.
Una ojeada a un código de ejemplo y a la referencia de Arduino, estará listo y funcionando en muy poco tiempo si realmente ha hecho C real en cualquier otra plataforma.
Puede tomar su conocimiento de C existente cuando usa Arduino.
El propósito era permitir a los artistas/no programadores comenzar fácilmente con la programación de hardware y retoques, por lo que el 'idioma Arduino' es simplemente un envoltorio para simplificar el desarrollo.
Debería ser mucho más fácil para usted, como programador de C usar Arduino. El documentation no es muy largo, el wiki es bueno y las personas en el forum son entusiastas y serviciales.
- 1. Lenguajes de programación Dirigido a Arduino/AVR
- 2. ¿Cuál es la fuente de programación estándar utilizada en Textmate?
- 3. Android HMAC-SHA1 Diferente al estándar Java HMAC-SHA1
- 4. Programación de Arduino en Mac OS X con Xcode 5?
- 5. ¿La programación funcional es un subconjunto de la programación imperativa?
- 6. ¿Es posible ejecutar ZeroMQ en un Arduino
- 7. Programación inalámbrica con Arduino XBee Shield y XBee Explorer
- 8. ¿Por qué WinAPI es tan diferente de la C "normal"?
- 9. trim no es parte de la biblioteca c/C++ estándar?
- 10. diseño estándar de C++
- 11. ¿Es este estándar válido c?
- 12. ¿Cuál es la diferencia/relación entre AVR y Arduino?
- 13. versiones de la biblioteca estándar de C++
- 14. ¿Cómo combinar cadenas de C++ y cadenas de Arduino?
- 15. ¿La longitud de línea máxima de docstring es diferente del estándar PEP8 normal?
- 16. ¿Qué es la programación lineal?
- 17. ¿Cómo puedo acceder al viewForHeaderInSection estándar para un tableView?
- 18. Cómo sobrescribir la salida estándar en C
- 19. Conceptos básicos de Arduino UNO para C#
- 20. ¿Por qué la longitud máxima de la cadena C es literalmente diferente de la máxima char []?
- 21. ¿La recolección de basura es automática en C++ estándar?
- 22. Comenzando con Arduino?
- 23. ¿Es "maestro" un nombre de rama estándar en git, o es solo la práctica estándar?
- 24. Vectores en Arduino
- 25. Programación funcional en C++
- 26. ¿Puede una implementación C incluir implícitamente encabezados estándar cuando se incluye un encabezado diferente?
- 27. Programación funcional: símbolos estándar, diagramas, etc.
- 28. C bibliotecas no estándar
- 29. Subprocesos asíncronos en C++ estándar
- 30. Intérpretes escritos en C o C++ estándar
Se ha eliminado la etiqueta C++, ya que es pura C. – Xeo
Lo siento, estaba confundido porque aquí en este ejemplo http://www.arduino.cc/en/Hacking/LibraryTutorial utilizan C++ – Nathan
No entiendo por qué la etiqueta C++ ha sido eliminada. Las bibliotecas de Arduino son generalmente clases de C++. (Doh! Dos años de edad comentarios :-P) –