8- Arduino, primer programa, primeros errores.

Primer programa.

Anteriormente descubrimos el entorno de desarrollo, ahora puede descargar el primer firmware. Puede descargar firmware en blanco solo para asegurarse de que todos los controladores est茅n instalados y las placas generalmente est茅n actualizadas. Se recomienda hacer esto con una placa nueva, a la que nunca se han conectado sensores y m贸dulos, para excluir el fallo de la placa por culpa del usuario.

1. La placa est谩 conectada a la computadora a trav茅s de USB, los LED deben parpadear. Si esto no sucediera:

  • Cable USB defectuoso.
  • El puerto USB de la computadora est谩 defectuoso.
  • Puerto USB Arduino defectuoso.
  • Pruebe con otra computadora para eliminar algunos de los problemas de la lista.
  • Pruebe con otra placa (preferiblemente una nueva) para excluir algunos de los problemas de la lista.
  • Un diodo de entrada en la l铆nea USB se quem贸 en el Arduino debido a un cortocircuito provocado por el usuario al ensamblar el circuito.
  • La placa Arduino se quem贸 por completo debido a que el usuario conect贸 incorrectamente la alimentaci贸n externa o un cortocircuito.

2. La computadora emitir谩 una se帽al caracter铆stica para conectar nuevos equipos, y en la primera conexi贸n aparecer谩 la ventana 芦Instalar nuevo hardware禄. Si esto no sucediera:

  • Ver lista anterior de fallas.
  • El cable USB debe ser un cable de datos, no un simple 芦cargador禄.
  • Es aconsejable conectar el cable directamente a la computadora y no a trav茅s de un concentrador USB.
  • Los controladores Arduino no est谩n instalados (durante la instalaci贸n del IDE o desde la carpeta del programa), vuelva a la instalaci贸n.

3. En la lista de puertos ( Arduino IDE / Tools / Port ) aparecer谩 un nuevo puerto, generalmente COM3. Si esto no sucediera:

  • Ver lista anterior de fallas.
  • El controlador CH341 de la lecci贸n anterior no est谩 instalado correctamente.
  • Si la lista de puertos est谩 inactiva en absoluto, el controlador Arduino no est谩 instalado correctamente, vuelva a la instalaci贸n.
  • Se ha producido un error del sistema, p贸ngase en contacto con un t茅cnico inform谩tico conocido.

4. Elija su tabla. Si es un Arduino Nano, vaya a Tools \ Board \ Arduino Nano. Si es otra, elija otra. Haga clic en la flecha en la esquina superior izquierda ( descargue el firmware ). S铆, cargamos un firmware vac铆o.

  • [Solo para Arduino Nano] El microcontrolador chino Nano tiene un cargador de arranque 鈥渁ntiguo鈥, as铆 que seleccione Herramientas \ Procesador \ ATmega328p (antiguo cargador de arranque). Algunos chinos est谩n uniendo un nuevo gestor de arranque en sus placas, por lo que si el firmware no se carg贸 (tarda un minuto en cargarse y el error avrdude: stk500_getsync () falla ), intente cambiar el elemento Procesador a ATmega328p.

Si aparece el mensaje 禄 Descarga completada 芦, entonces todo est谩 en orden y puede cargar otros bocetos. En cualquier caso, en su camino, encontrar谩 otras dos variantes de eventos que ocurren despu茅s de hacer clic en el bot贸n 芦Descargar禄: un error de compilaci贸n y/o un error de descarga. Ve谩moslos con m谩s detalle.


Errores de compilaci贸n.

Ocurre en la etapa de ensamblaje y compilaci贸n del firmware. Los errores de compilaci贸n se deben a problemas en el c贸digo del firmware, es decir, el problema es puramente de software. A la izquierda del bot贸n 芦descargar禄 hay un bot贸n de marca de verificaci贸n – comprobar. Durante la verificaci贸n, se compila el firmware y se detectan errores, si los hubiera. En este caso, es posible que Arduino no est茅  conectado a la computadora.

  • En la ventana negra en la parte inferior del IDE de Arduino, puede leer el texto completo del error  y comprender d贸nde empezar a buscar.
  • En los bocetos listos para usar descargados de Internet, a menudo se produce un error con la descripci贸n nombre_archivo .h no existe tal archivo o directorio. Esto significa que el boceto usa la biblioteca  <nombre de archivo>, y debe colocarlo en  Archivos de programa / Arduino / bibliotecas /. Todos mis proyectos siempre tienen una carpeta con bibliotecas usadas que necesitan ser instaladas. Adem谩s, las bibliotecas siempre se pueden buscar en Google por su nombre de archivo.
  • Al utilizar algunas bibliotecas, m茅todos o funciones especiales, una placa seleccionada incorrectamente en 禄 Herramientas / Placa 禄 puede convertirse en un error. Ejemplo: Firmware con Mouse.h o keyboard.h, la biblioteca se compila s贸lo para Leonardo y Micro.
  • Si escribe el firmware, se resaltar谩 cualquier error de sintaxis en el c贸digo, y en la parte inferior de la ventana negra podr谩 leer una descripci贸n m谩s detallada de qu茅 es el fallo. Por lo general, se indica la l铆nea en la que se cometi贸 el error, y esta l铆nea tambi茅n se resalta en rojo.
  • A veces, el motivo del error es una versi贸n demasiado antigua o demasiado nueva del IDE de Arduino. Lea los comentarios del desarrollador de los bocetos.
  • El error de espacio libre insuficiente se produce por razones obvias. Si el proyecto usa una placa Nano en un procesador de 328p, y ahorr贸 tres Euros y compr贸 un procesador de 168, el avaro paga dos veces. Optimizaci贸n: memoria est谩tica: la memoria ocupada por el c贸digo (bucles, funciones). La memoria din谩mica est谩 ocupada por variables.

Errores frecuentes en el c贸digo que conducen a errores de compilaci贸n.

  • expected 鈥,鈥 or 鈥;鈥  – falta una coma o un punto y coma en la l铆nea anterior.
  • stray 鈥榎320鈥 in program  – Caracteres no admitidos en el c贸digo.
  • expected unqualified-id before numeric constant: el nombre de la variable no puede comenzar con un d铆gito.
  • 鈥  was not declared in this scope: la variable o funci贸n se est谩 utilizando pero no se ha declarado. El compilador no puede encontrarla.
  • redefinici贸n de… – re-declaraci贸n de una funci贸n o variable.
  • storage size of鈥 isn鈥檛 known: la matriz se especifica sin especificar el tama帽o.

Errores de carga.

Ocurren en la etapa en que el firmware se ensambla, compila, no hay errores cr铆ticos en 茅l y se carga en la placa a trav茅s de un cable. Puede producirse un error tanto debido a un mal funcionamiento del hardware como a la configuraci贸n del programa y del controlador.

  • El cable USB que se conecta al Arduino debe ser un  cable de datos, no un cable de solo carga. Los reproductores y los tel茅fonos inteligentes se conectan a la computadora mediante el cable que necesitamos.
  • El motivo del error de descarga puede ser que no est谩 instalado / mal instalados los controladores CH340, si tiene un NANO chino.
  • Tambi茅n habr谩 un error avrdude: ser_open (): no se puede abrir el dispositivo si el puerto COM al que est谩 conectado el Arduino no est谩 seleccionado. Si no hay otros puertos adem谩s de COM1, lea los dos puntos anteriores, o  pruebe con otro puerto USB, o incluso con  otra computadora.
  • La mayor铆a de los problemas de arranque causados 鈥嬧媝or la 芦congelaci贸n禄 de arduino o del cargador de arranque pueden tratarse desconectando completamente el arduino de la fuente de alimentaci贸n. Luego insertamos el USB y lo flasheamos nuevamente.
  • El error de descarga puede deberse a una placa incorrecta seleccionada en 禄 Herramientas / Placa , as铆 como a un procesador incorrecto en 禄 Herramientas / Procesador禄.  Adem谩s, en las 煤ltimas versiones de IDE, debe seleccionar  ATmega328P (antiguo cargador de arranque) para placas NANO chinas.
  • Si tiene un monitor de puerto COM abierto en otra ventana IDE de Arduino o la placa se  comunica a trav茅s del puerto COM con otro programa (Ambibox, HWmonitor, SerialPortPlotter, Putty etc.), recibir谩 un error de descarga porque el puerto est谩 ocupado. Descon茅ctese del puerto o cierre otras ventanas y programas.
  • Si usa los pines RX o TX en su boceto, desconecte todo de ellos! Usando estos pines, el Arduino se comunica con la computadora, incluso para descargar el firmware.
  • Si la descripci贸n del error contiene que el cargador de arranque no responde y no est谩 sincronizado, y se han verificado todos los elementos anteriores de esta lista, el cargador de arranque est谩 muerto con un 95% de probabilidad. El segundo resultado desagradable es que el gestor de arranque ha fallado y debe volver a actualizarse.

Advertencias.

Adem谩s de los errores debido a los cuales el proyecto no se cargar谩 en el tablero y no funcionar谩, tambi茅n hay advertencias que se muestran en texto naranja en el 谩rea negra del registro de errores. Pueden aparecer advertencias incluso cuando aparece 禄 Descarga completa 禄 encima del registro de errores. Esto significa que no hay errores incompatibles con la vida en el firmware, fue compilado y cargado en la placa. Entonces, 驴Qu茅 significan las advertencias? La mayor铆a de las veces puede ver lo siguiente:

  • #pragma message– los mensajes con la directiva Pragma suelen ser mostrados por bibliotecas, informando sobre su versi贸n o algunas configuraciones.
  • No hay suficiente memoria, el programa puede ser inestable: un poco por encima de esta advertencia, generalmente hay informaci贸n sobre la memoria utilizada. La memoria del dispositivo se puede terminar hasta en un 99%, no pasar谩 nada malo. Es una memoria flash y no cambia durante el funcionamiento. Pero es aconsejable usar la memoria din谩mica no m谩s del 85-90%, de lo contrario, puede haber fallas realmente incomprensibles en el trabajo, ya que la memoria est谩 constantemente actualiz谩ndose durante el trabajo. Depende del boceto y principalmente del n煤mero de variables locales. Puede escribir un c贸digo que funcione de manera estable con el 99% de la memoria SRAM ocupada. De nuevo, esto es solo una advertencia, no un error.

Preguntas m谩s frecuentes.

Concluyendo la secci贸n Introducci贸n a Arduino, hablemos de las preguntas que los principiantes suelen hacer:

  • 驴Se puede flashear Arduin solo una vez? No, varias decenas de miles de veces, todo depende del recurso de la memoria flash, y es bastante grande.
  • 驴C贸mo borro / necesito borrar el firmware antiguo al cargar uno nuevo? La memoria se borra autom谩ticamente cuando flashea, el firmware antiguo se elimina autom谩ticamente.
  • 驴Se pueden escribir dos firmwares para que funcionen juntos? No, el firmware borra absolutamente todos los datos antiguos. Necesita hacer uno de los dos firmwares, para que no haya conflictos.
  • 驴Es posible 芦extraer禄 el firmware de la Arduino ya flasheado? Te贸ricamente es posible, pero solo en forma de c贸digo de m谩quina ilegible, en el que se convierte el firmware C++ durante la compilaci贸n, es decir, Esto NO te ayudar谩 EN NADA si no tienes un t铆tulo en programaci贸n de ensamblador de bajo nivel. 
    • 驴Por qu茅 es necesario? Por ejemplo, tenemos un dispositivo cerrado y queremos 芦clonarlo禄. En este caso, s铆, existe la opci贸n de volcar el firmware y subirlo a otra placa con el mismo microcontrolador.
    • Si hay un deseo de leer el c贸digo, por desgracia, el firmware se lee en forma de c贸digo de m谩quina binario, que una persona com煤n no puede volver a convertir en un c贸digo legible similar a C.
    • Puede extraer el firmware, hablando de manera m谩s cient铆fica: puede volcar el firmware utilizando el programador ISP.
    • Puede eliminar el volcado de firmware solo si el desarrollador no ha limitado esta posibilidad, por ejemplo, escribiendo los bits de bloqueo que proh铆ben leer la memoria Flash o deshabilitando el bus SPI por completo. Si el desarrollador es usted y desea proteger su dispositivo de la copia tanto como sea posible, escriba los bits de bloqueo y la desactivaci贸n del bus SPI.

Deja un comentario