(:Solución de Problemas:)

Arduino Solución de problemas

Tabla de Contenidos (hide)

Subir

¿Porqué no puedo subir mis programas a la placa Arduino?

Hay algunas cosas que podrían no estar bien.

  • En primer lugar asegúrate de que tu placa está encendida (el LED verde está encendido) y conectada al ordenador (si no es así, consulta la sección "¿qué pasa si mi placa no se activa?").

  • A continuación, comprueba que el puerto correcto se ha seleccionado en el menú Tools > Serial Port (si el puerto no aparece, reinicia el IDE con la placa conectada al ordenador).

  • Asegúrate de que tiene el item correcto seleccionado en el menú Tools>Board. En particular, las nuevas placas Arduino Duemilanove vienen con un ATmega328, mientras que las antiguas tienen un ATmega168. Para comprobarlo, lee el texto impreso sobre el microcontrolador (el chip más grande) en tu placa Arduino. Para obtener más información sobre los ítems del menú Board, consulta la Guía para el entorno Arduino.

  • Desconecta los pines digitales 0 y 1, mientras que secarga el firmware (pueden conectarse y utilizarse después de que el código se haya subido).

  • Trata de cargar con nada más conectado a la placa (aparte del cable USB, por supuesto).

  • Asegúrate que la placa no toca nada metálico o conductor.

  • Comprueba que no estás ejecutando ningún programa que escanee todos los puertos serie, como aplicaciones de sincronización de PDA, Bluetooth, controladores USB (por ejemplo, BlueSoleil), Virtual Daemon Tools, etc

  • Asegúrate de que no tienes un software de firewall que bloquee el acceso al puerto serie (por ejemplo ZoneAlarm).

  • Es posible que debas salir de Processing, PD, vvvv, etc, si los estás utilizando para leer datos a través de la conexión USB o serie a la placa Arduino.

  • Si tienes una placa que no es compatible con auto-reset, asegúrate de que reinicias la placa un par de segundos antes de cargar. (Arduino Diecimila, Duemilanove, Mega, y Nano soportan auto-reset al igual que LilyPad, Pro y Pro Mini con conector de programación de 6-pines).

  • Sin embargo, ten en cuenta que algunos Diecimila fueron programados accidentalmente con el bootloader incorrecto y tal vez requieran volver a presionar el botón de reset físico antes de cargar, ver más sobreesta cuestión más adelante.

  • Sin embargo, en algunos equipos, es posible que tengas que pulsar el botón de reset en la placa después de clicar el botón de descarga en el entorno Arduino. Pruebe diferentes intervalos de tiempo entre los dos, hasta 10 segundos o más. Ésto sucede con ordenadores antiguos o que ejecutan muchos procesos en paralelo.

  • Si recibes este error: [VP 1] device is not responding correctly. Intenta cargar el programa otra vez (es decir, resetea la placa y pulse el botón de descarga por segunda vez).

  • Asegúrate de que hay un bootloader en la placa Arduino. Para comprobarlo, conectar un LED al pin 13 (Arduino Duemilanove, Diecmila y Mega tienen un LED marcado con L que ya está conectado al pin 13) y resetea la placa. El LED debe parpadear. Si no es así, consulta la página del bootloader para obtener instrucciones sobre la grabación de un bootloader en la placa.

  • Si tienes una placa Arduino muy antigua, puede que tengas que cambiar la velocidad de transmisión de carga de sketches a 9.600 (19.200 es lo normal, o 57.600 para Arduino Mega). Tendrás que cambiar la velocidad en el archivo preferences directamente. Ver la página sobre el fichero de preferencias para obtener instrucciones sobre cómo encontrarlo. Búscalo en tu equipo y cambia la propiedad serial.download_rate para que coincida con la de tu placa. Lo dicho, si tu placa es muy antigua (Arduino NG o anterior), se recomienda que actualices al último bootloader (que funciona a 19.200 baudios). Esto se puede hacer con el menú Tools > Burn Bootloader por medio de un programador de hardware externo.

Si aún así no funciona, puedes pedir ayuda en el foro. Por favor incluye la siguiente información:

  • Tu sistema operativo.

  • ¿Qué tipo de placa es la que tienes? Si se trata de un Mini, LilyPad u opción que requiera cableado adicional, incluye una foto de tu circuito, si es posible.

  • Independientemente de si fuiste capaz alguna vez de cargar software a la tarjeta. ¿Qué estabas haciendo con la tarjeta antes / cuando dejó de trabajar, y que paquete de software has añadido o eliminado de tu ordenador?

  • Los mensajes que aparecen cuando se intenta cargar con salida detallada habilitada. Para ello, presiona la tecla Mayús mientras haces click en el botón de subida en la barra de herramientas.

¿Porqué aparece "Build folder disappeared or could not be written" (Mac OS X)?

Esto se produce por una instalación defectuosa del software en tu Mac. ¿Arrastraste la aplicación Arduino.app al instalar al icono de disco (y en, por ejemplo, la carpeta de Aplicaciones)? Si no lo hiciste, no serás capaz de cargar los ejemplos, ya que el programa no será capaz de localizarlos.

Actualización Mac

¿Porqué el software de Arduino no se ejecuta después haber actualizado el Java en mi Mac? (Arduino 0016)

La última actualización de Java de Apple intenta utilizar la versión de 64 bits de las bibliotecas nativas, pero la aplicación Arduino viene con una versión de 32 bits de la biblioteca RXTX. Si inicia Arduino, obtendrás un error como:

@ @ Uncaught exception in main method: java.lang.UnsatisfiedLinkError: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: no suitable image found. Did find: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: no matching architecture in universal wrapper @ @

Para solucionar este problema, haz click en la aplicación Arduino (por ejemplo,Arduino 16.app) en el Finder y selecciona Obtener Información de la casilla Archivo del menú. En el panel de información, haz click en la casilla Abrir en modo 32 bits. A continuación, deberías ser capaz de ejecutar Arduino normalmente.

# StackOverflow

¿Porqué aparece un java.lang.StackOverflowError cuando intento compilar mi programa?

El entorno de desarrollo hace algunas transformaciones en el sketch de Arduino manipulando el código utilizando expresiones regulares. Esto a veces se confunde con ciertas cadenas de texto. Si aparece un error como:

 
java.lang.StackOverflowError
at java.util.Vector.addElement(Unknown Source)
at java.util.Stack.push(Unknown Source)
at com.oroinc.text.regex.Perl5Matcher._pushState(Perl5Matcher.java)   

esto es lo que está pasando. Puedes buscar secuencias inusuales que supongan "comillas dobles", "comilla simple", las barras invertidas \, comentarios, etc, en particular la secuencia '\ "' parece ser la causa problemas, se recomienda el uso de '"' en su lugar.

Alimentación Externa

¿Porqué no arranca mi sketch cuando estoy alimentando la tarjeta con una fuente de alimentación externa? (Arduino Diecimila o anterior)

Hay una serie de tarjetas Arduino antiguas (unas 1000) que presentan el problema de tener una versión del bootloader que tiene el pin RX sin conectar la resistencia de pull-up interna. Esto produce que, en ocasiones, el bootloader piense que está recibiendo un nuevo programa, si bien se trata sólo de datos aleatorios. Esto se puede solucionar actualizando el bootloader a la última versión o conectando el pin RX con una resistencia de 10K a tierra.

¿Porqué se congela Arduino cuando intento cargar un programa? (En Windows)?

Esto podría ser causado por un conflicto con el proceso de Logitech LVPrcSrv.exe, que es un programa residente en tu ordenador. Abre el Administrador de tareas y comprueba si este programa se está ejecutando, y si es así, cierra ese proceso antes de intentar subir más datos a la placa [ más información ].

Alimentación

¿Qué pasa si mi tarjeta no se enciende (el LED verde no se enciende)?

Si estás utilizando una tarjeta USB Diecimila o NG, asegúrate de que el puente (pieza de plástico pequeña cerca del conector USB) es en los pines correctos. Si tienes la certeza que tu placa recibe alimentación al usar una fuente de alimentación externa (conectado a la clavija de red), el puente debe ser más cercano a los dos pines para el cable de alimentación. Si, por el contrario, alimentas tu placa a través del puerto USB, el puente debe estar en los dos pines más cercanos a los conectores USB. Esta foto muestra la disposición para la alimentación de la placa del puerto USB.

Attach: jumper.jpg

Bootloader equivocado

¿Porqué mi Diecimila necesita tanto tiempo (6-8 segundos) para iniciar mi sketch?

Algunas de las placas de Arduino Diecimila (unas 1000) salieron de fábrica accidentalmente con el bootloader Arduino NG, este es un error que en ningún caso debiera manifestarse en placas Arduino posteriores al año 2008. En cualquier caso, tu placa funciona bien, pero requiere hacer reset manual de la placa al subir un sketch y necesita de ese tiempo de espera. Se puede reconocer el bootloader NG porqué el LED en el pin 13 parpadeará tres veces al efectuar presionar el botón de reset en la placa (el bootloader de la Diecimila sólo parpadeará una vez). Puede el bootloader correcto en su Diecimila, consulte la página del bootloader para más detalles.

Inicio

¿Qué debo hacer si me da un error al lanzar arduino.exe en Windows?

Si obtienes un error al hacer doble click en el ejecutable arduino.exe en Windows, por ejemplo:

@ @ Arduino has encountered a problem and needs to close. @ @

tendrás que poner en marcha Arduino utilizando el archivo run.bat situado en la misma carpeta. Por favor, ten paciencia, el entorno Arduino puede tomar algún tiempo para abrir según la configuración de tu ordenador.

¿Porqué no se ejecuta Arduino en las versiones anteriores de Mac OSX?

Si obtienes un error como este:

 Link (dyld) error: 

dyld: / Applications/arduino-0004/Arduino 04.app/Contents/MacOS/Arduino símbolos Indefinido: 
/ Applications/arduino-0004/librxtxSerial.jnilib undefined referencia a _printf $ LDBL128 espera que esté definido en / usr / lib / libSystem.B.dylib  

es probable que necesites actualizar a Mac OSX 10.3.9 o posterior. Las versiones anteriores tienen versiones incompatibles de algunas librerías del sistema.

¿Qué hago si me da un error "UnsatisfiedLinkError ( librxtxSerial.jnilib native library )" al lanzar Arduino?

Si obtienes un error como este al iniciar Arduino:

@ @ Uncaught exception in main method: java.lang.UnsatisfiedLinkError: Native Library /Users/anu/Desktop/arduino-0002/librxtxSerial.jnilib already loaded in another classloader @ @

es probable que tengas una versión antigua de la biblioteca de comunicaciones en tu ordenador. Busca comm.jar, jcl.jar o en / System / Library / Frameworks / JavaVM.framework / o en los directorios del CLASSPATH o variables de entorno PATH.

¿Qué pasa con el error "No se pudo encontrar la clase principal."?

Si recibe este error al lanzar Arduino:

@ @ JJava Virtual Machine Launcher: Could not find the main class. Program will exit. @ @

asegúrate de que descomprimiste correctamente el contenido del fichero Arduino.zip - en particular, que el directorio lib está dentro del directorio Arduino y contiene el archivo pde.jar.

¿Qué puedo hacer al respecto de conflictos con cygwin en Windows?

Si ya tienes cygwin instalado en tu máquina, podrías obtener un error como este al intentar compilar un sketch en Arduino:

@ @ [main] ? (3512) C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** fatal error - C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** system shared memory version mismatch detected - 0x75BE0084/0x75BE009C.

This problem is probably due to using incompatible versions of the cygwin DLL.

Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL. @ @

Si es así, primero asegúrate de que no tienes cygwin en ejecución cuando se utiliza Arduino. Si esto no funciona, puedes intentar eliminar las librerías cygwin1.dll del directorio Arduino y cambiarlas por cygwin1.dll de tu instalación existente de cygwin (probablemente en c: \ cygwin \ bin).

¿Porqué tardan el software Arduino y/o el menú Herramientas mucho tiempo en abrir (en Windows)?

Si el software Arduino tarda mucho tiempo en ponerse en marcha y parece bloquearse al intentar abrir el menú Herramientas, existe un conflicto con otro dispositivo en su sistema. El software de Arduino, al arrancar y al abrir el menú Tools, trata de obtener una lista de todos los puertos COM de tu ordenador. Es posible que un puerto COM creado por uno de los dispositivos de tu equipo ralentice este proceso. Echa un vistazo en el Administrador de dispositivos. Intenta desactivar los dispositivos que usan los otros puertos COM (por ejemplo, dispositivos Bluetooth).

Puerto Serie

¿Porqué no mi no aparece mi placa en el menú Tools | Serial Port?

Si estás usando una placa USB Arduino, asegúrate de instalar los drivers FTDI (véase el link de instalación para instrucciones). Si estás utilizando un adaptador de USB a serie con una placa serie, asegúrate de instalar los drivers correspondientes.

Asegúrate de que la tarjeta está conectada: el menú del puerto serie se actualiza cada vez que abres la casilla Tools del menú, así que si acabas de desenchufar la placa, no estará en el menú.

Comprueba que no estás ejecutando ningún programa que escanea todos los puertos serie, como aplicaciones de sincronización de PDA, Bluetooth controladores USB (por ejemplo, BlueSoleil), etc

En Windows, el puerto COM asignado a la placa puede ser uno de código muy alto. En ocasiones se recomienda probar a cambiar el número asignado al chip FTDI por uno más bajo. Tal y cómo comenta Zeveland:

"Tuve un montón de puertos virtuales COM creados para Bluetooth por lo que la placa estaba configurada para utilizar COM17. El IDE no fue capaz de encontrarla de modo que suprimí los otros puertos virtuales en el Panel de control (en XP) y trasladó el puerto asignado al chip FTDI de Arduino a otro más bajo, en concreto el COM2. Asegúrate de configurar el IDE de Arduino para utilizar el nuevo puerto y buena suerte. "

En Mac, si tienes una versión antigua de los controladores de FTDI, puede ser necesario borrarlos y reinstalar la última versión. Mas información en esta conversación del foro para instrucciones en cómo proceder (gracias a GCK).

¿Qué pasa si recibo una "gnu.io.PortInUseException" al cargar código o utilizando el monitor de serie (en Mac)?

 
Error inside Serial.<init>() 
gnu.io.PortInUseException: Unknown Application 
     at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) 
     at processing.app.Serial.<init>(Serial.java:127) 
     at processing.app.Serial.<init>(Serial.java:72) 
 

Esto probablemente significa que el puerto está actualmente en uso por otra aplicación. Por favor, asegúrate de que no estás ejecutando otros programas con acceso al puerto serie o puertos USB de tu placa, como la aplicación de sincronización de PDA, los administradores de dispositivos bluetooth, ciertos servidores de seguridad, etc. Además, ten en cuenta que algunos programas (por ejemplo, Max/MSP o Puredata) mantienen el puerto serie abierto, incluso cuando no los usas - puedes necesitar cerrar todos los parches que usan el puerto serie o salir de la aplicación por completo.

Si obtienes este error con Arduino 0004 o anterior, debieras actualizar a la última versión.

Tengo problemas con los controladores USB FTDI.

Intenta instalar los controladores más recientes de FTDI o ponte en contacto con su grupo de soporte en support1@ftdichip.com.

Arranque Sketch

¿Porqué no arraca mi sketch al encender o reiniciar la placa Arduino?

Lo más probable es que alguna aplicación esté enviando datos en serie a tu placa al arrancar. Durante los primeros segundos, el bootloader (que viene pregrabado en tu placa) escucha la llegada de datos desde el ordenador. Después de unos segundos sin comunicación, el bootloader inicia el sketch que ya está en la placa. Si continúa el envío de datos hacia el bootloader, nunca se determinará el final de ejecución del bootloader y tu sketch no arrancará. Tendrás que encontrar una manera de cesar el envío de datos serie a la placa durante el tiempo que esta necesita para arrancar o grabar tu sketch en la placa con un programador externo, que sustituya al bootloader.

¿Porqué mi sketch parece que carga correctamente, pero no hace nada?

Es posible que hayas seleccionado tu placa apropiadamente, pero con la opción de microcontrolador equivocado. Asegúrate de que el microcontrolador corresponde al de tu placa (ya sea Atmega8, ATmega168, ATmega328, o ATmega1280) - el nombre está escrito en el más grande de los chips en la placa.

Comprueba si usas una fuente de alimentación ruidosa. Esto podría causar al chip perder su sketch.

Por otra parte, el sketch puede ser demasiado grande para la tarjeta. Al subir tu sketch, Arduino 0004 y posteriores comprueban si es demasiado grande para el ATmega8, pero basa su cálculo en un bootloader de 1 Kb. Podrías tener bootloaders de mayor tamaño (p.ej. 2 Kb de los 8 Kb disponibles en tu placa). Si empleas placas Arduino oficiales, este problema no se presentará.

Si tienes acceso a un AVR-ISP, AVR-ISP-MKII, el programador de puerto paralelo, o cualquier otro dispositivo externo de programación de chips de la marca Atmel, puedes grabar la última versión del bootloader desde el menú Tools | Burn Bootloader. De lo contrario, puedes determinar en el entorno Arduino la cantidad de espacio disponible para tus programas editando la variable upload.maximum_size en su archivo de preferencias (ver: instrucciones sobre cómo encontrar el archivo?).

Tamaño

¿Cómo puedo reducir el tamaño de mi sketch?

Los chips ATmega en la placa Arduino son barato, pero tienen limitaciones en el espacio reservado para tus programas: 7Kb para el ATmega8, 14Kb para el ATmega168 y ATmega328, y 124Kb para el ATmega1280 (el resto del espacio es usado por el bootloader).

Por ejemplo, un truco consiste en limitar que librerías usas. Si estás utilizando operaciones en coma flotante, trata de reescribir el código para usar números enteros, lo que debería ahorrar cerca de 2 Kb. Elimine los# include declaraciones en la parte superior de tu programa para eliminar las bibliotecas que no estás usando.

También puedes tratar de hacer tu programa más corto.

En cualquier caso, desde Arduino trabajamos para reducir el tamaño del núcleo de Arduino para dejar más espacio para tus programas.

¿Porqué no puedo obtener un PWM (una salida analógica) cuando llamo analogWrite () en los otros pines que 3, 5, 6, 9, 10 o 11? (Arduino Duemilanove y Diecimila)

El microcontrolador de la placa Arduino Duemilanove (ATmega328) y Diecimila (ATmega168) sólo es compatible con PWM / analogWrite () en los pines determinados. Llamadas analogWrite () en las patas otro dará alto (5 voltios) para valores mayores de 128 y bajo (0 voltios) para valores inferiores a 128. (Nótese que placas Arduino antiguas con Atmega8 sólo trabajan con salida PWM en los pines 9, 10 y 11.)

¿Porqué recibo errores acerca de funciones o tipos no declaradas?

El entorno Arduino intenta generar automáticamente prototipos de sus funciones, de modo que puedas llamarlos a tu gusto en tus programas. Este proceso, sin embargo, no es perfecto, y en ocasiones produce mensajes de error.

Si declaras un tipo personalizado en el código y creas una función que acepte o devuelva valores de ese tipo, obtendrás un error al intentar compilar el sketch. Esto se debe a que el prototipo automático para esa función aparecerá sobre la definición de tipo.

Si declaras una función con un tipo de retorno de dos palabras (por ejemplo, "unsigned int"), el entorno no se dará cuenta de que es una función y no creará un prototipo para ello. Eso significa que debes proporcionar tu propia definición, o colocar la definición de la función por encima de cualquier llamada a la misma.

¿Porqué recibo errores sobre un dispositivo de firma no válida cuando se trata de subir un sketch?

Si obtienes un error como:

 
avrdude: Yikes!  Invalid device signature.
       Double check connections and try again, or use -F to override
       this check.
 

puede significar una de dos cosas. Bien seleccionaste la placa equivocada en el menú Tools > Board o no estás usando la versión correcta de avrdude. Arduino utiliza una versión ligeramente modificada de avrdude para subir programas a la placa Arduino. La versión estándar consulta la firma del dispositivo en un modo que el bootloader no es capaz de comprender . Asegúrate de que estás utilizando la versión de avrdude que viene con Arduino (Código Fuente).

Guía Inicio Los textos de la guía "Como empezar con Arduino" están licenciados bajo Creative Commons Attribution-ShareAlike 3.0 License. El código fuente de los ejemplos en la guía están liberados como dominio público.

Share