Proyecto de "dispenser" Alimento para caballos.

Buenas noches intento hacer un proyecto de un alimentador de caballos, la idea es simple pero no puedo dar con el codigo, funciona así:

En un "Silo" estará la comida de los caballos, el operador coloca el código del caballo, (Por ahora via serial, mas adelante via NUMPAD) Arduino ve el código y pregunta si el nombre de caballo es "X" si esta correcto el operador aprieta el numero "1" y arduino mueve un servo que servira la cantidad definida para cada caballo (Esto será por el tiempo que estara abierto el servo).

Consegui colocar un caballo y funciona pero he intentado de muchas formas para colocar otros caballos y ha sido simplemente imposible para mi, AYUDA POR FAVOR!!!! :wink:

#include <Servo.h>              // Incluye la libreria de servo

Servo myservo;                  // Define myservo como Servo

int posinicial = 15;            // Define la posicion inicial del servo
int posmedia = 105;             // Define la posicion en la que servira el alimento
int codigocaballo;              // Define el codigo del Caballo
int tiempotrueno = 4000;        // Define el tiempo que estara abierto el servo
int tiempoluna = 3500;
int confirmaciondelcaballo;     // Define la confirmacion del Caballo



void setup() {
 
 Serial.begin(9600);           // Enciende el Serial
 myservo.attach(12);           // Define el Servo en el output 12
 myservo.write(posinicial);    // Coloca el Servo en 0
 
}

void loop() {

Serial.println("Codigo del Caballo");     // Preguntamos el codigo del Caballo
while (Serial.available()==0){}            // Esperamos la respuesta

codigocaballo = Serial.parseInt ();       // Leemos el codigo

if(codigocaballo == 001){                                  // revisamos si esta correcto
  Serial.println("Caballo Trueno ? 1 = Si 2 = No");      // revisamos el Nombre del Caballo
 
          
  while (Serial.available()==0){}

confirmaciondelcaballo = Serial.parseInt();}

else {
  Serial.println("Error!!!");
  Serial.println("Intente Nuevamente");
  delay(1500);
  return;
}

if(confirmaciondelcaballo == 1){
  Serial.println ("Confirmado");
  delay(1500);
  myservo.write(posmedia);
  delay(tiempotrueno);
  myservo.write(posinicial);

delay(2000);

}
            
else{
  return;
}

}

Tengo una imagen de mi idea, no es muy buena pero se entiende :slight_smile:

Para empezar yo creo que lo encaras mal pero luego lo justificaré.
Como estas empezando tienes muchas ideas y no sabes como plasmarlas.

Asi que como siempre digo comencemos definiendo bien el objetivo y luego redefinamos el proyecto.

Responde estas preguntas:

  1. Cantidad de caballos
  2. variedad de dosificación. Hay categorías de alimentación? Tendras digamos 5 formas de alimentar los caballos o 50?
  3. Siempre los alimentas de la misma tolba o dispenser? o hay uno por caballo. (Esto es para que nosotros lo entendamos)
  4. tienes buena cobertura celular?
  5. Tienes WIFI en la zona del SILO?

Ahora te respondo la afirmación con la que comencé.
Sin son muchos caballos tal vez convenga crear una estructura con los datos, una estructura es como registro de una base de datos.
Entonces le defines el nombre, el tiempo de dosificación, la identificación RFID (pensando que asi será en el futuro), algun otro parámetro relevante.
Y luego solo te manejas con ella y una misma rutina para todos.

yo tiraría por algo así, prueba a ver que tal, no necesita estructura, ni saber si hay wifi en la zona ajajaja

#include <Servo.h>              // Incluye la libreria de servo

Servo myservo;                  // Define myservo como Servo

int posinicial = 15;            // Define la posicion inicial del servo
int posmedia = 105;             // Define la posicion en la que servira el alimento
int codigocaballo;              // Define el codigo del Caballo
int tiempotrueno = 4000;        // Define el tiempo que estara abierto el servo
int tiempoluna = 3500;
int confirmaciondelcaballo;     // Define la confirmacion del Caballo


char* nombre[10]         ={"","Trueno","Luna" }; //ETC ETC
unsigned long tiempo[10]= {0 ,  4000  , 3000  }; //atento aqui al uso de "" y 0 para eliminar el caballo con codigo 0 que veo que no hasquerido usar



void setup() {
 
 Serial.begin(9600);           // Enciende el Serial
 myservo.attach(12);           // Define el Servo en el output 12
 myservo.write(posinicial);    // Coloca el Servo en 0
 
 }

void loop() {

Serial.println("Codigo del Caballo");     // Preguntamos el codigo del Caballo
while (Serial.available()==0){}            // Esperamos la respuesta

codigocaballo = Serial.parseInt ();       // Leemos el codigo
Serial.print("Caballo ");


Serial.print(nombre[codigocaballo]);
Serial.println("? 1 = Si 2 = No");        
while (Serial.available()==0){};

confirmaciondelcaballo = Serial.parseInt();

if(confirmaciondelcaballo == 0) {
  Serial.println("Error!!!");
  Serial.println("Intente Nuevamente");
  delay(1500);
  
}

else if (confirmaciondelcaballo == 1) {
  Serial.println ("Confirmado");
  delay(1500);
  myservo.write(posmedia);
  delay(tiempo[codigocaballo]);
  myservo.write(posinicial);
  delay(2000);
}
            
else{
  return;
}

}

Yo preferiría tirar también por la vía de un array de estructuras, en lugar de arrays "paralelos" de datos. Supongo que al código de GO_zalo habría que añadirle otro array de pines o de servos. Al hilo de esto, dado mi desconocimiento, ¿Sería necesario un objeto Servo por cada uno de los comederos o sería posible con un solo objeto Servo hacer un attach al pin del servo correspondiente, actuarlo y hacer detach?
En otras palabras, ¿qué ocurre con un servo cuando hacemos detach?

:o

Solo hay un servo para todos los caballos lo que cambia es el tiempo que abre la comida

Supondría hacer con una estructura pero creo que el creador del hilo agradecería que no nos desviemos mucho de su código para que pueda comprenderlo fácilmente, de echo hay muchas más cosas que se pueden mejorar en el código, pero si a el ya le funciona así prefiero no cambiarse todo en el primer post. Si quiere optimizar lo repaso encantado. Me encanta optimizar :smiley:

¡Ah! Tienes razón. No sé por qué me monté la idea de un caballo=>un comedero=>un servo, cuando no se ha mencionado nada de comederos separados.

Las ideas empiezan chicas y luego se expanden, cuando venga por el post#6 y te diga y ahora como lo hago para 30 dispenser... lo respondes tu Go_zalo, jajaja

Siempre veo el mismo patrón, puedo equivocarme, porque no todos son iguales, pero no sabes, si elque pregunta lo hace para su caballeriza o lo piensa a nivel comercial.

En fin.. que quede asi.

surbyte:
Para empezar yo creo que lo encaras mal pero luego lo justificaré.
Como estas empezando tienes muchas ideas y no sabes como plasmarlas.

Asi que como siempre digo comencemos definiendo bien el objetivo y luego redefinamos el proyecto.

Responde estas preguntas:

  1. Cantidad de caballos
  2. variedad de dosificación. Hay categorías de alimentación? Tendras digamos 5 formas de alimentar los caballos o 50?
  3. Siempre los alimentas de la misma tolba o dispenser? o hay uno por caballo. (Esto es para que nosotros lo entendamos)
  4. tienes buena cobertura celular?
  5. Tienes WIFI en la zona del SILO?

Ahora te respondo la afirmación con la que comencé.
Sin son muchos caballos tal vez convenga crear una estructura con los datos, una estructura es como registro de una base de datos.
Entonces le defines el nombre, el tiempo de dosificación, la identificación RFID (pensando que asi será en el futuro), algun otro parámetro relevante.
Y luego solo te manejas con ella y una misma rutina para todos.

surbyte:
Para empezar yo creo que lo encaras mal pero luego lo justificaré.
Como estas empezando tienes muchas ideas y no sabes como plasmarlas.

Asi que como siempre digo comencemos definiendo bien el objetivo y luego redefinamos el proyecto.

Responde estas preguntas:

  1. Cantidad de caballos
  2. variedad de dosificación. Hay categorías de alimentación? Tendras digamos 5 formas de alimentar los caballos o 50?
  3. Siempre los alimentas de la misma tolba o dispenser? o hay uno por caballo. (Esto es para que nosotros lo entendamos)
  4. tienes buena cobertura celular?
  5. Tienes WIFI en la zona del SILO?

Ahora te respondo la afirmación con la que comencé.
Sin son muchos caballos tal vez convenga crear una estructura con los datos, una estructura es como registro de una base de datos.
Entonces le defines el nombre, el tiempo de dosificación, la identificación RFID (pensando que asi será en el futuro), algun otro parámetro relevante.
Y luego solo te manejas con ella y una misma rutina para todos.

Muchas gracias por tu ayuda. Me tarde porque estaba de viaje.

Siguen las respuestas a tus preguntas.

  1. No hay una cantidad definida exacta, pueden ser 5 o 20.
  2. Cada caballo tiene una cantidad exacta de alimento.
  3. Siempre del mismo dispenser, Maximo serian dos tipos de alimento ( Premium y regular) pero podrías ser silos diferentes con la misma salida, pero creo que esto seria mas adelante. (Próximo paso en el proyecto)
  4. Depende de cada local de los ranchos, pero en general si.
  5. Normalmente NO.

Saludos y muchas gracias por la ayuda.

GO_zalo:
yo tiraría por algo así, prueba a ver que tal, no necesita estructura, ni saber si hay wifi en la zona ajajaja

#include <Servo.h>              // Incluye la libreria de servo

Servo myservo;                  // Define myservo como Servo

int posinicial = 15;            // Define la posicion inicial del servo
int posmedia = 105;            // Define la posicion en la que servira el alimento
int codigocaballo;              // Define el codigo del Caballo
int tiempotrueno = 4000;        // Define el tiempo que estara abierto el servo
int tiempoluna = 3500;
int confirmaciondelcaballo;    // Define la confirmacion del Caballo

char* nombre[10]        ={"","Trueno","Luna" }; //ETC ETC
unsigned long tiempo[10]= {0 ,  4000  , 3000  }; //atento aqui al uso de "" y 0 para eliminar el caballo con codigo 0 que veo que no hasquerido usar

void setup() {

Serial.begin(9600);          // Enciende el Serial
myservo.attach(12);          // Define el Servo en el output 12
myservo.write(posinicial);    // Coloca el Servo en 0

}

void loop() {

Serial.println("Codigo del Caballo");    // Preguntamos el codigo del Caballo
while (Serial.available()==0){}            // Esperamos la respuesta

codigocaballo = Serial.parseInt ();      // Leemos el codigo
Serial.print("Caballo ");

Serial.print(nombre[codigocaballo]);
Serial.println("? 1 = Si 2 = No");       
while (Serial.available()==0){};

confirmaciondelcaballo = Serial.parseInt();

if(confirmaciondelcaballo == 0) {
  Serial.println("Error!!!");
  Serial.println("Intente Nuevamente");
  delay(1500);
 
}

else if (confirmaciondelcaballo == 1) {
  Serial.println ("Confirmado");
  delay(1500);
  myservo.write(posmedia);
  delay(tiempo[codigocaballo]);
  myservo.write(posinicial);
  delay(2000);
}
           
else{
  return;
}

}

Lo voy a probar.

Te agradezco mucho tu ayuda y los mantengo informados de como va avanzando

GO_zalo:
:o

Solo hay un servo para todos los caballos lo que cambia es el tiempo que abre la comida

Supondría hacer con una estructura pero creo que el creador del hilo agradecería que no nos desviemos mucho de su código para que pueda comprenderlo fácilmente, de echo hay muchas más cosas que se pueden mejorar en el código, pero si a el ya le funciona así prefiero no cambiarse todo en el primer post. Si quiere optimizar lo repaso encantado. Me encanta optimizar :smiley:

Exacto, la idea es un servo para todos los caballos, o máximo 2 hay caballos con comida premium y otros con comida "Normal" pero eso seria para el segundo paso del proyecto.

surbyte:
Las ideas empiezan chicas y luego se expanden, cuando venga por el post#6 y te diga y ahora como lo hago para 30 dispenser... lo respondes tu Go_zalo, jajaja

Siempre veo el mismo patrón, puedo equivocarme, porque no todos son iguales, pero no sabes, si elque pregunta lo hace para su caballeriza o lo piensa a nivel comercial.

En fin.. que quede asi.

Pienso hacer un piloto en mi casa en miniatura, y después presentarlo a algunos conocidos que podrían interesarse a desarrollado a nivel comercial.

Los mantengo al tanto, voy a montar el proyecto y tomare fotos y videos para que vena el progreso.

Les agradezco mucho su ayuda.

Att.

GO_zalo:
yo tiraría por algo así, prueba a ver que tal, no necesita estructura, ni saber si hay wifi en la zona ajajaja

#include <Servo.h>              // Incluye la libreria de servo

Servo myservo;                  // Define myservo como Servo

int posinicial = 15;            // Define la posicion inicial del servo
int posmedia = 105;            // Define la posicion en la que servira el alimento
int codigocaballo;              // Define el codigo del Caballo
int tiempotrueno = 4000;        // Define el tiempo que estara abierto el servo
int tiempoluna = 3500;
int confirmaciondelcaballo;    // Define la confirmacion del Caballo

char* nombre[10]        ={"","Trueno","Luna" }; //ETC ETC
unsigned long tiempo[10]= {0 ,  4000  , 3000  }; //atento aqui al uso de "" y 0 para eliminar el caballo con codigo 0 que veo que no hasquerido usar

void setup() {

Serial.begin(9600);          // Enciende el Serial
myservo.attach(12);          // Define el Servo en el output 12
myservo.write(posinicial);    // Coloca el Servo en 0

}

void loop() {

Serial.println("Codigo del Caballo");    // Preguntamos el codigo del Caballo
while (Serial.available()==0){}            // Esperamos la respuesta

codigocaballo = Serial.parseInt ();      // Leemos el codigo
Serial.print("Caballo ");

Serial.print(nombre[codigocaballo]);
Serial.println("? 1 = Si 2 = No");       
while (Serial.available()==0){};

confirmaciondelcaballo = Serial.parseInt();

if(confirmaciondelcaballo == 0) {
  Serial.println("Error!!!");
  Serial.println("Intente Nuevamente");
  delay(1500);
 
}

else if (confirmaciondelcaballo == 1) {
  Serial.println ("Confirmado");
  delay(1500);
  myservo.write(posmedia);
  delay(tiempo[codigocaballo]);
  myservo.write(posinicial);
  delay(2000);
}
           
else{
  return;
}

}

Lo probe en 123D Circuits y es exactamente lo que estoy buscando.

Ahora empezare hacer las pruebas para poder inserir los códigos a travez de un NUMPAD.

La idea después es colocar un sensor de humedad y temperatura dentro del "Silo" y un sensor de distancia para avisar quando se este acabando el alimento

Como surbyte dijo el proyecto empieza pequeño y va aumentando conforme va funcionando!!!!! En cuanto monte la maqueta postare videos y fotos!!!! Muchas gracias.

Bueno probe el siguiente código en mi Arduino MEGA y funciono de maravilla, hasta el momento que intente colocar el NUMPAD 4x4,

#include <Servo.h>             // Incluye la libreria de servo

Servo myservo;                 // Define myservo como Servo

int posinicial = 15;            // Define la posicion inicial del servo
int posmedia = 105;             // Define la posicion en la que servira el alimento
int codigocaballo;             // Define el codigo del Caballo
int confirmaciondelcaballo;    // Define la confirmacion del Caballo

int ledcomidaadvertencia = 22;
int ledsirviendo = 24;

char* nombre[10]         ={"","Trueno","Luna","Ribelino","Shama","Polvora"}; //ETC ETC
unsigned long tiempo[10]= {0 ,  4000  , 3000 , 3500 , 7000 , 8000  }; //atento aqui al uso de "" y 0 para eliminar el caballo con codigo 0 que veo que no hasquerido usar


#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8, 9}; //connect to the column pinouts of the keypad

Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup() {
 
 Serial.begin(9600);           // Enciende el Serial
 myservo.attach(12);           // Define el Servo en el output 12
 myservo.write(posinicial);    // Coloca el Servo en 0
 pinMode (ledcomidaadvertencia , OUTPUT);
 pinMode (ledsirviendo , OUTPUT);
}

void loop() {
char customKey = customKeypad.getKey();
 if (customKey){
    Serial.print(customKey);
    }
Serial.println("Codigo del Caballo");     // Preguntamos el codigo del tratador
while (Serial.available()==0){}            // Esperamos la respuesta

codigocaballo = Serial.parseInt ();       // Leemos el codigo
Serial.print("Caballo ");


Serial.print(nombre[codigocaballo]);
Serial.println("? 1 = Si 2 = No");        
while (Serial.available()==0){};

confirmaciondelcaballo = Serial.parseInt();

if(confirmaciondelcaballo == 0) {
  Serial.println("Error!!!");
  Serial.println("Intente Nuevamente");
  delay(1500);
  
}

else if (confirmaciondelcaballo == 1) {
  Serial.println ("Confirmado");
  delay(1500);
  digitalWrite (ledcomidaadvertencia, HIGH);
  Serial.println ("Sirviendo en 5 Segundos");
  delay(1000);
  Serial.println ("4");
  delay(1000);
  Serial.println ("3");
  delay(1000);
  Serial.println ("2");
  delay(1000);
  Serial.println ("1");
  delay(1000);
  digitalWrite (ledcomidaadvertencia, LOW);
  delay(50);
  digitalWrite (ledcomidaadvertencia, HIGH);
  delay(50);
  digitalWrite (ledcomidaadvertencia, LOW);
  delay(50);
  digitalWrite (ledcomidaadvertencia, HIGH);
  delay(50);
  digitalWrite (ledcomidaadvertencia, LOW);
  
  
  myservo.write(posmedia);
  digitalWrite (ledsirviendo, HIGH);
  delay(tiempo[codigocaballo]);
  myservo.write(posinicial);
  digitalWrite (ledsirviendo, LOW);
  delay(2000);
}
            
else{
  return;
}

}

En otras ocaciones he imprimir en el Serial los números del NUMPAD pero no entiendo como hacer que el serial los lea como el código, si ustedes tienen alguna idea se los agradeceria mucho.

Y Go_zalo que me dices a esto?

Como surbyte dijo el proyecto empieza pequeño y va aumentando conforme va funcionando!!!!! En cuanto monte la maqueta postare videos y fotos!!!! Muchas gracias.

Ahora me toca reirme a mi no, jaja.
Creo que el capitulo 1 de telepatía lo he superado (como diría Noter, pero dejo que el opine).

Verás como la idea va migrando de a poco a lo que yo le preguntaba y terminará siendo un proyecto con dispenser especial para N caballos, base de datos, WIFI, etc, envio de datos al celular, o bien es lo que a mi me gustaría.

Hablamos de un mercado interesante que merece un enfoque no tan acotado, pero eso depende de tu evaluación del mercado y si pasas de tu necesidad particular a la necesidad de los demás que incluya tu situación.

Yo, haría un mejor estudio del mercado y si la respuesta es afirmativa consideraría hacer una versión mas amplia ya que si hay "interesados" se paga sola.

surbyte:
Y Go_zalo que me dices a esto?
Ahora me toca reirme a mi no, jaja.
Creo que el capitulo 1 de telepatía lo he superado (como diría Noter, pero dejo que el opine).

Verás como la idea va migrando de a poco a lo que yo le preguntaba y terminará siendo un proyecto con dispenser especial para N caballos, base de datos, WIFI, etc, envio de datos al celular, o bien es lo que a mi me gustaría.

Hablamos de un mercado interesante que merece un enfoque no tan acotado, pero eso depende de tu evaluación del mercado y si pasas de tu necesidad particular a la necesidad de los demás que incluya tu situación.

Yo, haría un mejor estudio del mercado y si la respuesta es afirmativa consideraría hacer una versión mas amplia ya que si hay "interesados" se paga sola.

Si probablemente el proyecto empiece a tener dimensiones como las que comentas. Pero creo que si ya parto para ese lado me voy a empezar a confundir y como soy novato en la programación puede que me quede mucho tiempo parado.

Les agradezco que se tomen el tiempo de leer estos posts, de hecho ya aumente un poco el código colocando el sensor de distancia que ira dentro del "silo" el problema esta siendo que cuando lo uso separado funciona bien, pero en cuanto lo junto en el código no lo esta. Creo que es un problema de "while" o "delay" sigue el código.

#include <Servo.h>               // Incluye la libreria de servo

Servo myservo;                   // Define myservo como Servo

int posinicial = 15;             // Define la posicion inicial del servo
int posmedia = 105;              // Define la posicion en la que servira el alimento
int codigocaballo;               // Define el codigo del Caballo
int confirmaciondelcaballo;      // Define la confirmacion del Caballo
int ledcomidaadvertencia = 22;  // Definimos el pin 22 como Led de advertencia
int ledsirviendo = 24;          // Definimos el pin 24 como Led de Sriviendo
char* nombre[10]         ={"","Trueno","Luna","Ribelino","Shama","Polvora"};   // Definimos el array con los nombres de los caballos
unsigned long tiempo[10]= {0 ,  4000  , 3000 , 3500 , 7000 , 8000  };          // Se define el tiempo de alimento para cada caballo

#include <Keypad.h>

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8, 9}; //connect to the column pinouts of the keypad

Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

int triggerPin = 26;
int echoPin = 27;
int ledRed = 28;



void setup() {
 
 Serial.begin(9600);                          // Enciende el Serial
 myservo.attach(12);                          // Define el Servo en el output 12
 myservo.write(posinicial);                   // Coloca el Servo en 0
 pinMode (ledcomidaadvertencia , OUTPUT);     //Pinmode del led de advertencia como output
 pinMode (ledsirviendo , OUTPUT);             // Pinmode del led sirviendo como output
 pinMode(triggerPin, OUTPUT);                 // Pinmode del trigger pin
 pinMode(echoPin, INPUT);                     // Pinmode del echopin
 pinMode(ledRed, OUTPUT);                     // Pinmode del LedRojo Comida baja

}


void loop() {

long duration, distance;
  
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2)/29.1;
  
  if (distance >= 70 ){
    digitalWrite (ledRed, HIGH);
 
  }
  else{
    digitalWrite(ledRed, LOW);
  }
  


char customKey = customKeypad.getKey();
 if (customKey){
    Serial.print(customKey);
    }
Serial.println("Codigo del Caballo");            // Preguntamos el codigo del Caballo



while (Serial.available()==0){}                  // Esperamos la respuesta

codigocaballo = Serial.parseInt ();              // Leemos el codigo
Serial.print("Caballo ");


Serial.print(nombre[codigocaballo]);             // Preguntamos para confimrar el nombre del caballo
Serial.println("? 1 = Si 2 = No");               //  Definimos las respuestas
while (Serial.available()==0){};                 // Esperamos la respuesta

confirmaciondelcaballo = Serial.parseInt();      // Leemos la respuesta.

if(confirmaciondelcaballo == 0) {
  Serial.println("Error!!!");
  Serial.println("Intente Nuevamente");
  delay(1500);
  
}

else if (confirmaciondelcaballo == 1) {
  Serial.println ("Confirmado");
  delay(1500);
  digitalWrite (ledcomidaadvertencia, HIGH);
  Serial.println ("Sirviendo en 5 Segundos");
  delay(1000);
  digitalWrite (ledcomidaadvertencia, LOW);
  Serial.println ("4");
  delay(1000);
  digitalWrite (ledcomidaadvertencia, HIGH);
  Serial.println ("3");
  delay(1000);
  digitalWrite (ledcomidaadvertencia, LOW);
  Serial.println ("2");
  delay(1000);
  digitalWrite (ledcomidaadvertencia, HIGH);
  Serial.println ("1");
  delay(1000);
  digitalWrite (ledcomidaadvertencia, LOW);
  delay(50);
  digitalWrite (ledcomidaadvertencia, HIGH);
  delay(50);
  digitalWrite (ledcomidaadvertencia, LOW);
  delay(50);
  digitalWrite (ledcomidaadvertencia, HIGH);
  delay(50);
  digitalWrite (ledcomidaadvertencia, LOW);
  
  
  myservo.write(posmedia);
  digitalWrite (ledsirviendo, HIGH);
  delay(tiempo[codigocaballo]);
  myservo.write(posinicial);
  digitalWrite (ledsirviendo, LOW);
  delay(2000);
}
            
else{
  return;
}

}

Claro que sí, Ricardo:

Cum laude :smiley: :smiley: :smiley: :smiley: :smiley:

Como les prometi,

Les envio dos fotos una del servo que funcionara como "Válvula" para servir el alimento que en este caso utilizare Arroz.

Y la otra del "Silo"

También les envio el LINK del video de la "Válvula" funcionando, estoy abierto para consejos y comentarios!!!

Saludos.

el video es privado y no pude verlo. Las fotos súbleas a un sitio como www.tinypic.com asi no hace falta bajarlas.

Buenos dias.

El video no me aparece como privado, de hecho esta marcado como Publico.

El video también lo subi a Tinypic pero quedo muy malo, si no lo pueden ver en el link abajo subo el de Tinypic.

Sigue el LINK nuevamente.

Gracias por tip de las fotos aqui estan:

Gracias