Arduino 1.0, errores

Os pasa que al compilar el código en el GUI 1.0 no os dice en que linea está el error ?

Si, es algo que funcionaba bien en la 1.0 RC2, pero por algún motivo en esta versión no lo dice. Es posible que se hayan colado con los flags del compilador.

Pues o no sé a lo que os referís, o a mi sí que me dice las líneas.
Por ejemplo, si me dejo un punto y coma:

Iambic.cpp: In function 'void setup()':
Iambic:19: error: expected `;' before 'state'

Línea 19.

Bueno, aunque sí recuerdo haber marcado en File->Preferences lo de Show verbose output during: compilation, que no tiene que ver directamente, pero igual indirectamente sí por algún problema que se les haya colado como dice fm.

Lo mirare, pero juraría que lo tengo activado. A ver si os lo confirmo mañana.

a mi incluso poniendo esa opcion me aparece

proyectoCESsd.cpp: In function 'void loop()':
proyectoCESsd.pde:-1: error: 's' was not declared in this scope
proyectoCESsd.pde:-1: error: expected `;' before '}' token

y no va directamente al error, tengo que buscar en el código dónde está el error

ese error da por esta linea
lcd.print(now.second()+0);s

en la linea 90

No sé por que pasa esto, en la 0.22 no me pasa lo mismo

un saludo

si yo tb he tenido algun problemilla de ese tipo y de otros con la 1.0 al parecer creo que se han adelantado al sacarlo puesto que de 1 en 1 iba bien la cosa y de la 0,23 pasamos a la 1 dejandonos cosas por el camino y lo extraño esq la rc2 que se supone q aun no estaria terminada a veces funciona mejor q la 1.0 veremos a ver si se revisa ya que ya he encontrado unos cuantos fallos y he tenido que volverme a la anterior por no andar peleandome cada 2 x 3 con el...

¿Qué fallos Alex asturias?

Los ejemplos de string en el 0.22 funcionan bien pero en la versión nueva dan error

Acabo de probar en otro ordenador otro código con el 1.0 final, y me sigue indicando perfectamente el número de líneas donde tengo fallos, por ejemplo:
SGC.cpp:29: error: 'SerialGC' was not declared in this scope -> Línea 29
No soy capaz de reproducir vuestro problema de que diga que la línea es la -1. :relaxed:

En el foro "General discussion" acabo de contestarle a alguien que se queja de que con el 1.0 no le funciona el sketch ArduinoISP, ya que a mi me compila perfectamente. Debo de ser yo el raro.

pacoooh, eso es problema de que la documentación no está actualizada. No es nuevo el tema de que la página web de Arduino no está muy bien mantenida. La clase String ha cambiado, no es un fallo.

SrDonGato:
proyectoCESsd.pde:-1: error: 's' was not declared in this scope

Ahora que me doy cuenta... ¿cómo puedes estar trabajando con un .pde con Arduino 1.0, si la extensión de los ficheros hace ya mucho tiempo que se dijo que pasaba a ser .ino?

Soportan ambas extensiones desde la 1.0 RCs y la final.

fm:
Soportan ambas extensiones desde la 1.0 RCs y la final.

Pues lo soportará (pero como mínimo es desaconsejable)... y justo ese es el problema. Acabo de probar nombrando un fichero con error como .pde, y ya me sale que el eror está en la línea -1.
XD
Si es que cómo os queréis resistir a los cambios...

Si señor, buen ojo. Yo suelo usar .ino, pero algunas de mis librerías tienen ejemplos que siguen con esa extensión. A cambiarlas pues.

yo es que arrastro el proyecto de muchs versiones anteriores, al ver que me falla sigu rulando con la 22 :smiley: esta tarde lo cambiare y a probar

un saludo

Me gustaría que los que ya estáis trabajando con la versión 1.0 indicarais qué problemas me puedo encontrar si me la instalo y empiezo a abrir proyectos hechos con la versión 22. ¿Es un cáos? ¿Hay que cambiar sólo algunas cosas de la programación y/o de las librerías? ¿O por el contrario los abriré sin ningún problema?

Se abren sin ningún problema. Hay algunas cosas que han cambiado, como #include "Arduino.h", quizás es lo que mas afecte a los sketch. Si tienes librerías propias o heredadas, es otra historia ya que han cambiado algunas clases del core y de las librerías standard, un ejemplo es Wire, Stream,... para controlar el bus i2c (que ahora lo hacen mejor).
El pequeño hipo que han descubierto en este hilo y poco mas.
Eso no quiere decir que algo mas haya cambiado de cara a los sketch.

Gracias fm, entonces esta misma tarde me actualizo.

Pues he tenido un poco de mala suerte... Estoy con mi proyecto de un cuadricóptero y tengo el IMU 9 DOF Razor. Lo tenía con el código que adapté de la tarjeta Mongoose (de haber sabido antes de ella la habría comprado en lugar de la Razor). Así que tengo que cambiar varias cosas. Hago un pequeño resumen de las cosas que he visto que cambian al actualizarse a Arduino 1.0 por si le sirve a alguien.

Como mi código tiene #include "WProgram.h" tengo que cambiarlo por #include "Arduino.h". Concretamente si en tu código tenías cualquiera de las siguientes librerías:

#include "wiring.h"
#include "WProgram.h"
#include "WConstants.h"
#include "pins_arduino.h"

ahora hay que incluir #include "Arduino.h". He encontrado una recomendación que hacen si quieres que tu código siga compilando en versiones anteriores. Es:

#if ARDUINO >= 100
  #include "Arduino.h"
#else
  #include "WProgram.h"
#endif

La librería Wire.h cambian las instrucciones:

Wire.send() cambia a Wire.write()
Wire.receive() cambia a Wire.read()

En mi caso también he tenido que cambiar estas instrucciones dentro de una librería que utiliza el código de Mongoose (la libraría del HMC5883L, el magnetómetro).

Al cambiar la librería Wire.h al parecer tampoco funciona igual la instrucción Wire.write() (antes Wire.send()). La explicación no la entiendo muy bien, tal vez alguien lo pueda aclarar, pero es algo relativo a que hay que especificar el tipo para argumentos constantes de modo que por ejemplo:

write(0x10) tiene que ser sustituido por write((byte)0x10)

Debo decir que mi código Mongoose está plagado de instrucciones del tipo Wire.write(0x10), no las he cambiado y aparentemente me lo ha compilado bien. Sólo ha habido una instrucción de Wire.h, concretamente Wire.write(0) que no la compila y no he sabido cómo sustituirla. ¿Alguien puede indicarme algo? Por el momento lo que he hecho es anularla. No debía ser una instrucción muy importante porque me ha compilado y parece que funciona :stuck_out_tongue:

Siguiendo con mi caso me hice un pequeño protocolo para enviar por puerto serie los valores de los ángulos desde el Razor al Arduino UNO. Para ganar velocidad básicamente lo que hice fue multiplicar los ángulos en grados por 100, convertirlos a unsigned int y enviar los dos bytes que lo componen. Pues bien, esto ahora tampoco funciona. ¿Por qué? Pues porque ha cambiado la forma en la que funcionan print() y println(). Antes print(byte) imprimía el byte, ahora imprime el valor numérico del byte como caracteres ASCII. Esto afecta fundamentalmente a Serial, Ethernet y Wire. Solución:

Sustituir Serial.print(byte) por Serial.write(byte)

Lo he sustituido en mi código... et voilà, ¡mi código funcionando!

La explicación de los cambios con la nueva versión que me ha ayudado podéis verla completa en Projects – Make: DIY Projects and Ideas for Makers

Si alguien ha leído hasta aquí que me disculpe por el rollo... Espero que le pueda servir a alguien.

Wire.write((uint8_t) 0x00);

Es un bug que arreglarán para la siguiente versión

Gracias chiva, así ha compilado sin problema.