Mistake in compilated program

Hello I need your help . I can´t copilated the program . I think that I will need any library how FileIO.h Could you tell me where is the mistake. I attachment the program.
Thanks for you comment.

#include <SD.h>
#include <SPI.h>
#include <SD.h>
#include <Bridge.h>
#include <Console.h>
#include <SoftwareSerial.h>


File myFile;

SoftwareSerial bluetooth(10, 11); // RX, TX

int led = 13;
int numero,CRepo,Volt,Ampe,Cons,Poten,VAH=0; // **** Variables de Conteo
float PVolt,PCosf,PKwah,CVolt,CCosf,CKwah= 0;    // **** Variables Promedio de salida
float MaxVolt,MinVolt,MaxCosf,MinCosf=0;         // **** Variables de Maxima y Minimas de salida
float VMaxVolt,VMaxCosf;                         // **** Variable patron de Maxima y Minimas
float VMinVolt=300;                              // **** Seteo de Variable Minima de Volt 
float VMinCosf=1;                                // **** Seteo de Variable Minima de Cosf
float Precio= 15.45;                             // **** Precio estimade KwaH
String Alarma,Estado;
float ValorKwah=0.407;
int horas=1440;                                 // **** Cantidad de Horas equivalentes a 60 dias

float Kwahale=0;
float Cosf=0;
float Kwah=0;

int tiempo=0;
int HORA[]={9,59,0};


void setup() {                
  // Open serial communications and wait for port to open:
  Serial.begin(9600);    //115200
  bluetooth.begin(9600);
  
  pinMode(led, OUTPUT);      // Funcion Reporte de ALERTA  de REPORTE Tension y Coseno Fi//
  pinMode(53, OUTPUT);

  while (!Serial) {
    ;
  }
 
   Serial.print("Initializing SD card...");
  
  if (!SD.begin()) {
    Serial.println("Inicializacion Fallo!");
    return;
  }
  else{
    Serial.println("Inicializacion OK");
  }
  
  myFile=SD.open("alertas",FILE_WRITE); 
}

void loop() {
  
  
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  tiempo=tiempo+1;
  
  if ( bluetooth.available()){
     Serial.write( bluetooth.read());
    if (Serial.available()){
     bluetooth.write(Serial.read());
     
    }
  } 
  // Asigancion de Valores aleatoreos a Variables Voltaje, Amperaje,
  // KiloWattAmperHora, Coseno Fi y Consumo en Pesos
  
  String Ent=SalidaPowerMeter();        // Entrada de String frl Power Meter - RS232
  
  Serial.println(" Valor de entrada del Power Meter ");
  Serial.println(Ent);
  
  Volt=VariablesEntrada(Ent,3).toInt();
  Ampe=VariablesEntrada(Ent,4).toInt();
  Poten=VariablesEntrada(Ent,5).toInt();
  VAH=VariablesEntrada(Ent,6).toInt();
  Cosf=StringToFloat(VariablesEntrada(Ent,7));
  Kwah=StringToFloat(VariablesEntrada(Ent,8));
  Kwah=StringToFloat(VariablesEntrada(Ent,8));
  Cons=StringToFloat(VariablesEntrada(Ent,9));
  
  // ********* MANEJO DEL TIEMPO corrida PROGRAMA ***********//

    HORA[2]=tiempo+HORA[2];
    
    if(HORA[2]>=60){
      HORA[1]=HORA[1]+1;
      HORA[2]=HORA[2]-60;
      }

    if(HORA[1]>=60){
      HORA[0]=HORA[0]+1;
      HORA[1]=HORA[1]-60;
    }
  // MuestraHora(HORA); 
   tiempo=0;
 
 
  // ************  Presentacion de salida ***********
  
 /* Serial.print("Valor del KwahAle :");
  Serial.println(Kwahale);
  Serial.print(" Valor del Real:");
  Serial.println(Kwah);
 */
 
 // Muestra(Volt,Ampe,Kwah,Cosf,Cons);
  
  
  VMaxVolt=Maxima(Volt,VMaxVolt);
  VMaxCosf=Maxima(Cosf,VMaxCosf);
  
  VMinVolt=Minima(Volt,VMinVolt);
  VMinCosf=Minima(Cosf,VMinCosf);
  
  CRepo++;1;
  CVolt=CVolt+Volt;
  CCosf=CCosf+Cosf;
  CKwah=CKwah+Kwah;

//***********************************************************************************//  
//********    Presentacion de Reporte de Calidad y consumo Energetico     ********** //
//***********************************************************************************// 
 
  if(CRepo==30){
  
    MuestraHora(HORA);
    PKwah=Promedio(CKwah,CRepo);
    PresentacionReporte();
    ReporteEstadistico(VMinVolt,Volt,VMaxVolt,"Valores de Tension = ");
    ReporteEstadistico(VMinCosf,Cosf,VMaxCosf,"Valores de CosenFi =   ");
    ReporteConsumoPromedio("Consumo KWah= ",PKwah," costo por Hora: $ ",ValorKwah);
    CVolt=0;
    CCosf=0;
    CKwah=0;    VMaxVolt,VMaxCosf,PVolt,PCosf,CRepo=0;
    VMinVolt=300;
    VMinCosf=1;

}
//***********************************************************************************//  
//****************   ALERTA Control de la Tension entre 210 y 225 Volt ************* //
//***********************************************************************************// 

  if(Volt==195){
    Alarma="VOLTAJE    ";
    Estado=" Voltaje por DEBAJO de lo Normal";
    AlarmaVoltaje(Alarma,Volt,Estado);
    GuardarDato(Ent);
   }
  if(Volt==229){
    Alarma="VOLTAJE   ";
    Estado=" Voltaje por ENCIMA de lo Normal";
    AlarmaVoltaje(Alarma,Volt,Estado);
    GuardarDato(Ent);
   }
    
//***********************************************************************************//
//**************   ALERTA Control del Coseno Fi por debajo 0.89  ********************//
//***********************************************************************************//

  if(Cosf==0.87){
   Alarma="COSENO FI ";
   Estado=" POR DEBAJO 0,89";
   AlarmaCosenoFi(Alarma,Cosf,Estado);
   GuardarDato(Ent);
   CCosf++;
//   PCosf=PromedioFalla(CCosf,Cosf,PCosf);
  } 

 
     
} 
/****************************************/
/************* FUNCIONES ****************/
/****************************************/

/************    FUNCIONES    ******************/

void GuardarDato(String dato){
    
  File mio=SD.open("alertas.txt", FILE_WRITE);
  
  if(SD.exists("Alertas.txt")){
  Serial.println("Existe el archivo Alertas.txt");
  }else{
  Serial.println("No existe el archivo");
  }
  
  if(mio){
    Serial.print("Escribiendo en Archivo Alertas.txt...");
    mio.print("Registro de la Hora: ");
    mio.println(dato);
    mio.flush();
    Serial.print("Se guardo registro ");
    Serial.println(dato);
    } else {
    Serial.println("No se pudo abrir archivo Alertas.txt");
  }
 mio.flush();
 mio.close();
 delay(2000);
}[table]
[tr]
[td][/td]
[/tr]
[/table]

Error1.txt (33 KB)

Two problem as I see it.

  1. you don’t need to two #include <SD.h> statements
  2. You can only have one file open at a time.
    myFile=SD.open(“alertas”,FILE_WRITE); // which is never used or closed.
    File mio=SD.open(“alertas.txt”, FILE_WRITE); // which is used correctly

Chuck.


Check out my Kickstarter Project Memory Panes an expansion RAM Shield for Mega2560’s. It adds 1MB of RAM for those projects where 8KB is not enough.

Chuck thanks for your tip You did right. But continuos with less mistake. I attachment the error with copilate and code down. Thanks for your help. Everybody

#include <Bridge.h>
#include <Console.h>
#include <FileIO.h>
#include <HttpClient.h>
#include <Mailbox.h>
#include <Process.h>
#include <YunClient.h>
#include <YunServer.h>
#include <SD.h>
#include <SPI.h>
#include <SoftwareSerial.h>


//File myFile;

SoftwareSerial bluetooth(10, 11); // RX, TX

int led = 13;
int numero,CRepo,Volt,Ampe,Cons,Poten,VAH=0; // **** Variables de Conteo
float PVolt,PCosf,PKwah,CVolt,CCosf,CKwah= 0;    // **** Variables Promedio de salida
float MaxVolt,MinVolt,MaxCosf,MinCosf=0;         // **** Variables de Maxima y Minimas de salida
float VMaxVolt,VMaxCosf;                         // **** Variable patron de Maxima y Minimas
float VMinVolt=300;                              // **** Seteo de Variable Minima de Volt 
float VMinCosf=1;                                // **** Seteo de Variable Minima de Cosf
float Precio= 15.45;                             // **** Precio estimade KwaH
String Alarma,Estado;
float ValorKwah=0.407;
int horas=1440;                                 // **** Cantidad de Horas equivalentes a 60 dias

float Kwahale=0;
float Cosf=0;
float Kwah=0;

int tiempo=0;
int HORA[]={9,59,0};


void setup() {                
  // Open serial communications and wait for port to open:
  Serial.begin(9600);    //115200
  bluetooth.begin(9600);
  
  pinMode(led, OUTPUT);      // Funcion Reporte de ALERTA  de REPORTE Tension y Coseno Fi//
  pinMode(53, OUTPUT);

  while (!Serial) {
    ;
  }
 
   Serial.print("Initializing SD card...");
  
  if (!SD.begin()) {
    Serial.println("Inicializacion Fallo!");
    return;
  }
  else{
    Serial.println("Inicializacion OK");
  }
  
// File myFile=SD.open("alarm.txt",FILE_WRITE); 
}

void loop() {
  
  
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  tiempo=tiempo+1;
  
  if ( bluetooth.available()){
     Serial.write( bluetooth.read());
    if (Serial.available()){
     bluetooth.write(Serial.read());
     
    }
  } 
  // Asigancion de Valores aleatoreos a Variables Voltaje, Amperaje,
  // KiloWattAmperHora, Coseno Fi y Consumo en Pesos
  
  String Ent=SalidaPowerMeter();        // Entrada de String frl Power Meter - RS232
  
  Serial.println(" Valor de entrada del Power Meter ");
  Serial.println(Ent);
  
  Volt=VariablesEntrada(Ent,3).toInt();
  Ampe=VariablesEntrada(Ent,4).toInt();
  Poten=VariablesEntrada(Ent,5).toInt();
  VAH=VariablesEntrada(Ent,6).toInt();
  Cosf=StringToFloat(VariablesEntrada(Ent,7));
  Kwah=StringToFloat(VariablesEntrada(Ent,8));
  Kwah=StringToFloat(VariablesEntrada(Ent,8));
  Cons=StringToFloat(VariablesEntrada(Ent,9));
  
  // ********* MANEJO DEL TIEMPO corrida PROGRAMA ***********//

    HORA[2]=tiempo+HORA[2];
    
    if(HORA[2]>=60){
      HORA[1]=HORA[1]+1;
      HORA[2]=HORA[2]-60;
      }

    if(HORA[1]>=60){
      HORA[0]=HORA[0]+1;
      HORA[1]=HORA[1]-60;
    }
  // MuestraHora(HORA); 
   tiempo=0;
 
 
  // ************  Presentacion de salida ***********
  
 /* Serial.print("Valor del KwahAle :");
  Serial.println(Kwahale);
  Serial.print(" Valor del Real:");
  Serial.println(Kwah);
 */
 
 // Muestra(Volt,Ampe,Kwah,Cosf,Cons);
  
  
  VMaxVolt=Maxima(Volt,VMaxVolt);
  VMaxCosf=Maxima(Cosf,VMaxCosf);
  
  VMinVolt=Minima(Volt,VMinVolt);
  VMinCosf=Minima(Cosf,VMinCosf);
  
  CRepo++;1;
  CVolt=CVolt+Volt;
  CCosf=CCosf+Cosf;
  CKwah=CKwah+Kwah;

//***********************************************************************************//  
//********    Presentacion de Reporte de Calidad y consumo Energetico     ********** //
//***********************************************************************************// 
 
  if(CRepo==30){
  
    MuestraHora(HORA);
    PKwah=Promedio(CKwah,CRepo);
    PresentacionReporte();
    ReporteEstadistico(VMinVolt,Volt,VMaxVolt,"Valores de Tension = ");
    ReporteEstadistico(VMinCosf,Cosf,VMaxCosf,"Valores de CosenFi =   ");
    ReporteConsumoPromedio("Consumo KWah= ",PKwah," costo por Hora: $ ",ValorKwah);
    CVolt=0;
    CCosf=0;
    CKwah=0;    VMaxVolt,VMaxCosf,PVolt,PCosf,CRepo=0;
    VMinVolt=300;
    VMinCosf=1;

}
//***********************************************************************************//  
//****************   ALERTA Control de la Tension entre 210 y 225 Volt ************* //
//***********************************************************************************// 

  if(Volt==195){
    Alarma="VOLTAJE    ";
    Estado=" Voltaje por DEBAJO de lo Normal";
    AlarmaVoltaje(Alarma,Volt,Estado);
    GuardarDato(Ent);
   }
  if(Volt==229){
    Alarma="VOLTAJE   ";
    Estado=" Voltaje por ENCIMA de lo Normal";
    AlarmaVoltaje(Alarma,Volt,Estado);
    GuardarDato(Ent);
   }
    
//***********************************************************************************//
//**************   ALERTA Control del Coseno Fi por debajo 0.89  ********************//
//***********************************************************************************//

  if(Cosf==0.87){
   Alarma="COSENO FI ";
   Estado=" POR DEBAJO 0,89";
   AlarmaCosenoFi(Alarma,Cosf,Estado);
   GuardarDato(Ent);
   CCosf++;
//   PCosf=PromedioFalla(CCosf,Cosf,PCosf);
  } 

 
     
} 
/****************************************/
/************* FUNCIONES ****************/
/****************************************/

/************    FUNCIONES    ******************/

void GuardarDato(String dato){
    
  File mio=SD.open("alarm.txt", FILE_WRITE);
  
  if(SD.exists("alertas")){
  Serial.println("Existe el archivo alertas.txt");
  }else{
  Serial.println("No existe el archivo");
  }
  
  if(mio){
    Serial.print("Escribiendo en archivo alertas.txt...");
    mio.print("Registro de la Hora: ");
    mio.println(dato);
    mio.flush();
    Serial.print("Se guardo registro ");
    Serial.println(dato);
    } else {
    Serial.println("No se pudo abrir archivo alertas.txt");
  }
 mio.flush();
 mio.close();
 delay(2000);
}

Error2.txt (1.78 KB)

Ok,

Why are you using a copy of SD from your Documents folder.

Arduino:1.6.3 (Windows 7), Placa:"Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

Opciones de compilación cambiadas, reconstruyendo todo

Utilizando biblioteca Bridge en carpeta: D:\Programas\Arduino\libraries\Bridge

Utilizando biblioteca SD en carpeta: C:\Users\u186477\Documents\Arduino\libraries\SD

Utilizando biblioteca SPI en carpeta: D:\Programas\Arduino\hardware\arduino\avr\libraries\SPI

Utilizando biblioteca SoftwareSerial en carpeta: D:\Programas\Arduino\hardware\arduino\avr\libraries\SoftwareSerial

I would say the SD library in you My Documents\Arduino\libraries should be removed. Let the compiler use the one that came with the install.

Exit Arduino and delete this directory. C:\Users\u186477\Documents\Arduino\libraries\SD

See if that fixes the problem.

Chuck.


Check out my Kickstarter Project Memory Panes an expansion RAM Shield for Mega2560's. It adds 1MB of RAM for those projects where 8KB is not enough.

Chuck thanks very much for your tip. I deleted the librarie in unit C:\ and the code had less mistake. The last compilate has some mistake I attachment the file with the error and the code.

Regards Roberto

#include <Bridge.h>
#include <Console.h>
#include <FileIO.h>
#include <HttpClient.h>
#include <Mailbox.h>
#include <Process.h>
#include <YunClient.h>
#include <YunServer.h>
#include <SD.h>
#include <SPI.h>
#include <SoftwareSerial.h>


//File myFile;

SoftwareSerial bluetooth(10, 11); // RX, TX

int led = 13;
int numero,CRepo,Volt,Ampe,Cons,Poten,VAH=0; // **** Variables de Conteo
float PVolt,PCosf,PKwah,CVolt,CCosf,CKwah= 0;    // **** Variables Promedio de salida
float MaxVolt,MinVolt,MaxCosf,MinCosf=0;         // **** Variables de Maxima y Minimas de salida
float VMaxVolt,VMaxCosf;                         // **** Variable patron de Maxima y Minimas
float VMinVolt=300;                              // **** Seteo de Variable Minima de Volt 
float VMinCosf=1;                                // **** Seteo de Variable Minima de Cosf
float Precio= 15.45;                             // **** Precio estimade KwaH
String Alarma,Estado;
float ValorKwah=0.407;
int horas=1440;                                 // **** Cantidad de Horas equivalentes a 60 dias

float Kwahale=0;
float Cosf=0;
float Kwah=0;

int tiempo=0;
int HORA[]={9,59,0};


void setup() {                
  // Open serial communications and wait for port to open:
  Serial.begin(9600);    //115200
  bluetooth.begin(9600);
  
  pinMode(led, OUTPUT);      // Funcion Reporte de ALERTA  de REPORTE Tension y Coseno Fi//
  pinMode(53, OUTPUT);

  while (!Serial) {
    ;
  }
 
   Serial.print("Initializing SD card...");
  
  if (!SD.begin()) {
    Serial.println("Inicializacion Fallo!");
    return;
  }
  else{
    Serial.println("Inicializacion OK");
  }
 
}

void loop() {
  
  
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  tiempo=tiempo+1;
  
  if ( bluetooth.available()){
     Serial.write( bluetooth.read());
    if (Serial.available()){
     bluetooth.write(Serial.read());
     
    }
  } 
  // Asigancion de Valores aleatoreos a Variables Voltaje, Amperaje,
  // KiloWattAmperHora, Coseno Fi y Consumo en Pesos
  
  String Ent=SalidaPowerMeter();        // Entrada de String frl Power Meter - RS232
  
  Serial.println(" Valor de entrada del Power Meter ");
  Serial.println(Ent);
  
  Volt=VariablesEntrada(Ent,3).toInt();
  Ampe=VariablesEntrada(Ent,4).toInt();
  Poten=VariablesEntrada(Ent,5).toInt();
  VAH=VariablesEntrada(Ent,6).toInt();
  Cosf=StringToFloat(VariablesEntrada(Ent,7));
  Kwah=StringToFloat(VariablesEntrada(Ent,8));
  Kwah=StringToFloat(VariablesEntrada(Ent,8));
  Cons=StringToFloat(VariablesEntrada(Ent,9));
  
  // ********* MANEJO DEL TIEMPO corrida PROGRAMA ***********//

    HORA[2]=tiempo+HORA[2];
    
    if(HORA[2]>=60){
      HORA[1]=HORA[1]+1;
      HORA[2]=HORA[2]-60;
      }

    if(HORA[1]>=60){
      HORA[0]=HORA[0]+1;
      HORA[1]=HORA[1]-60;
    }
  // MuestraHora(HORA); 
   tiempo=0;
 
 
  // ************  Presentacion de salida ***********
  
 /* Serial.print("Valor del KwahAle :");
  Serial.println(Kwahale);
  Serial.print(" Valor del Real:");
  Serial.println(Kwah);
 */
 
 // Muestra(Volt,Ampe,Kwah,Cosf,Cons);
  
  
  VMaxVolt=Maxima(Volt,VMaxVolt);
  VMaxCosf=Maxima(Cosf,VMaxCosf);
  
  VMinVolt=Minima(Volt,VMinVolt);
  VMinCosf=Minima(Cosf,VMinCosf);
  
  CRepo++;1;
  CVolt=CVolt+Volt;
  CCosf=CCosf+Cosf;
  CKwah=CKwah+Kwah;

//***********************************************************************************//  
//********    Presentacion de Reporte de Calidad y consumo Energetico     ********** //
//***********************************************************************************// 
 
  if(CRepo==30){
  
    MuestraHora(HORA);
    PKwah=Promedio(CKwah,CRepo);
    PresentacionReporte();
    ReporteEstadistico(VMinVolt,Volt,VMaxVolt,"Valores de Tension = ");
    ReporteEstadistico(VMinCosf,Cosf,VMaxCosf,"Valores de CosenFi =   ");
    ReporteConsumoPromedio("Consumo KWah= ",PKwah," costo por Hora: $ ",ValorKwah);
    CVolt=0;
    CCosf=0;
    CKwah=0;    VMaxVolt,VMaxCosf,PVolt,PCosf,CRepo=0;
    VMinVolt=300;
    VMinCosf=1;

}
//***********************************************************************************//  
//****************   ALERTA Control de la Tension entre 210 y 225 Volt ************* //
//***********************************************************************************// 

  if(Volt==195){
    Alarma="VOLTAJE    ";
    Estado=" Voltaje por DEBAJO de lo Normal";
    AlarmaVoltaje(Alarma,Volt,Estado);
    GuardarDato(Ent);
   }
  if(Volt==229){
    Alarma="VOLTAJE   ";
    Estado=" Voltaje por ENCIMA de lo Normal";
    AlarmaVoltaje(Alarma,Volt,Estado);
    GuardarDato(Ent);
   }
    
//***********************************************************************************//
//**************   ALERTA Control del Coseno Fi por debajo 0.89  ********************//
//***********************************************************************************//

  if(Cosf==0.87){
   Alarma="COSENO FI ";
   Estado=" POR DEBAJO 0,89";
   AlarmaCosenoFi(Alarma,Cosf,Estado);
   GuardarDato(Ent);
   CCosf++;
//   PCosf=PromedioFalla(CCosf,Cosf,PCosf);
  } 

 
     
} 
/****************************************/
/************* FUNCIONES ****************/
/****************************************/

/************    FUNCIONES    ******************/

void GuardarDato(String dato){
    
  File mio=SD.open("alarm.txt", FILE_WRITE);
  
  if(SD.exists("alarm.txt")){
  Serial.println("Existe el archivo alarm.txt");
  }else{
  Serial.println("No existe el archivo");
  }
  
  if(mio){
    Serial.print("Escribiendo en archivo alarm.txt...");
    mio.print("Registro de la Hora: ");
    mio.println(dato);
    mio.flush();
    Serial.print("Se guardo registro ");
    Serial.println(dato);
    } else {
    Serial.println("No se pudo abrir archivo alarm.txt");
  }
 mio.flush();
 mio.close();
 delay(2000);
}

Error3.txt (1.68 KB)

RMPeter:
Chuck thanks very much for your tip. I deleted the librarie in unit C:\ and the code had less mistake. The last compilate has some mistake I attachment the file with the error and the code.

Regards Roberto

#include <Bridge.h>

#include <SD.h>

Roberto,

The problem is an incompatibility between the Bridge library and the SD library. I am not familiar with either one.

The error message is telling you that:

In file included from ECE_v10.ino:9:0:

D:\Programas\Arduino\libraries\SD\src/SD.h:26:7: error: redefinition of ‘class File’

class File : public Stream {

^

In file included from ECE_v10.ino:3:0:

D:\Programas\Arduino\libraries\Bridge\src/FileIO.h:28:7: error: previous definition of ‘class File’

class File : public Stream {

That Bridge Library(included in ECE_V10 at line 3) defines File and the SD library(included in ECEV10 at line 9) also defines File.

If you need the functionality of both libraries, you are going to have to modifiy one of them. Either make both use(share) the definition of File or change the name of File in one of the libraries.

Something like this. In the Bridge Library change all references to File to Bridge_File.

That is what I recommend.

Chuck.

EDIT:
I was wrong, delete the line #include <FileIO.h>, The Bridge library was not the guilty party. See if that does not fix the problems.

Hi Chuck Thanks very much for your tip. I reinstalled the base SW on version 1.5.4 And compilate the program with librari FileIO.h. The program without the Librarie FileIO had more mistake without its.
I send the program and attach the file error and the files FileIO.h and SD.h

Regards. Roberto

#include <SD.h>
#include <Bridge.h>
#include <Console.h>
#include <FileIO.h>
#include <SPI.h>
#include <SoftwareSerial.h>


//File myFile;

SoftwareSerial bluetooth(10, 11); // RX, TX

int led = 13;
int numero,CRepo,Volt,Ampe,Cons,Poten,VAH=0; // **** Variables de Conteo
float PVolt,PCosf,PKwah,CVolt,CCosf,CKwah= 0;    // **** Variables Promedio de salida
float MaxVolt,MinVolt,MaxCosf,MinCosf=0;         // **** Variables de Maxima y Minimas de salida
float VMaxVolt,VMaxCosf;                         // **** Variable patron de Maxima y Minimas
float VMinVolt=300;                              // **** Seteo de Variable Minima de Volt 
float VMinCosf=1;                                // **** Seteo de Variable Minima de Cosf
float Precio= 15.45;                             // **** Precio estimade KwaH
String Alarma,Estado;
float ValorKwah=0.407;
int horas=1440;                                 // **** Cantidad de Horas equivalentes a 60 dias

float Kwahale=0;
float Cosf=0;
float Kwah=0;

int tiempo=0;
int HORA[]={9,59,0};


void setup() {                
  // Open serial communications and wait for port to open:
  Serial.begin(9600);    //115200
  bluetooth.begin(9600);
  
  pinMode(led, OUTPUT);      // Funcion Reporte de ALERTA  de REPORTE Tension y Coseno Fi//
  

  while (!Serial) {
    ;
  }
 
   Serial.print("Initializing SD card...");
  pinMode(53, OUTPUT);
  
  if (!SD.begin()) {
    Serial.println("Inicializacion Fallo!");
    return;
  }else{
    Serial.println("Inicializacion OK");
  }
 
}

void loop() {
  
  
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
  tiempo=tiempo+1;
  
  if ( bluetooth.available()){
     Serial.write( bluetooth.read());
    if (Serial.available()){
     bluetooth.write(Serial.read());
     
    }
  } 
  // Asigancion de Valores aleatoreos a Variables Voltaje, Amperaje,
  // KiloWattAmperHora, Coseno Fi y Consumo en Pesos
  
  String Ent=SalidaPowerMeter();        // Entrada de String frl Power Meter - RS232
  
  Serial.println(" Valor de entrada del Power Meter ");
  Serial.println(Ent);
  
  Volt=VariablesEntrada(Ent,3).toInt();
  Ampe=VariablesEntrada(Ent,4).toInt();
  Poten=VariablesEntrada(Ent,5).toInt();
  VAH=VariablesEntrada(Ent,6).toInt();
  Cosf=StringToFloat(VariablesEntrada(Ent,7));
  Kwah=StringToFloat(VariablesEntrada(Ent,8));
  Kwah=StringToFloat(VariablesEntrada(Ent,8));
  Cons=StringToFloat(VariablesEntrada(Ent,9));
  
  // ********* MANEJO DEL TIEMPO corrida PROGRAMA ***********//

    HORA[2]=tiempo+HORA[2];
    
    if(HORA[2]>=60){
      HORA[1]=HORA[1]+1;
      HORA[2]=HORA[2]-60;
      }

    if(HORA[1]>=60){
      HORA[0]=HORA[0]+1;
      HORA[1]=HORA[1]-60;
    }
  // MuestraHora(HORA); 
   tiempo=0;
 
 
  // ************  Presentacion de salida ***********
  
 /* Serial.print("Valor del KwahAle :");
  Serial.println(Kwahale);
  Serial.print(" Valor del Real:");
  Serial.println(Kwah);
 */
 
 // Muestra(Volt,Ampe,Kwah,Cosf,Cons);
  
  
  VMaxVolt=Maxima(Volt,VMaxVolt);
  VMaxCosf=Maxima(Cosf,VMaxCosf);
  
  VMinVolt=Minima(Volt,VMinVolt);
  VMinCosf=Minima(Cosf,VMinCosf);
  
  CRepo++;1;
  CVolt=CVolt+Volt;
  CCosf=CCosf+Cosf;
  CKwah=CKwah+Kwah;

//***********************************************************************************//  
//********    Presentacion de Reporte de Calidad y consumo Energetico     ********** //
//***********************************************************************************// 
 
  if(CRepo==30){
  
    MuestraHora(HORA);
    PKwah=Promedio(CKwah,CRepo);
    PresentacionReporte();
    ReporteEstadistico(VMinVolt,Volt,VMaxVolt,"Valores de Tension = ");
    ReporteEstadistico(VMinCosf,Cosf,VMaxCosf,"Valores de CosenFi =   ");
    ReporteConsumoPromedio("Consumo KWah= ",PKwah," costo por Hora: $ ",ValorKwah);
    CVolt=0;
    CCosf=0;
    CKwah=0;    VMaxVolt,VMaxCosf,PVolt,PCosf,CRepo=0;
    VMinVolt=300;
    VMinCosf=1;

}
//***********************************************************************************//  
//****************   ALERTA Control de la Tension entre 210 y 225 Volt ************* //
//***********************************************************************************// 

  if(Volt==195){
    Alarma="VOLTAJE    ";
    Estado=" Voltaje por DEBAJO de lo Normal";
    AlarmaVoltaje(Alarma,Volt,Estado);
    GuardarDato(Ent);
   }
  if(Volt==229){
    Alarma="VOLTAJE   ";
    Estado=" Voltaje por ENCIMA de lo Normal";
    AlarmaVoltaje(Alarma,Volt,Estado);
    GuardarDato(Ent);
   }
    
//***********************************************************************************//
//**************   ALERTA Control del Coseno Fi por debajo 0.89  ********************//
//***********************************************************************************//

  if(Cosf==0.87){
   Alarma="COSENO FI ";
   Estado=" POR DEBAJO 0,89";
   AlarmaCosenoFi(Alarma,Cosf,Estado);
   GuardarDato(Ent);
   CCosf++;
//   PCosf=PromedioFalla(CCosf,Cosf,PCosf);
  } 

 
     
} 
/****************************************/
/************* FUNCIONES ****************/
/****************************************/

/************    FUNCIONES    ******************/

void GuardarDato(String dato){
    
  File mio=SD.open("alarm.txt", FILE_WRITE);
  
  if(SD.exists("alarm.txt")){
  Serial.println("Existe el archivo alarm.txt");
  }else{
  Serial.println("No existe el archivo");
  }
  
  if(mio){
    Serial.print("Escribiendo en archivo alarm.txt...");
    mio.print("Registro de la Hora: ");
    mio.println(dato);
    mio.flush();
    Serial.print("Se guardo registro ");
    Serial.println(dato);
    } else {
    Serial.println("No se pudo abrir archivo alarm.txt");
  }
 mio.flush();
 mio.close();
 delay(2000);
}

Error4.txt (1 KB)

FileIO.h (2.73 KB)

SD.h (2.77 KB)

RMPeter: Hi Chuck Thanks very much for your tip. I reinstalled the base SW on version 1.5.4 And compilate the program with librari FileIO.h. The program without the Librarie FileIO had more mistake without its. I send the program and attach the file error and the files FileIO.h and SD.h

Regards. Roberto

Roberto, Are you trying to access the SD Card on a YUN? If so, you do not need SD.h.

If you have both a SD Card on the YUN, and another SD Shield connected, you are going to have to rewrite either the SD library or the FILE library. These two libraries were not designed to work together.

Also, please use the "Quote button when you reply. It sets a flag that tells me, I have a message I need to read.

Chuck.


Check out my Kickstarter Project Memory Panes an expansion RAM Shield for Mega2560's. It adds 1MB of RAM for those projects where 8KB is not enough.