Error al compilar

Buenas tardes,
He estado trabajando en un codigo y al añadir una variable y un if, no me compila y me da este error al compilar

collect2.exe: error: ld returned 5 exit status

podriais echarme una mano?

gracias

Claro que si, cuando publiques el código y leas las normas del foro que claramente piden que una consulta se exponga con la mayor claridad posible.
Usa tags, si no sabes, de nuevo, lee las normas.

Esperamos tu código!!

Tal como me indicas te pongo el codigo, el error solo lo da cuando incluyo en él, el if (inicializo = 0) con este if lo que pretendo es comprobar si el codigo ya ha corrido una vez y si lo ha hecho no modificar las variables de estado1,2,3

No se que mas informacion puedo poner, la version de IDE es la 1.6.7 uso windows XP SP2 pero me da el mismo fallo en windows XP con SP3

Saludos y gracias

// include the library code:
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

//                     Addr, En, Rw, Rs, d4, d5, d6, d7, backlighpin, polarity
LiquidCrystal_I2C lcd( 0x27, 2,   1,  0,  4,  5,  6,  7,           3, POSITIVE );





// constantes que no cambian y que asignan el numero de pin
// a cada una de las entradas

const int entrada1 = 2; //pines de entrada
const int entrada2 = 3;
const int entrada3 = 4;
const int entrada4 = 5;
const int salida1 = 8; // pines de salida
const int salida2 = 9;
const int salida3 = 10;
const int salida4 = 11;


//variables 

int estado1 = 0; //inicializo variables
int estado2 = 0;//que cogeran el estado de
int estado3 = 0;//arranque de los reles
int estado4 = 0;//externos despues de un apagado y encendido

int lectura1 = 0; //inicializo varibles 
int lectura2 = 0;//que cogeran el valor
int lectura3 = 0; // de entrada
int lectura4 = 0; //a cero
int inicializo = 0;



void setup() {

  // set up the LCD's number of columns and rows: 
  lcd.begin(20, 4);
 //inicializo modos de cada pin
 //pines de entrada

 lcd.setCursor (0,0);
 lcd.print ("IN 1=");
 lcd.setCursor (0,1);
 lcd.print ("IN 2=");
 lcd.setCursor (0,2);
 lcd.print ("IN 3=");
 lcd.setCursor (0,3);
 lcd.print ("IN 4=");
 lcd.setCursor (10,0);
 lcd.print ("OUT1=");
 lcd.setCursor (10,1);
 lcd.print ("OUT2=");
 lcd.setCursor (10,2);
 lcd.print ("OUT3=");
 lcd.setCursor (10,3);
 lcd.print ("OUT4=");
 
 pinMode(entrada1, INPUT);
 pinMode(entrada2, INPUT);
 pinMode(entrada3, INPUT);
 pinMode(entrada4, INPUT);
 //pines de salida
 pinMode(salida1, OUTPUT);
 pinMode(salida2, OUTPUT);
 pinMode(salida3, OUTPUT);
 pinMode(salida4, OUTPUT);
delay (5000);
}

void loop() {
  
  // cargo el estado de inicio de los pines
  
if (inicializo = 0){
estado1 = digitalRead(entrada1);
estado2 = digitalRead(entrada2);
estado3 = digitalRead(entrada3);
estado4 = digitalRead(entrada4); 
}

 lcd.setCursor (6,0);
 lcd.print (estado1);
 lcd.setCursor (6,1);
 lcd.print (estado2);
 lcd.setCursor (6,2);
 lcd.print (estado3);
 lcd.setCursor (6,3);
 lcd.print (estado4);


lecturaestado();// me voy a un bucle para tratar las entradas

}


void lecturaestado(){// bucle donde comparo las entradas con el estado de incio
  
  lectura1 = digitalRead(entrada1);
  lectura2 = digitalRead(entrada2);
  lectura3 = digitalRead(entrada3);
  lectura4 = digitalRead(entrada4);

 lcd.setCursor (16,0);
 lcd.print (lectura1);
 lcd.setCursor (16,1);
 lcd.print (lectura2);
 lcd.setCursor (16,2);
 lcd.print (lectura3);
 lcd.setCursor (16,3);
 lcd.print (lectura4);
 
  if (lectura1 != estado1) {//si es distina la lectura del estado es que se 
   delay(30000);
    tratamientoentrada1(); //se ha caido y lo mando a bucle para ver is hombre   
  }                       //reacciona
  if (lectura2 != estado2) {
    delay(30000);
    tratamientoentrada2(); 
    }
  if (lectura3 != estado3) {
    delay(30000);
    tratamientoentrada3(); 
    }
  if (lectura4 != estado4) {
  delay (30000);
    tratamientoentrada4(); 
  
  }
}                         
 void tratamientoentrada1(){
  lectura1 = digitalRead(entrada1); //inicio del tratamiento de la entrada1
 if (lectura1 != estado1){
   digitalWrite(salida1, HIGH);
   delay (5000);  
 }
   /*digitalWrite(salida1, HIGH);
   delay (300);*/
   digitalWrite(salida1, LOW);
 }
 void tratamientoentrada2(){
  lectura2 = digitalRead(entrada2); //inicio del tratamiento de la entrada2
 if (lectura2 != estado2){
   digitalWrite(salida2, HIGH);
   delay (5000);  
 }
   /*digitalWrite(salida2, HIGH);
   delay (300);*/
   digitalWrite(salida2, LOW);
 }

 void tratamientoentrada3(){ //inicio del tratamiento de la entrada3
 lectura3 = digitalRead(entrada3);
 if (lectura3 != estado3){
   digitalWrite(salida3, HIGH);
   delay (5000);  
 }
   /*digitalWrite(salida3, HIGH);
   delay (300);*/
   digitalWrite(salida3, LOW);
 }
 void tratamientoentrada4(){ //inicio del tratamiento de la entrada4
 lectura4 = digitalRead(entrada4);
 if (lectura4 != estado4){
   digitalWrite(salida4, HIGH);
   delay (5000);  
 }
   /*digitalWrite(salida4, HIGH);
   delay (300);*/
   digitalWrite(salida4, LOW);
 }

te das cuenta, pusiste el código y 5 seg la solución
no se usa un = sino dos ==

if (inicializo == 0){

:o :o :o :o :slight_smile: :slight_smile: :slight_smile: gracias Surbyte que fallo mas tonto, acabo de cambiar al IDE 1.6.7 y no para de darme problemitas y pense que este ya era otro mas y era una torpeza mia jejejejeje

Muchas gracias!

vuelve al 1.6.0 o 1.6.4

Eso he leido que la gente no esta muy contenta con el 1.6.7

A ver que hago

Gracias