Pages: 1 [2] 3   Go Down
Author Topic: Proyecto incubadora huevos gallina  (Read 10639 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Oye no te imgainas lo pequeño que es el servo, yo tengo de esos, ¿te servirá?

Mientras me haga girar 1,5 kg entorno a unos rodamientos.... por cierto sabes donde venden rodamientos?
Logged

Venezuela
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Saludos Amigos....

Tengo la misma inquietud que a9965 ya que yo también tengo 2 servos iguales a esos y dudo mucho de esos "2Kg de torque", por otro lado ¿ese sensor de temp/hum no es un DHT11?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Saludos Amigos....

Tengo la misma inquietud que a9965 ya que yo también tengo 2 servos iguales a esos y dudo mucho de esos "2Kg de torque", por otro lado ¿ese sensor de temp/hum no es un DHT11?

Tiene toda la pinta
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Estoy desarrollando el diagrama de flujo para el programa que debo de hacer y me encuentro con varios muros.

He comprado un RELOJ DS1307 y quiero que se comunique con el Arduino UNO en I2C.
Esto lo hago por si algún día se me apaga el Arduino que no me empieze el ciclo de incubación desde el día 0 y lo haga desde el momento en el que se quedó sin energía.

Está claro que el RELOJ DS1307 se integra en una placa con una pila para ser autónomo.

Mi problema es que se muy poco de I2C, mas o menos se que tienes que cargar la librería .wire y empezar la transmisión, y tienes que ir al datasheet para ver como se comunica. Pero vamos por partes, en el diagrama de flujo lo primero que haga el programa es comprobar si antes ha dejado un ciclo por la mitad y si ha sido así que inicie desde ese momento.

Yo no se como conseguir que el arduino reconozca si se ha quedado a medias antes o no. Lo único que se me ocurre es que el programa sea especifico para una fecha de inicio y si no es esa fecha que reste los días que le manda el reloj y empieze desde ese día.

Es decir si lo pongo a funcionar el 11 de junio del 2012 y cuando inicia no es ese día sino el 15 de junio del 2012 pues que se vaya directamente a ese día.

Si se os ocurre algo mas facil me lo decís.



Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos,

Tengo buenas y malas noticias:

Me ha llegado el reloj DS1307 en cuestión de 4 días desde china, madre mia, la mala noticia que me ha costado dios y ayuda comunicarme con él, me daba fallo al compilarlo porque las librerías de wire.h no son compatibles con Arduino 1.0 y si bajo de versión no me comunica el la placa con el PC. Así que al final encontré un código que si lograba comunicarse con el reloj. Que es el siguiente:

Code:
//Arduino 1.0+ Only
//Arduino 1.0+ Only

#include "Wire.h"
#define DS1307_ADDRESS 0x68

void setup(){
  Wire.begin();
  Serial.begin(9600);
}

void loop(){
  printDate();
  delay(1000);
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}

void printDate(){

  // Reset the register pointer
  Wire.beginTransmission(DS1307_ADDRESS);

  byte zero = 0x00;
  Wire.write(zero);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_ADDRESS, 7);

  int second = bcdToDec(Wire.read());
  int minute = bcdToDec(Wire.read());
  int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
  int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  int monthDay = bcdToDec(Wire.read());
  int month = bcdToDec(Wire.read());
  int year = bcdToDec(Wire.read());

  //print the date EG   3/1/11 23:59:59
  Serial.print(month);
  Serial.print("/");
  Serial.print(monthDay);
  Serial.print("/");
  Serial.print(year);
  Serial.print(" ");
  Serial.print(hour);
  Serial.print(":");
  Serial.print(minute);
  Serial.print(":");
  Serial.println(second);

}

Ahora mi siguiente problema es que tengo poca idea de programar y mas o menos puedo aprender por analogías pero no se si debo hacerlo así.

Entonces que mejor manera es comentaros cada linea que es lo que hace y si lo digo mal pues me lo decís.
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Permiteme decirte que te equivocas, la mejor manera es empezar desde cero con tutoriales basicos pars entender que estas haciendo, copiar y pegar codigo no sirve de nada.si no lo entiendes. Coje un programa desde arriba y analiza y entiende cada linea, cuando haya algo que no entiendas pregunta.
Si usas tu metodo no aprenderas y la gente no.va a estar explicandote todo, en mi firma tienes muchos tutoriales. Suerte.
No acentos...movil.
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Permiteme decirte que te equivocas, la mejor manera es empezar desde cero con tutoriales basicos pars entender que estas haciendo, copiar y pegar codigo no sirve de nada.si no lo entiendes. Coje un programa desde arriba y analiza y entiende cada linea, cuando haya algo que no entiendas pregunta.
Si usas tu metodo no aprenderas y la gente no.va a estar explicandote todo, en mi firma tienes muchos tutoriales. Suerte.
No acentos...movil.

Pues ciertamente estoy de acuerdo con lo que dices, pero es que me corre prisa un proyecto. Muchas gracias, según avance en el proyecto lo iré publicando y en paralelo iré estudiando los ejemplos.
Logged

Spain
Offline Offline
Full Member
***
Karma: 0
Posts: 191
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No sé cuantas etapas puede tener un ciclo de incubación, ni que precisión requiere el proyecto (días, horas, minutos,...), pero puedes guardar el estado del ciclo (día del ciclo, hora del ciclo,...) en la EEPROM y leer al principio del código el estado almacenado. Así si se reinicia, podrás continuar desde el principio de la última etapa iniciada.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No sé cuantas etapas puede tener un ciclo de incubación, ni que precisión requiere el proyecto (días, horas, minutos,...), pero puedes guardar el estado del ciclo (día del ciclo, hora del ciclo,...) en la EEPROM y leer al principio del código el estado almacenado. Así si se reinicia, podrás continuar desde el principio de la última etapa iniciada.


Son del día 0 al día 18 y del día 18 al día 21 y luego se deja 1 día o 2 días mas de margen por si hay algún pollito que no quiere salir. Se que el Arduino cuenta hasta 50 días que son los byte que pueden contar. Lo que no se es que eso se puede guardar en una EPROM que lleva el Arduino o se la tienes que incluir.

De todas maneras ya compre el el reloj DS1307 y lo voy a utilizar, además en el mismo shield viene una EPROM compartiendo el mismo bus I2C.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tengo unas dudas respecto a este codigo:

Code:
void setDateDs1307()               
{
 
   second = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48)); //  Uso de (byte) conversión de tipo ASCII y matemáticas para lograr el resultado. 
   minute = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));
   hour  = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));
   dayOfWeek = (byte) (Serial.read() - 48);
   dayOfMonth = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));
   month = (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));
   year= (byte) ((Serial.read() - 48) *10 +  (Serial.read() - 48));
   Wire.beginTransmission(DS1307_I2C_ADDRESS);
   I2C_WRITE(zero);
   I2C_WRITE(decToBcd(second) & 0x7f);    // 0 to bit 7 starts the clock
   I2C_WRITE(decToBcd(minute));
   I2C_WRITE(decToBcd(hour));      // If you want 12 hour am/pm you need to set
                                   // bit 6 (also need to change readDateDs1307)
   I2C_WRITE(decToBcd(dayOfWeek));
   I2C_WRITE(decToBcd(dayOfMonth));
   I2C_WRITE(decToBcd(month));
   I2C_WRITE(decToBcd(year));
   Wire.endTransmission();
}

A ver si alguien me lo puede exlicar
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muy buenas, tengo buenas noticias, he hecho que me funcione el siguiente código. Yo copiaba y pegaba el código y le daba a verificar y no me daba errores pero no sabía como imprimir la fecha y la hora ni como establecer la hora ni fecha. Y un momento de esos de lucidez leí el encabezado mas detenidamente y vi que si escribías R o r te imprimía la fecha y la hora en el monitor del IDE pero solo me saían caracteres raros, y un día entero mirando el código hasta que ví que la velocidad de comunicación con el puerto serie era de 57600 baudios y el IDE lo tenía configurado por defecto a 9600 baudios, por lo tanto lo puse a la misma velocidad que en la configuración del puerto serie del Sketch y UALA... ahora puse una r o R y di a "send" y pumba, ahi tenía la hora y la fecha que en ese momento tenía el reloj. También pude establecer la fecha y la hora exacta en la que nos encontramos. Apague a mi amiguete Arduino y lo encendí a los 30 minutos y no se paró nin un momento. Por lo tanto he conseguido lo que yo quería, Ahora me tengo que comer la cabeza para que mi Sketch compare el día que inicia el ciclo de incubación con el que tiene el reloj y así sabrá en que momento empieza el ciclo. La historia es que para mi me cuesta bastante al ser muy novato pero cuando consigo estas cosas me da muchisima satisfacción y ganas de seguir adelante.

El codigo es el siguiente, estoy traduciendo los comentarios en español:

Os pongo el link porque no me deja incluir el código porque excedo de carácteres:

http://combustory.com/wiki/index.php/RTC1307_-_Real_Time_Clock

« Last Edit: May 05, 2012, 06:51:14 pm by barkalez » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Me ha llegado el LCD y ya lo he puesto en marcha.

un vídeo para que veais como funciona.

Logged

USA
Offline Offline
Newbie
*
Karma: 0
Posts: 1
online marketing
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

i agree with barkalez. thanks for the share, keep posting !

Thanks again
Logged


Spain
Offline Offline
God Member
*****
Karma: 25
Posts: 958
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

i agree with barkalez. thanks for the share, keep posting !
Thanks again

¿¿¿ Se ha dado de alta un usuario americano solo para agradecer al compañero que haya puesto el video del LCD ???

Ya lo que me faltaba por ver.... si me pinchan no sacan sangre  smiley-eek-blue
Logged

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

Offline Offline
Newbie
*
Karma: 0
Posts: 48
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos nuevo, vuelvo a la carga y con mas ganas que antes, pido disculpas por dejar el proyecto a medias, fué así por motivos personales y poco tiempo.

Me ha costado un poco ponerme al día pero ya estoy actualizado con el proyecto. Estoy haciendo el esquema con el software Fritzing que es genial, lo recomiendo. Cuando lo tenga todo conexionado lo subo a mi blog para que lo veáis.

Voy a actualizar el blog y cuando esté actualizado subo el proyecto para que veais como va quedando.

Saludos a todos.
Logged

Pages: 1 [2] 3   Go Up
Jump to: