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 “antiguo”, 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’t 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 ​​por 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