I have been working to get my weather station connected to internet.
unfortunately it seems that the sketch it too big to be transfered to the Arduino UNO.
Can a good soul help me.
Can someone give some hints on how to make ma code smaller.
Thank you so much!!!
//incluir librerías
#include <SdFat.h>
#include <SdFatUtil.h>
#include <Ethernet.h>
#include <SPI.h>
#include <SoftwareSerial.h>
SoftwareSerial Davis(3, 5); // RX, TX
int Min=-10;
int t[12]={-1};
int d[55];
int i=1;
char FileName[12];
SdFile myFile;
SdFat sd;
float temp;
int hum;
float vel_v;
int dir_v;
float bar;
float lluv;
float lluv_ac;
float rad;
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x41, 0xF9 };
//byte ip[] = { 192,168,0,163};
byte server[] = {190,147,203,25}; // Direccion ip del servidor
EthernetClient client;
void setup()
{
if (!sd.begin(4, SPI_HALF_SPEED)) sd.initErrorHalt();
pinMode(18, OUTPUT);
pinMode(19, OUTPUT);
Davis.begin(19200);
//Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
}
//////////////////////////////////////////////////////////////////////
void LeerSe()
{ digitalWrite(19, HIGH);
Davis.println("LOOP 1");
delay(10);
for(i=1;i<=47;i++)// (Davis.available())
{ d*=Davis.read();*
- delay(10);*
- }*
- i=1;*
_ if(d[11]*d[12]*d[13]==0){_ - delay(1000);*
- LeerSe();*
- }*
_ temp=0.1*(d[12+3]256+d[11+3]);_
_ temp=5(temp-32)/9;_ - hum=(d[13]);*
vel_v=0.44704*d[16]; - dir_v=d[18];*
_ bar=0.001*(d[10]256+d[9]);_
_ lluv=0.001(d[49]256+d[46]);_
lluv_ac=0.001(d[49]256+d[46]);
_ rad=0.1(d[47]*256+d[46]);_ - if(bar<0||temp<0){*
- LeerSe();*
- }*
- else{*
// Serial.println(" DATOS LEIDOS ");
// Serial.print("temp=");
// Serial.println(temp);
// Serial.print("hum=");
// Serial.println(hum);
// Serial.print("vel_v=");
// Serial.println(vel_v);
// Serial.print("dir_v=");
// Serial.println(dir_v);
// Serial.print("bar=");
// Serial.println(bar);
// Serial.print("lluv=");
// Serial.println(lluv);
// Serial.print("lluv_ac=");
// Serial.println(lluv_ac);
// Serial.print("dir_v=");
// Serial.println(dir_v);
// Serial.print("rad=");
// Serial.println(rad); - Davis.flush();*
- delay(5);*
- }*
- digitalWrite(19, LOW);*
}
//////////////////////////////////////////////////////////////////////
void LeerFH()
{digitalWrite(18, HIGH); - Davis.println("GETTIME");*
- delay(5);*
- for(i=1;i<=8;i++)// (Davis.available())*
- {*
_ t*=Davis.read();_
_ delay(10);_
_ }_
_ Davis.flush();_
_ i=1; // reiniciar el contador*_
* t[7]=t[7]-100; //ajuste al año*
* if(t[3]<0)//||t[3]>59||t[4]<0||t[4]>23||t[5]<1||t[5]>31||t[6]<1||t[6]>12||t[7]<0||t[7]>100)*
* {delay(10);*
* LeerFH();*
* }*
* else{*
* Serial.print("Fecha y hora=");*
// Serial.print(t[7]+2000);
// Serial.print("-");
// Serial.print(t[6]);
// Serial.print("-");
// Serial.print(t[5]);
// Serial.print(" ");
// Serial.print(t[4]);
// Serial.print(":");
// Serial.print(t[3]);
// Serial.print(":");
// Serial.println(t[2]);
// delay(10);
// digitalWrite(18, LOW);
* }*
}
//////////////////////////////////////////////////////////////////////
void Enviar() {
* if (Ethernet.begin(mac) == 0) {*
* Serial.println("Failed to configure Ethernet using DHCP");*
* // no point in carrying on, so do nothing forevermore:*
* for(;;)*
* ;*
* }*
* // give the Ethernet shield a second to initialize:*
* delay(1000);*
* Serial.println("connecting...");*
* // if you get a connection, report back via serial:*
* if (client.connect(server, 1830)) {*
* Serial.println("connected");*
* // Make a HTTP request:*
* client.print("GET /logger/prueba_arduino.php?id_arduino=");
_ client.print(1);*_
* client.print("&temp=");*
* client.print(temp,DEC);*
* client.print("&hum=");*
* client.print(hum,DEC);*
* client.print("&vel_v=");
client.print(vel_v,DEC);
client.print("&dir_v=");
client.print(dir_v,DEC);
_ client.print("&bar=");_
_ client.print(bar,DEC);_
_ client.print("&rad=");_
_ client.print(rad,DEC);_
_ client.print("&lluv=");_
_ client.print(lluv,DEC);_
client.print("&lluv_ac=");
client.println(lluv_ac,DEC);
_ }_
_ else {_
_ // kf you didn't get a connection to the server:_
_ Serial.println("connection failed");_
_ }_
_ // if there are incoming bytes available*_
* // from the server, read them and print them:*
* int i =0;*
* if (client.available()) {*
* for(i=1;i<=12;i++){*
* delay(5);*
* char c = client.read();*
* Serial.print(c);*
* }*
* }*
* // if the server's disconnected, stop the client:*
* if (!client.connected()) {*
* Serial.println();*
* Serial.println("disconnecting.");*
* client.stop();*
* }*
* delay(5000);*
}
//////////////////////////////////////////////////////////////////////
//Función de Guardar datos leídos
void Logger()
{sprintf(FileName, "MT%.2d%.2d%.2d.csv", t[7], t[6], t[5]); //ddmmaa
delay(5);
Serial.println(FileName);
* if (!myFile.open(FileName, O_RDWR | O_CREAT | O_AT_END)) {
_ sd.errorHalt("ERROR SD");_
_ return;_
_ }_
_ digitalWrite(18, HIGH);_
_ myFile.print(t[4]);_
_ myFile.print(",");_
_ // TEMP (°F)_
_ myFile.print(temp);_
_ myFile.print(",");_
_ // HUM (%)_
_ myFile.print(hum);_
_ myFile.print(",");_
_ // VELV (mph)_
myFile.print(vel_v);
_ myFile.print(",");_
_ // DIRV (°;N=0)_
myFile.print(dir_v);
_ myFile.print(",");_
_ // BAR (in)_
_ myFile.print(bar);_
_ myFile.print(",");_
_ // LLUVIA*_
* myFile.print(lluv_ac);
_ myFile.print(",");_
_ // RAD (W/m^2)_
_ myFile.println(rad);_
_ //_
_ myFile.close();_
_ delay(5);_
_ digitalWrite(18, LOW);_
_}_
_//////////////////////////////////////////////////////////////////////_
void loop(){
_ LeerFH();_
_ delay(10);_
_ if(Min<t[3]){_
_ Min=t[3];_
_ LeerSe();_
_ Logger();_
_ Enviar();_
_}_
delay(25000);
_}*_