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).
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
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.
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.
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
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.
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.