Go Down

Topic: Problemas Arduino Due y soluciones (Read 400 times) previous topic - next topic

SGrips

Hola a todos,

He adquirido un arduino DUE y he empezado a tener muchos problemas, algunos de ellos solucionados.

El caso es que el IDE es beta y las librerías son diferentes. He modificado algunas cosas específicas y bien.

Los sketch que funcionan con el UNO y su IDE, con el DUE y el IDE del DUE no funcionan bien y algunos ni compilan.

Alguien se ha peleado con el DUE sobre esto???

TFTLCDCyg

Dependiendo del hardware que tengas tendrás que buscar las librerías adecuadas para el Due y es posible que ya no te funcionen ya que su voltaje lógico es de 5 V y para el due se necesitan 3.3 V como máximo.

La mayoría de las librerías que están diseñadas para placas como el UNO o  el MEGA, no son compatibles con el Due, por eso no se pueden compilar y saltan infinidad de errores.

PD: ¿que shields o dispositivos quieres controlar con el Due?

surbyte

Y porque no comienzas subiendo el código del UNO y del DUE y aquí veremos como orientarte.
Dinos tambien que hardware usas y pleaseeeeeeeeeeeeee pon lo links de las librerias o junta todo en un archivo comprimido y súbelo con Additional Options.

SGrips

Ok!!

lo haré, necesito un poco de tiempo.

Más que nada quiero compartir experiencias con el DUE y crear un punto de apoyo común.

De momento he podido realizar cosas con el DS18B20 y la sd, modificando algunas cosas.

Cuando pueda expando todo, de momento estoy con el UNO y el DUE poco a poco.

Un ejemplo, la función incrementar no funciona en DUE como en UNO:

i = i++;    >>>>en DUE no me funciona, has de crear otra variable:

i = a++;

A modo de exemplo, para que veáis lo puñetera que es la DUE....

surbyte

De donde sacan esto

i = i++;

es la segunda vez que lo veo, el anterior caso fue contador = contador++;

se usa directamente i++ o contador++; sin el igual
Por eso falla, falla por un error de la asignación.

Si quieres incrementar un contador, basta con decirle i++; y ya lo hace. Ahora si lo quieres hacer a la vieja usanza, entonces usa
i = i + 1; o bien
i += 1;

todo esto es lo mismo que
i++;

Son tres formas equivalentes pero de ningún modo
i = i++;


SGrips

:smiley-eek:

gracias..... me lo grabo para siempre

Hola a todos!
Tengo el mismo problema, espero puedan darme una mano con un problema similar.
Tengo este código para leer sensores de temp DS18B20, el tema es que compila excelente para MEGA, UNO, etc pero en DUE me muestra errores.

El código:
#include <DallasTemperature.h> //Incluimos las librerias para controlar los sensores de temperatura
#include <OneWire.h>


#define ONE_WIRE_BUS 2
#define TEMPERATURE_PRECISION 12


OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensores(&oneWire);

//Indicamos las direcciones de los distintos sensores
DeviceAddress S1 = {  0x28, 0x14, 0x9C, 0x49, 0x06, 0x00, 0x00, 0xAD};  //Sensor 1 28EA3105060000E1
DeviceAddress S2 = {  0x28, 0xE8, 0xC0, 0x48, 0x06, 0x00, 0x00, 0x99};  //Sensor 2 2864560506000058
DeviceAddress S3 = {  0x28, 0x88, 0x75, 0X4A, 0x06, 0x00, 0x00, 0xC0};  //Sensor 3  28 88 75 4A 06 00 00 C0
DeviceAddress S4 = {  0x28, 0x4C, 0x65, 0x48, 0x06, 0x00, 0x00, 0xF8};  //Sensor 4  28 4C 65 48 06 00 00 F8
DeviceAddress S5 = {  0x28, 0xDA, 0xA0, 0x48, 0x06, 0x00, 0x00, 0x0B};  //Sensor 5  28 DA A0 48 06 00 00 0B
DeviceAddress S6 = {  0x28, 0x58, 0xCD, 0x48, 0x06, 0x00, 0x00, 0x72};  //Sensor 6  28 58 CD 48 06 00 00 72
DeviceAddress S7 = {  0x28, 0x3A, 0x16, 0x49, 0x06, 0x00, 0x00, 0x7E};  //Sensor 7  28 3A 16 49 06 00 00 7E
DeviceAddress S8 = {  0x28, 0x79, 0x1C, 0x49, 0x06, 0x00, 0x00, 0xEF};  //Sensor 8  28 79 1C 49 06 00 00 EF
DeviceAddress S9 = {  0x28, 0x66, 0xC3, 0x49, 0x06, 0x00, 0x00, 0xA1};  //Sensor 9  28 66 C3 49 06 00 00 A1
DeviceAddress S10 = {  0x28, 0xA0, 0x4F, 0x48, 0x06, 0x00, 0x00, 0xE9};  //Sensor 10  28 A0 4F 48 06 00 00 E9
DeviceAddress S11 = {  0x28, 0xA9, 0x6E, 0x4A, 0x06, 0x00, 0x00, 0x4D};  //Sensor 11  28 A9 6E 4A 06 00 00 4D

void setup(void)
{
  Serial.begin(9600); 
  sensores.begin(); 
}

void Mostrar_Direccion(DeviceAddress direccion)
{
  for (uint8_t i = 0; i < 8; i++)
  {
    if (direccion < 16)
      Serial.print("0");
    Serial.print(direccion, HEX);
  }
 
}

//Funcion que muestra la temperatura en grados centigrados del sensor de dicha direccion
void Mostrar_Temperatura(DeviceAddress direccion)
{
  float tempC = sensores.getTempC(direccion);
  Serial.print(tempC);
}



//Funcion que muestra los datos del sensor de dicha direccion
void Mostrar_Datos(DeviceAddress direccion)
{
  Mostrar_Temperatura(direccion);
  Serial.print(" ");
}


void loop(void)
{
  //Establecemos la resolucion para cada sensor, PRECISION es a 12 bits
  sensores.setResolution(S1, 12); 
  sensores.setResolution(S2, 12); 
  sensores.setResolution(S3, 12);
  sensores.setResolution(S4, 12);
  sensores.setResolution(S5, 12);
  sensores.setResolution(S6, 12);
  sensores.setResolution(S7, 12);
  sensores.setResolution(S8, 12);
  sensores.setResolution(S9, 12);
  sensores.setResolution(S10, 12);
  sensores.setResolution(S11, 12);
 

  sensores.requestTemperatures();  //Enviamos el comando para obtener los datos de los sensores
 

  Serial.print(millis());
  Serial.print("\t");

  Mostrar_Datos(S1);
  Serial.print("\t");
  Mostrar_Datos(S2);
  Serial.print("\t");
  Mostrar_Datos(S3);
  Serial.print("\t");
  Mostrar_Datos(S4);
  Serial.print("\t");
  Mostrar_Datos(S5);
  Serial.print("\t");
  Mostrar_Datos(S6);
  Serial.print("\t");
  Mostrar_Datos(S7);
  Serial.print("\t");
  Mostrar_Datos(S8);
  Serial.print("\t");
  Mostrar_Datos(S9);
  Serial.print("\t");
  Mostrar_Datos(S10);
  Serial.print("\t");
  Mostrar_Datos(S11);
  Serial.println();

}


Espero sugerencias, correcciones. Soy novato en esto.
Muchas gracias a todos
Les dejo mi mail  federicojfg@gmail.com

Saludos!

surbyte

y que errores te da? postea los errores.
Chequeaste la asignación de pines? Igualmente copia y pega los errores.

SGrips

#8
Dec 28, 2014, 09:07 pm Last Edit: Dec 28, 2014, 09:12 pm by SGrips
federicojfg hecha un vistazo a este post:  http://forum.arduino.cc/index.php?topic=286998.0

yo tengo dos sensores en arduino DUE y funciona bien, creo recordar que con el DTH11 no pude utilizar librerías pero con el DS18S20 de dallas si y funciona bien.

En este post están las librerías para el DUE, puede que te interese:

http://forum.arduino.cc/index.php?topic=144446.0

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy