Sketch (Loop) para Valvulas

Hola, quiero exponer mi problema, he encontrado este Sketch en la red, y cuando trato de revisar la compilación me da este error, "POSITIVE" was not declared in this scope,
como no tengo idea de programación agradecería si alguien me ayuda a aclarar cual seria la razón de este error. el Display es un LCD 20x4 i2c y la dirección es 0x27, consejos sugerencias son agradecidas
saludos

// Arduino_Gotas_V190915

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
[color=red]LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);[/color]

// la dirección 0x27 //

Es que ese código funciona con la librería de fmalpartida que reemplaza la librería LiquidCrystal por una versión mejorada.
Que librería estas usando?

upss muy buena pregunta una que encontré por la red..... Liquid Crystal_i2c.h creo que es la que baje desde donde compre el LCD.
Saludos

Edit: He reemplazado la Libreria por la New Liquid Crystal de fmalpartida, y ahora la compilacion se realiza correcta, solamente que no hay actividad en el LCD, 2 lineas encendidas y 2 en oscuro, estoy probando con un Arduino Uno, no original
saludos

prueba asi primero
cuando en el setup pongas

lcd.begin(20,4);

luego pones

lcd.clear();

y si no, prueba definiendo de este modo

LiquidCrystal_I2C lcd(0x27)

;

me da errores,,,,, pues he visto que ya están estas variables... si se pueden llamar así

// Arduino_Gotas_V190915

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

// la dirección 0x27 //

//DECLARACION DE VARIABLES GENERAL
int retardoFlash=100;      
int entregotas=100;
unsigned long momentoCorte=0;
int PosCol=0;
int PosFila=2;
int tamgota1=20;
int tamgota2=20;
int numdegotas=2;

//PINES ANALOGICOS
const int analogPinPotDcha = A3;    // Potenciómetro izquierda
const int analogPinPotIzda = A2;    // Potenciómetro derecha

//PINES DIGITALES
const int inPinBotonInicio = 10;        // pin Botón1 Inicio proceso
const int inPinBotonSaltoLinea = 8;     // pin Botón2 cambio linea pantalla
const int inPinBotonEmbrague = 7;   // pin Botón3 para embragar potenciómetros 
const int pinAlimentaEmisor=12;    // pin alimentación Emisor
const int pinReceptorIR = 2;          // pin receptor Infrarrojos
const int pinDisparaValvula=11;      //pin de activación válvula
const int pinDisparoFlash = 13;      // pin de Disparo del Flash 
const int pinDisparadorCamara = 9;   // pin disparador cámara
const int pinPilotoFlash = 6;        // para poner un piloto del flash en la caja
void setup()
{
  
  Serial.begin(9600);
  pinMode(inPinBotonInicio, INPUT);
  pinMode(inPinBotonSaltoLinea, INPUT);
  pinMode(inPinBotonEmbrague, INPUT);
  pinMode(pinAlimentaEmisor,OUTPUT);
  pinMode(pinDisparaValvula,OUTPUT);
  pinMode(pinDisparoFlash, OUTPUT);
  pinMode(pinDisparadorCamara,OUTPUT);
  pinMode(pinReceptorIR, INPUT);
  digitalWrite(pinDisparoFlash,LOW);
  digitalWrite(pinAlimentaEmisor, HIGH);
  attachInterrupt(0,CorteBarrera,FALLING);
  
  lcd.begin(20,4);                      // initializa el lcd
  lcd.backlight();
  lcd.setBacklight(HIGH);  
  
  lcd.clear();
  Serial.println("Hola");
  lcd.print("Version...V190915");    //++++++++++++++++++
  espera(2000);
  lcd.clear();  
}

Ese código solo tiene el setup.
Falta el loop y falta la rutina de interrupción.

Ja..solo copie la parte del setup...donde estan las variables que tu me distes...era solo una muestra de esa parte del codigo...de vuelta a casa pego todo el codigo...
saludos

No pongas cosas parciales. Lo que tu crees no siempre es la razón del problema.
De hecho si lo fuera, lo solucionarías tu mismo y sin embargo requieres de nuestra ayuda. Asi que respetando las Normas, siempre siempre se debe pegar TODO el código.

Codigo completo:

// Arduino_Gotas_V190915

#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

// la dirección 0x3F puede cambiar en vuestra pantalla. Si no va probad con 0x27 //

//DECLARACION DE VARIABLES GENERAL
int retardoFlash=100;      
int entregotas=100;
unsigned long momentoCorte=0;
int PosCol=0;
int PosFila=2;
int tamgota1=20;
int tamgota2=20;
int numdegotas=2;

//PINES ANALOGICOS
const int analogPinPotDcha = A3;    // Potenciómetro izquierda
const int analogPinPotIzda = A2;    // Potenciómetro derecha

//PINES DIGITALES
const int inPinBotonInicio = 10;        // pin Botón1 Inicio proceso
const int inPinBotonSaltoLinea = 8;     // pin Botón2 cambio linea pantalla
const int inPinBotonEmbrague = 7;   // pin Botón3 para embragar potenciómetros 
const int pinAlimentaEmisor=12;    // pin alimentación Emisor
const int pinReceptorIR = 2;          // pin receptor Infrarrojos
const int pinDisparaValvula=11;      //pin de activación válvula
const int pinDisparoFlash = 13;      // pin de Disparo del Flash 
const int pinDisparadorCamara = 9;   // pin disparador cámara
const int pinPilotoFlash = 6;        // para poner un piloto del flash en la caja
void setup()
{
  Serial.begin(9600);
  pinMode(inPinBotonInicio, INPUT);
  pinMode(inPinBotonSaltoLinea, INPUT);
  pinMode(inPinBotonEmbrague, INPUT);
  pinMode(pinAlimentaEmisor,OUTPUT);
  pinMode(pinDisparaValvula,OUTPUT);
  pinMode(pinDisparoFlash, OUTPUT);
  pinMode(pinDisparadorCamara,OUTPUT);
  pinMode(pinReceptorIR, INPUT);
  digitalWrite(pinDisparoFlash,LOW);
  digitalWrite(pinAlimentaEmisor, HIGH);
  attachInterrupt(0,CorteBarrera,FALLING);
  
  lcd.begin(20,4);                      // initializa el lcd
  lcd.backlight();
  lcd.setBacklight(HIGH);  
  
  lcd.clear();
  Serial.println("Hola");
  lcd.print("Version...V190915");    //++++++++++++++++++
  espera(2000);
  lcd.clear();  
}
  
void loop()
{ 
  EsperaPulsacion();                         //llamada a función
    Serial.println("pulsado");
  DisparadorCamara();                     //llamada a función
     Serial.println("disparada cámara");
  ActivaValvula();                            //llamada a función
    Serial.println("soltada gota");
  ControlaInfrarrojos();                    //llamada a función
    //Serial.println("cortada barrera");
  Dispara_Flash();                           //llamada a función
    Serial.println("flash disparado");
    Serial.print("retardo= ");
    Serial.println(retardoFlash);
    
  }
void EsperaPulsacion(){        // ESPERA A QUE SE PULSE EL BOTON DE INICIO //
  lcd.setCursor(0,4);
  lcd.print("                    ");  
  momentoCorte=0; 
  escribe_valor();
  digitalWrite(pinAlimentaEmisor, HIGH);
  espera(1000);
  }
void DisparadorCamara(){           // ACTÚA EL DISPARADOR DE LA CAMARA //
  lcd.setBacklight(LOW);
  digitalWrite(pinDisparadorCamara, HIGH); //si no hay cable, esto lo haremos manualmente
  espera(100);
  digitalWrite(pinDisparadorCamara, LOW);
  lcd.setCursor(0,4);
  lcd.print("Disp ");
}
void ActivaValvula(){                  // ACTIVA VÁLVULA PARA SOLTAR GOTA //
digitalWrite(pinDisparaValvula, HIGH);  //si no hay válvula la soltaremos manualmente
espera(tamgota1);
digitalWrite(pinDisparaValvula, LOW);
if (numdegotas==2) {
espera(entregotas);
digitalWrite(pinDisparaValvula, HIGH);  //si no hay válvula la soltaremos manualmente
espera(tamgota2);
digitalWrite(pinDisparaValvula, LOW);
}
  lcd.print("Gota ");
}
void ControlaInfrarrojos(){           // CONTROLA LA BARRERA DE INFRARROJOS//
  while(momentoCorte==0){
    espera(1);  
  }
   lcd.print("Cor ");
}
void Dispara_Flash(){                  // DISPARA EL FLASH   
  int diferencia;
  long tiempo;
  tiempo=millis();
  diferencia=tiempo-momentoCorte;
  int tiempoquefalta=retardoFlash-diferencia;
  if (tiempoquefalta<1){
    tiempoquefalta=0;
  }
  espera(tiempoquefalta);
  digitalWrite(pinDisparoFlash, HIGH);
  espera(10);
  digitalWrite(pinDisparoFlash,LOW);
  digitalWrite(pinPilotoFlash, HIGH);
  espera(10);
  digitalWrite(pinPilotoFlash,LOW);
  espera(1000);
  lcd.print("Fl");
    lcd.setBacklight(HIGH);
    espera(1000);    
  }
  
void CorteBarrera(){           // ESTABLECE EL MOMENTO DE CORTE
if (momentoCorte==0){
  momentoCorte=millis();  
  }
}
int espera(int tiempoEspera){          //  FUNCION ESPERA
  long tiempoInicio;
  tiempoInicio=millis();
  while (millis()<tiempoInicio+tiempoEspera){    
      }
  }
void escribe_valor(){              // ACTUALIZA VARIABLES Y PANTALLA
int embragado;
int LecturaIzda;
int LecturaDcha;
int antLecturaIzda;
int antLecturaDcha;
int iniciopulsado;
int Dif_tamgota1;
int Dif_tamgota2;
int Dif_entregotas;
int Dif_retardoFlash;
lcd.blink();
lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("NumGotas ");
  lcd.print(numdegotas);
  lcd.setCursor(0,1);
  lcd.print("Gota1 ");
  lcd.print(tamgota1);
  lcd.setCursor(10,1);
  lcd.print("Gota2  ");
  lcd.print(tamgota2);
  lcd.setCursor(0,2);
  lcd.print("Rflas ");
  lcd.print(retardoFlash);
  lcd.setCursor(10,2);
  lcd.print("Entreg ");
  lcd.print(entregotas);
  PosCol=0;
  PosFila=2;
  lcd.setCursor(PosCol,PosFila);
  espera(1000);
 iniciopulsado=digitalRead(inPinBotonInicio);
  while (iniciopulsado==LOW){
   
  antLecturaIzda=analogRead(analogPinPotIzda)/5;
  antLecturaDcha=analogRead(analogPinPotDcha)/5;
  espera (100);
    if (PosFila==0){
      LecturaIzda=analogRead(analogPinPotIzda)/5;
      if(LecturaIzda>antLecturaIzda+5){
        numdegotas=2;
     }
      if(LecturaIzda<antLecturaIzda-5){
        numdegotas=1;
    }
      lcd.setCursor(9,0);
      lcd.print("   ");
      lcd.setCursor(9,0); 
      lcd.print(numdegotas);
      lcd.setCursor(0,0);
      espera(30);
  }  
    
    if (PosFila==1){
      LecturaIzda=analogRead(analogPinPotIzda)/5;
      if(LecturaIzda>antLecturaIzda){
        Dif_tamgota1=LecturaIzda-antLecturaIzda;
        tamgota1=tamgota1 + Dif_tamgota1;
      }
      if(LecturaIzda<antLecturaIzda){
        Dif_tamgota1=antLecturaIzda-LecturaIzda;
        tamgota1=tamgota1 - Dif_tamgota1;
    if(tamgota1<1) tamgota1=1;  
    }
      lcd.setCursor(6,1);
      lcd.print("   ");
      lcd.setCursor(6,1); 
      lcd.print(tamgota1);
      lcd.setCursor(0,1);
      espera(30);
      
      LecturaDcha=analogRead(analogPinPotDcha)/5;
      if(LecturaDcha>antLecturaDcha){
        Dif_tamgota2=LecturaDcha-antLecturaDcha;
        tamgota2=tamgota2 + Dif_tamgota2;
      }
      if(LecturaDcha<antLecturaDcha){
        Dif_tamgota2=antLecturaDcha-LecturaDcha;
        tamgota2=tamgota2 - Dif_tamgota2;
        if(tamgota2<1) tamgota2=1;
      } 
      lcd.setCursor(16,1);
      lcd.print("    ");
      lcd.setCursor(17,1);  
      lcd.print(tamgota2);
      lcd.setCursor(0,1);
      espera(30);      
    }      
      if (PosFila==2){        
      LecturaIzda=analogRead(analogPinPotIzda)/5;
       if(LecturaIzda>antLecturaIzda){
        Dif_retardoFlash=LecturaIzda-antLecturaIzda;
        retardoFlash=retardoFlash + Dif_retardoFlash;
      }
      if(LecturaIzda<antLecturaIzda){
        Dif_retardoFlash=antLecturaIzda-LecturaIzda;
        retardoFlash=retardoFlash - Dif_retardoFlash;
    if(retardoFlash<0) retardoFlash=0;  
    }
      lcd.setCursor(6,2);
      lcd.print("   ");
      lcd.setCursor(6,2); 
      lcd.print(retardoFlash);
      lcd.setCursor(0,2);
      espera(30);     
      LecturaDcha=analogRead(analogPinPotDcha)/5;
      if(LecturaDcha>antLecturaDcha){
        Dif_entregotas=LecturaDcha-antLecturaDcha;
        entregotas=entregotas + Dif_entregotas;
      }
      if(LecturaDcha<antLecturaDcha){
        Dif_entregotas=antLecturaDcha-LecturaDcha;
        entregotas=entregotas - Dif_entregotas;
    if(entregotas<0) entregotas=0;  
    } 
      lcd.setCursor(16,2);
      lcd.print("    ");
      lcd.setCursor(17,2);  
      lcd.print(entregotas);
      //lcd.print(33);
      lcd.setCursor(0,2);
      espera(30);
    }
     embragado=digitalRead(inPinBotonEmbrague);
    while (embragado==HIGH) {     
      antLecturaIzda=analogRead(analogPinPotIzda)/5;
      antLecturaDcha=analogRead(analogPinPotDcha)/5;
      embragado=digitalRead(inPinBotonEmbrague);
    }
   
if (digitalRead(inPinBotonSaltoLinea)==HIGH) {
  PosFila=PosFila+1;
  if (PosFila>3){
    PosFila=0; }
    lcd.setCursor(PosCol,PosFila);
    espera(300);
}
 iniciopulsado=digitalRead(inPinBotonInicio);    
}
}

Primero: estas seguro que el LCD I2C reporta en 0x3F? corriste el scanner_i2C.ino? Te dió esa dirección?

Es LCD 0x27, la dirección que viene de donde lo compre viene con esos detalles, en el código que cargue le cambien la dirección a 0x27.
función con los códigos de ejemplos que baje desde la pagina del vendedor.
saludos

Edit:
Specifications

20x4 LCD, White on Blue
I2C Address: 0x27
Supply voltage: 5V
Interface: GND,VCC,SDA,SCL
Pinout

Board I2C / TWI pins
Uno, Ethernet A4 (SDA), A5 (SCL)

Hurra---Hurra, el Sketch ha arrancado puedo ver las primeras senales de vida en el monitor..... He instalado todo de nuevo.

Si esta resuelto agrega SOLUCIONADO al título de tu tema.

Hi......solucionado no esta...solamente vi las primeras señales....observe que en el LCD el cursor se mueve muy ligero desde arriba hacia abajo...hoy quiero tomarme el tiempo para soldar los botones los potenciometros para comadar el display... tratate de subir un grafico...
saludos

Hola...... Bueno puedo decir que el Sketch corre bien, claro sin pruebas definitivas. ojalá el fin de semana tenga el tiempo.
Mi pregunta concreta es que debo cambiar en el Sketch para que los Flashes a usar no sean comandados desde arduino, sino que los voy a comandar desde la Camara con Funk (Trigger)?
Saludos