Go Down

Topic: Arduino mega + lcd + timer por i2c (Read 3267 times) previous topic - next topic

Buenas....

Ante todo soy novato en esto, estudie electronica hace lo menos 15 años pero estoy algo pez ya..... y necesito ayuda.

Estoy intentando montar dos dispositivos por I2C (un lcd y un modulo reloj (ds1307))) en un arduino mega 2580, pero solo logro hacer funcionar la pantalla, el timer no funciona. Conecto ambas patillas SCA y SCL a las correspondientes de Arduino con una resistencia de pull-up a 5Vcc, la masa GND a la correspondiente y la vcc igual pero nada.

Ademas de indicarme si estoy conectando algo mal he pensado en comprar otro modulo timer por si el que me mandaron no va, alguien me podria recomendar uno en un sitio en concreto de firar???.

Gracias por todo.

Sergegsx

el RTC funciona por separado?
dices que has conectado una resistencia? o una en cada patilla?


si no te funciona solo el timer, olvidate de la pantalla por ahora. que timer es? ebay? muestra tu codigo, tu esquema de conexión? una foto...

Gracias por tu interes, hace tiempo que lo intente y ahora lo quiero retomar....

Este es mi hardware:
ARDUINO...


TIMER...


PANTALLA...




Este es mas o menos el esquema:




En cuanto al código use muchas variantes pero ni con el que venia de ejemplo pero la hora nada 00:00:00 buscare el código pero probe con muchas variantes y nada.

Gracias

Sergegsx

pon el código exacto porque yo tengo el mismo RTC y funciona bien con el codigo que viene con el arduino IDE.

He vuelto a empezarde cero y he usado el codigo de ejemplo:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DS1307.h>

DS1307 rtc(4, 5);
LiquidCrystal_I2C lcd(0x27,20,4);


int a;
int prueba;
void setup()
{


     //SetUp LCD
     lcd.init();
     lcd.backlight();
     lcd.setCursor(5, 1);
     lcd.print("SISTEMA OK");


        // Set the clock to run-mode
  rtc.halt(false);


  // The following lines can be commented out to use the values already stored in the DS1307
  rtc.setDOW(SUNDAY);        // Set Day-of-Week to SUNDAY
  rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  rtc.setDate(3, 10, 2010);   // Set the date to October 3th, 2010
 
 
  // Set SQW/Out rate to 1Hz, and enable SQW
  rtc.setSQWRate(SQW_RATE_1);
  rtc.enableSQW(true);


}

void loop()
{
      lcd.setCursor(6, 3);
      lcd.print(rtc.getTimeStr());
      delay(1000);

}

El resultado ha sido el siguiente:


Conectando el rtc sin resistencias PU ya que las lleva:


Llevando el lcd y el rtc a las patillas SDA y SCL del Arduino (Va por I2C aunque se vean patillas DB0, DB1,.......):


Y a la corriente de salida del arduino:



Esta muy mal???????


Gracias

Sergegsx

pon fotos mas claras del cableado, eso es un lio.

has probado con el rtc por separado? con el codigo que viene arduino? bueno no se si viene con arduino, te adjunto la libreria.

Code: [Select]
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now();
   
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
   
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
   
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
   
    Serial.println();
    delay(3000);
}

Gracias de nuevo por tu ayuda.

Conectado el Vcc y GND del RTC a las patillas GND y 5V de Arduino:





y el SDA y el SCL del rtc a los del Arduino



He usado la libreria que me pasas y el codigo y el resultado es el siguiente:



Alguna idea...

Gracias otra vez

Sergegsx

comprueba la velocidad del puerto de serie en tu sketch, creo que por defecto viene con 57600 y comprueba cuanto tienes seleccionado en la pantalla del serial monitor

Gracias, gracias, y gracias  :D

Con la libreria que me pasastes funciona sin problemas....



Lo dicho, muchas gracias.

Un saludo

Go Up