Ayuda con Arduino uno y delay

Hola a todos, tengo un pequeño problema con el Arduino Uno que no me había pasado nunca con las demás placas de arduino.

El problema es que para poder usar la sentencia delay(); tengo que añadir en la función void setup() la instrucción serial.begin(); si no pongo esta instrucción no me funciona los delay(). ¿A alguien más le pasa esto? ¿Sabe alguien a que es debido este fallo?

Otra duda que tengo es si los pines 0 y 1 se pueden usar cuando se utiliza serial.begin(); he buscado información pero no encuentro nada que me resuelva esta duda.

Para dar algo más de información programo la placa de arduino con la última versión del IDE para arduino que hay en la página oficial bajo el SO linux (Distribución Fedora 14, Kernel 2.6.35.13-91.fc14.x86_64).

Espero que me puedan ayudar, Gracias.

si usas serial para comunicar con el pc por puerto de serie entonces los pines 0 y 1 no los puedes usar para nada mas.

respecto al delay ni idea.

OK, gracias.

Seguiré investigando lo del delay y si no consigo solucionarlo tendré que buscar una manera de ahorrar pines :slight_smile:

lo primero es que podrias poner el codigo del programa para que alguien pueda encontrar tu error

y lo de los pines 0 y 1 es lo que te ha comentado Sergegsx

los pines 0 y 1 es lo que te ha comentado Sergegsx

corrección los pines 0 y 1 si los puedes usar pero no en simultáneo. puedes elegir uno de los dos

Arduino: Manual de Programación
25 Nota: Cuando se utiliza la comunicación serie los pins digital 0 (RX) y 1 (TX) no puede
utilizarse al mismo tiempo.

El problema es que para poder usar la sentencia delay(); tengo que añadir en la función void setup() la instrucción serial.begin(); si no pongo esta instrucción no me funciona los delay(). ¿A alguien más le pasa esto? ¿Sabe alguien a que es debido este fallo?

Es muy probable que el problema no este en tu placa sino en el código, Si quieres comprobar eso, desmonta el circuito y tirale un código de la librería en el que puedas provar el delay() como p. e. servo>Sweep

cuchara:
corrección los pines 0 y 1 si los puedes usar pero no en simultáneo. puedes elegir uno de los dos

Arduino: Manual de Programación
25 Nota: Cuando se utiliza la comunicación serie los pins digital 0 (RX) y 1 (TX) no puede
utilizarse al mismo tiempo.

Si estás usando la comunicación serie no puedes usar ni el pin 1 ni el 0

creo que si se puede pero no al mismo tiempo, el registro de configuracion del puerto serie no tiene por que configurarse solo en el setup, al igual que los demas pines, en el programa se puede poner un pin como entrada en el setup y luego más tarde cambiar la configuracion de esa patilla a nuestro antojo para que sea entrada o salida, pero claro está ... no se puede tener 2 funciones al mismo tiempo.

cuchara:

los pines 0 y 1 es lo que te ha comentado Sergegsx

corrección los pines 0 y 1 si los puedes usar pero no en simultáneo. puedes elegir uno de los dos

Arduino: Manual de Programación
25 Nota: Cuando se utiliza la comunicación serie los pins digital 0 (RX) y 1 (TX) no puede
utilizarse al mismo tiempo.

corrección, DuffuD plantea usar el puerto de serie para comunicación en su programa por lo que según tengo entendido no puede usarse los pines 0 y 1 para nada mas.
ademas, en la nota que tu has puesto dice exactamente eso, (no pude utilizarse al mismo tiempo) por lo que si quieres usar la comunicación por serie como es el caso, no puedes usarlos para nada mas.

por lo que según tengo entendido

pues entonces creo que debes hacer una reclamación aquí arduino.cc para que cambien sus manuales de programación

Y creo que también tengo que tirar a la basura mi placa por que a mi si me funciona el pin 0 con el serial.

pido una disculpa a Sergegsx parece que tomo muy personal el comentario

Lo que puede que pase con los pines es que se deba a alguna función especifica eso puede ser la causa del gran debate
por que creo que ya nos desviamos mucho en este punto

Físicamente hablando mi arduino si me permite usar uno de los dos. No necesito leerlo en ningún lado para poderme dar cuenta que si funciona. pero si a otras personas no les funciona tal bes se trata de otro uso que se les da

sea lo que se ya no juego jajaja saludos a todos es pero no toquemos el tema en otro post jajajajja

cuchara:
pido una disculpa a Sergegsx parece que tomo muy personal el comentario

para nada. :wink:

El problema creo va a estar en la placa porque una de las pruebas que hice es hacer parpadear el LED SMD del pin 13. Pongo el código para que se vea más claro (y descartar que sea el código). A la placa no hay nada conectado.

void setup(){

  • pinMode(13,OUTPUT);*
    }
    void loop(){
  • digitalWrite(13,HIGH);*
  • delay(500);*
  • digitalWrite(13,LOW);*
  • delay(500);*
    }

Con ese codigo deberia parpadear el LED medio segundo encendido y medio segundo apagado, sin embargo para que esto funcione en mi arduino UNO debo escribir el código así:

void setup(){

  • Serial.begin(9600);*
  • pinMode(13,OUTPUT);*
    }
    void loop(){
  • digitalWrite(13,HIGH);*
  • delay(500);*
  • digitalWrite(13,LOW);*
  • delay(500);*
    }

Por último diré que no voy a usar el puerto serie para nada y que la única razón por la que pongo el Serial.begin es para que funcione los delay, sino no me funcionan, el LED queda encendido.

el ejemplo que pones es igual que el blink que viene de ejemplo, a mi me funciona perfctamente tanto duemilanove, mega y mini pro.

mira a ver si tienes bien configurado el ide, si lo cargas a la placa adecuada.

incluso reinstala el ide, quizas tengas alguna libreria corrupta o que se yo ... te deberia funcionar.

un saludo

Lo cierto es que todo eso ya lo probé. Comprobé que el puerto fuera el correcto, que la placa esta bien seleccionada en el menu tools>Board, instalé el propio paquete que trae los repositorios de fedora para arduino, probé a reinstlar la IDE y probé también con las dos versiones del IDE para linux de 64bits que encontré. Incluso lo intenté en otro ordenador de 32bits y con windows por si fuera ese el problema pero nada, el problema persiste.

El caso es que cuando he trabajado con otras placas (placas nano, duemilanove y arduclema) nunca tuve este problema ni nada que se le parezca y como el arduino UNO es la versión más reciente y cambiaron el chip del serial pensé que quizás ahora si era necesario poner el Serial.begin para trabajar con los delay. Sin embargo ya veo que no, que el problema esta en mi placa o en el ATMEGA328.

Finalmente creo que probaré a actualizar el firmware del ATMEGA 8U2 y si sigue igual probaré con otro ATMEGA328 (creo que es lo que me queda por probar, el firmware y el cambiar el microcontrolador). Si no se da solucionado tendré que apañarme con 12 pines digitales cuando use los delay o el puerto serial, que remedio...

Si alguien tiene alguna idea más que comente a ver si se soluciona.

Gracias a todos por la ayuda.