Show Posts
Pages: 1 ... 69 70 [71] 72 73 ... 95
1051  International / Español / Re: Que Ethernet Shield comprar? on: September 05, 2011, 02:09:59 pm
chiva la opción de pillarme un router para WRT ya me la plantee hace tiempo y creo que al final acabare con uno, pero quiero terminar el programa de este proyecto con el ethernet shield para poder terminar de documentarlo y poder ponerlo en internet.
Me recomiendas algún router que valga y sea barato?
este tiene buena pinta en cuanto a que encima tiene wifi N que me vendria de lujo
http://www.ebay.es/itm/290605643487?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1438.l2649
supongo que habra que mirar que se puede abrir y conectar los cablecitos de RS232,no?

el wrt54g es el router por excelencia para esto, pero ya que tengo que comprar uno por lo menos q me sirva tambien para wifi decente ya que el wrt54g es solo wifi g.
1052  International / Español / Re: Que Ethernet Shield comprar? on: September 05, 2011, 02:05:10 pm
muchas gracias a todos por las respuestas, paso a paso...
Sin duda alguna la opción 1... ¿que? tengo muchas bocas que alimentar.

No, en serio, he buscado tus últimos posts y no he encontrado el de los problemas que te da tu Ethernet Shield.

Refrescamelo y trataré de echarte una mano. En Ardumanía tenemos servicio post-venta (y no digo mas, que si no el moderador me riñe por hacer publicidad).

jeje josemanu si he puesto el enlace justo a tu tienda para el shield es para echarte una mano smiley-wink
a ver el problema lo describi inicialmente aquí http://arduino.cc/forum/index.php/topic,70532.msg530260.html#msg530260
basicamente el ethernet shield ha dejado de funcionar con internet, pero si en red local. Si pongo un arduino UNO+Ethernet Shield oficial, y le mento el sketch que viene con arduino de WebClient, no conecta ni para atras. y tengo bien puesto la puerta de enlace ya que el ethernet shield lleva casi 2 años funcionando, subiendo parametros cada 10 segundos. vamos que ya ni me molesto en mirar mi programa, porque si falla el WebClient basico que viene con arduino que llama a Google y ya esta. es que es culpa del shield,no?
1053  Using Arduino / Programming Questions / Conversion of double to String using "String" on: September 05, 2011, 01:52:45 pm
Hi, I am trying to convert a double value obtained from the library of Emon which i have running at home. https://github.com/openenergymonitor/MainsACv3/blob/master/EmonLib/Emon.cpp

the code i am using is this, using the tutorial of sciguy on youtube which works perfectly (when not using doubles)


As you can see below I need to save a line with unixtime stamp obtained from an RTC clock, then with comma separated also have apparentPower, realPower, powerfactor, Vrms, Irms... which are all doubles
So it will end up something like this...

Quote
//unixtime;apparentpower;realpower;Voltage;Current;powerfactor
1315255517;2371.16;2012.23;230;8.21;0.95

The code below WORKS, but as soon as I add any extra info on the String dataString, then the line gets corrupted and arduino restarts.
So I guess the conversion from double to string is not working correctly.

Please help me out, I really appreciate.

Code:
void saveSD(){
// Get time information in "now" to use later
  DateTime now = RTC.now();
  
//************ convert double to String ***************  
  char charapparentPower[16];
  dtostrf( emon.apparentPower, 4, 2, charapparentPower );
//***************************

// Create the String that will be output to Serial port and saved to SD card.
String dataString = String(now.unixtime()) + ";" + String(charapparentPower); //230;0.95;1;45";    


  //Open a file to write to
  //Only one file can be open at a time
  File dataFile = SD.open("loga.txt", FILE_WRITE);
        if(dataFile)
        {
          dataFile.println(dataString);
          dataFile.close();
          Serial.println(dataString);
        }
        else
        {
          Serial.println("Couln't access file");
        }
}

btw, I forgot to mention I am using the official ethernet shield for the SD. But as I said its working perfectly when only a string such as the one below is used
Quote
//  String dataString = " Hello ethernet";

so basically, this is the aim of the question
Code:
//************ convert double to String *************** 
  char charapparentPower[16];
  dtostrf( emon.apparentPower, 4, 2, charapparentPower );
//***************************

// Create the String that will be output to Serial port and saved to SD card.
String dataString = String(now.unixtime()) + ";" + String(charapparentPower); //230;0.95;1;45";   
1054  International / Español / Re: encoder 4 cables(como se usa?) on: September 05, 2011, 07:59:31 am
ese codigo es copiado y pegado de lo que estas usando?
1055  International / Español / Que Ethernet Shield comprar? on: September 03, 2011, 12:12:49 pm
Hola, como comentaba en otro post mi Ethernet Shield se comporta de forma extraña y mientras intento solucionarlo, si es que tiene solución, creo que comprare otro para poder tener mi proyecto monitorizando sin parar.

Queria saber si habeis probado alguno de los Ethernet Shield no oficiales, y si me los recomendais.
estas son las opciones que he encontrado:

Opción 1 - Ethernet Shield Oficial
http://www.ardumania.es/ardutienda/product.php?id_product=28

Precio: 38.5euros en casa

Opción 2 - Ethernet Shield for Arduino UNO duemilanove, ENC28J60
http://cgi.ebay.es/Ethernet-Shield-for-Arduino-duemilanove-ENC28J60-/360388489456?pt=LH_DefaultDomain_0&hash=item53e8d3f0f0

Libreria: http://blog.thiseldo.co.uk/?p=504
Precio: 11.25euros en casa


Opción 3 - Ethernet Shield W5100 For Arduino 328 UNO Mega1280 2560
Usa el chip W5100 pero no es el shield oficial
http://cgi.ebay.es/Ethernet-Shield-W5100-For-Arduino-328-Mega1280-2560-/280733251736?pt=LH_DefaultDomain_0&hash=item415d017898

Precio: 26,74euros en casa


Muchas gracias
1056  International / Español / Re: Pasar de un tipo de variable a otro on: September 02, 2011, 12:00:03 pm
bueno Arduino me esta matando !!
Si no fuese poco con los cuelgues del programa debido a las conversiones, ayer el "ethernet shield" decidio que dejaba de funcionar. no se si abrir post para esto o no, el tema es que no funciona ni el ejemplo "webclient" que viene con arduino pero si el "webserver", es decir que si tiene que acceder a internet no funciona, pero por lo demas si, increible.

como solucion para no dejar mi proyecto sin registrar datos me puse a escribir como un loco codigo para usar la memoria SD del "ethernet shield" y guardar los datos ahi.
lo basico funciona pero vuelvo al mismo PROBLEMA:

algo hago mal en las conversiones ya que el codigo funciona cogido con pinzas. es decir, ahora mismo tal como esta funciona. pero si añado un simple Serial.println o lo que sea, ya no va bien y se reinicia.

os puedo poner todo el codigo pero es larguisimo, alguien ve algo que yo no?

Code:
void saveSD(){

  DateTime now = RTC.now();
//  long power = emon.apparentPower;  // tambien he probado a pasarlo a long con cast pero tmb se ralla.
 
//  double apparentPower = 1234.56;
 
//*************************** 

  char s[32];
  dtostrf(emon.apparentPower, 4, 2, s);

/*
char s[32];
Serial.println(dtostrf(-1.0001, 2, 5, s));
*/

String dataString = String(now.unixtime()) + ";" + String(s);

//  String dataString = " Hello ethernet";             // con esta linea va bien siempre
//String dataString = String(count) + ";" + String(count);// + String(charapparentPower);    // + ";230;0.95;1;45";     pretendia que guardase mas valores pero en cuanto habilito mas codigo se reinicia
//***************************

  //Open a file to write to
  //Only one file can be open at a time
  File dataFile = SD.open("loga.txt", FILE_WRITE);
        if(dataFile)
        {
          dataFile.println(dataString);
          dataFile.close();
          Serial.println(dataString);
        }
        else
        {
          Serial.println("Couln't access file");
        }
 
count++;
}


ahora lo tengo almacenando el unixtime stamp y solo 1 parametro ya que si pongo mas se reinicia.
no se si pedir otra ethernet, pero no lo entiendo proque iba perfectamente.
1057  International / Español / Re: Nokia 6100 / Arduino Duemilanove on: August 31, 2011, 05:14:59 pm
mmm...prueba a crear una carpeta nueva en arduino22/libreries y copia ahi el archivo a ver si asi te lo reconoce.
para ello una vez lo tienes copiado, cierra y abre el programa de arduino, y ves a "sketch, import library" para ver si lo reconoce.
suerte
1058  International / Español / Re: CAN BUS: Red de Arduinos on: August 31, 2011, 05:20:15 am
mis ojooooos !!!  smiley-eek smiley-eek smiley-eek
una de las frases mas largas que he leido en mi vida jeje.

La verdad es que con la libreria de Igor todo es mas facil, yo intentaria comprar su brick porque te hara la vida mas facil. alguna forma tiene que haber,no? globalización...ya claro ! smiley-cry
1059  Using Arduino / Programming Questions / Re: Convert float and long to string to complete a LCD I2C library on: August 30, 2011, 05:36:42 pm
Thanks avenue but i dont need to take care of negative floats so thanks alot for that code but I used Paul's suggestion.

Paul thank you so much for your help, I have not answered earlier cause I was testing thoroughly the code before posting it here as "it's working code".

Code:
// **************************************************************
// sends string
// **************************************************************

void BV4618_I::puts(char *s)
{
char *sp=s; 
  Wire.beginTransmission(_i2adr);
  // send *s as bytes of date
  while(*sp)
    Wire.send(*(sp++));
  Wire.endTransmission();




void BV4618_I::putf(float st, int decimales)
{
  char sp[16];
  dtostrf( st, 4, decimales, sp );
    Wire.beginTransmission(_i2adr);
  // send *s as bytes of date
int len = strlen(sp);
for(int i=0; i<len; i++)
{
   Wire.send(sp[i]);
}
  Wire.endTransmission();
}

// other way of float
void BV4618_I::putff(float st, int decimales)
{
  char sp[16];
  char *p = &sp[0]; // points to start of array.

  dtostrf( st, 4, decimales, sp );
   Wire.beginTransmission(_i2adr);
  // send *p as bytes of date
  while(*p)
    Wire.send(*(p++));
  Wire.endTransmission();
}

void BV4618_I::puti(int st)
{
char hour_str[4]; // Define as a string (4 bytes)
itoa (st, hour_str, 10); //convert integer to string
//di.puts(hour_str); //print string on LCD
char *sp=hour_str; 
  Wire.beginTransmission(_i2adr);
  // send *s as bytes of date
  while(*sp)
    Wire.send(*(sp++));
  Wire.endTransmission();
}

void BV4618_I::putl(long st)
{
char hour_str[4]; // Define as a string (4 bytes)
ltoa (st, hour_str, 10); //convert integer to string
//di.puts(hour_str); //print string on LCD
char *sp=hour_str; 
  Wire.beginTransmission(_i2adr);
  // send *s as bytes of date
  while(*sp)
    Wire.send(*(sp++));
  Wire.endTransmission();
}

remember to modify bv_4618_I.h and add:
Code:
void putf(float st, int decimales);
void putff(float st, int decimales);
void puti(int st);
void putl(long st);

This is working, I still have some times where program freezes but I think its cause I am doing some conversion wrong before sending it to the LCD.

I will do more testing and when I have everything clear I will upload the libraries modified, for others to use.

once again, Paul thank you very very much.
1060  International / Español / Re: "Machacar" la memoria al declarar mal las variables?¿?¿? on: August 29, 2011, 06:34:55 am
Ahh, como decias que se quedaba clavado el codigo que has puesto antes, por eso preguntaba....



Si si, es que ese codigo (bueno el real pero simplificado a eso) al descomentarlo del programa "grande" funciona el programa y sino se queda clavado.
pero como digo, voy a ver si consigo "mejorar" todo el codigo del LCD y deja de hacerlo.
1061  International / Español / Re: "Machacar" la memoria al declarar mal las variables?¿?¿? on: August 29, 2011, 06:28:31 am
Igor el problema es que el codigo esta en un programa muy largo.
Lo curioso es que a veces se queda colgado, a veces no. Es decir, en ocasiones hace la conversión bien y otras veces cuelga el programa.

Simplemente queria entender como trabaja Arduino con la memoria en estos casos en cuanto a como guarda los datos en su RAM y como los accede luego. Ya que supongo que ahi reside el problema.
De todas formas estoy intentando redefinir todo a ver si consigo que "aguante". Voy a hacer unas pruebas y si no funciona, seguimos por aqui.
Gracias !!!
1062  International / Español / Re: "Machacar" la memoria al declarar mal las variables?¿?¿? on: August 29, 2011, 05:08:19 am
Igor si probarlo ya lo he hecho, y miles de veces.
En serio llevo muchas horas en conseguir tener todo mi programa con las variables bien definidas y las operaciones matemeticas tambien bien definidas.
Y todo para que lo muestre por LCD con la porqueria de libreria que venia con la pantalla.

Vale, entonces es lo que pensaba, el .0 es para forzar el float.

Respecto a lo que comentaba de meter los datos de un float o un long a un int
int myvalue1;
float myvalue2 = 1234.56;
long myvalue3 = 123456;

myvalue1 = (int)myvalue2;
myvalue1 = (int)myvalue3;

aqui provocaria un fallo en el arduino o se supone que sabe solucionarlo? porque a mi se me queda clavado.
gracias !!
1063  International / Español / Re: "Machacar" la memoria al declarar mal las variables?¿?¿? on: August 29, 2011, 04:11:07 am
entiendo Igor, y que ocurre si intentas algo asi:
int myvalue1;
float myvalue2 = 1234.56;
long myvalue3 = 123456;

myvalue1 = (int)myvalue2;
myvalue1 = (int)myvalue3;
porque en este caso estas metiendo 4 bytes en 2, esto produciría un error supongo.

ah y ya que estamos, en la información de float http://arduino.cc/es/Reference/Float
dice que hay que poner un ".0" si realizas una división. esto para que es, para que lo considere un float ??
en caso de multiplicaciones tambien? no verdad?
1064  Using Arduino / Programming Questions / Re: Convert float and long to string to complete a LCD I2C library on: August 28, 2011, 05:56:46 pm
Thanks Paul, but I tried
Code:
void BV4618_I::putf(float st, int decimales)
{
  char sp[16];
  dtostrf( st, 4, decimales, sp );
    Wire.beginTransmission(_i2adr);
  // send *s as bytes of date
  while(*sp)
    Wire.send(*(sp++));
  Wire.endTransmission();
}

I get
Quote
In member function 'void BV4618_I::putf(float, int)':
 151:error: lvalue required as increment operand
line 151
Code:
    Wire.send(*(sp++));


So first error cleared, cant understand this one.
thanks
1065  Using Arduino / Programming Questions / Re: Convert float and long to string to complete a LCD I2C library on: August 28, 2011, 05:48:01 pm
Hi Paul, thanks for your answer.
I did the static part cause I copied from somewhere else, I didnt want to take it in until it worked.

I did this:
Code:
void BV4618_I::putf(float st, int decimales)
{
  char sp[16];
  sp = dtostrf( st, 4, decimales, sp );
    Wire.beginTransmission(_i2adr);
  // send *s as bytes of date
  while(*sp)
    Wire.send(*(sp++));
  Wire.endTransmission();
}
and in the class definition
Code:
void putf(float st, int decimales);

I get this error:
Code:
error: incompatible types in assignment of 'char*' to 'char [16]'

Sorry I am completely lost in this one.

robtillaart I did look into that before but I use Wire library so i dont know how to integrate it.
Pages: 1 ... 69 70 [71] 72 73 ... 95