collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?  (Lida 4489 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline chefmoisas

  • Mini Robot
  • *
  • Mensagens: 16
Boa Noite

Sou um iniciate interessado em construir uma solução para um aquario e pretendo interligar um ldc IIC I2C TWI 1602 16x2 Serial LCD e o RTC Real Time Clock DS1307 I2C o problema é que ambos usam as portas 4 e 5 analogicas no arduino uno.

Onde posso alterar as portas ? Na libraria ?

Aguardo um feedback e desde já agradeço toda a vossa ajuda

Aqui vão os links dos modulos
http://www.ebay.com/itm/Mini-RTC-Real-Time-Clock-DS1307-I2C-BUS-for-PIC-AVR-ARM-/320948156399?pt=LH_DefaultDomain_0&hash=item4aba0037ef
http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=261121636224

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #1 em: 21 de Novembro de 2012, 22:28 »
se estas a funcionar com os 2 em i2c então eles devem estar nas mesmas 2 portas. tem de ter endereços de i2c diferentes
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline chefmoisas

  • Mini Robot
  • *
  • Mensagens: 16
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #2 em: 21 de Novembro de 2012, 22:38 »
se estas a funcionar com os 2 em i2c então eles devem estar nas mesmas 2 portas. tem de ter endereços de i2c diferentes

Obrigado pela tua pronta resposta.
Onde faço essa alteração no sentido de ter 2 endereços de i2c diferentes

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #3 em: 21 de Novembro de 2012, 22:40 »
devem vir ja com uns diferentes em principio. raramente componentes diferentes tem os mesmo endereços. deixa ver se encontro o endereço de fabrica

http://www.sparkfun.com/datasheets/Components/DS1307.pdf (faz ctrl+f e procura address)
no clock ta isto na datasheet:
The address map for the RTC and RAM registers of the DS1307 is shown in Figure 2.  The RTC registers
are located in address locations 00h to 07h.  The RAM registers are located in address locations 08h to
3Fh.  During a multi-byte access, when the address pointer reaches 3Fh, the end of RAM space, it wraps
around to location 00h, the beginning of the clock space.

parece que os registos estão nas localizações 00h ate 07h.
00h é os segundos, 01h é os minutos,02h é as horas, 03h é os dias, 04h é a data (não percebi que é o date aki), 05h é os meses, 06h é os anos. não sei bem o que é isso nos numeros que os endereços normalmente são

no lcd

  I2C Address: 0x27
« Última modificação: 21 de Novembro de 2012, 22:55 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #4 em: 21 de Novembro de 2012, 22:42 »
Boas,
Como estás a usar I2C para comunicar com os 2 dispositivos tens obrigatóriamente que usar esses 2 pinos.
Acontece que ao comunicar por I2C tens a vantagem de ter carradas de dispositivos a comunicar, todos ligados a esses 2 pinos, pois cada dispositivo tem um endereço. No caso do RTC penso que tens alguns pinos dedicados para o endereço.
Tenta ler a datasheet e vê. Se estiveres a usar o arduino tens de esquecer o bit de escrita/leitura.

Existem bibliotecas para I2C por software, mas (que eu saiba) só dá para master, ou seja, só podes enviar informação, nunca receber. Penso que isto pode ser útil para o lcd, caso este não envie informação...
Se não te safares com os endereços tenta procurar por essa biblioteca.

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #5 em: 21 de Novembro de 2012, 22:48 »

Existem bibliotecas para I2C por software, mas (que eu saiba) só dá para master, ou seja, só podes enviar informação, nunca receber. Penso que isto pode ser útil para o lcd, caso este não envie informação...
Se não te safares com os endereços tenta procurar por essa biblioteca.

então se não da para receber como se usa por exemplo um srf10? eu uso alguns por i2c e estou a receber dados
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #6 em: 21 de Novembro de 2012, 22:53 »
Vi agora os links do lcd e do RTC.

Segundo o que diz no ebay, o endereço para o lcd é fixo, e é 0x27.
O do RTC não sei... Segundo a imagem da placa há um pino chamado INT que deve ser para alterar um bit do endereço, mas na datasheet do RTC diz que o mesmo tem um endereço fixo também... Que é 0x68 se fiz bem as contas.

Experimenta não ligar o pino INT e experimenta com o endereço de 0x68.

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #7 em: 21 de Novembro de 2012, 22:57 »
Estás a usar com que biblioteca? Com a Wire certo?
Ou seja, estás a comunicar por I2C, mas por hardware... Escreves no registo do microcontrolador e o mesmo trata de enviar a informação por hardware. Daí teres de usar obrigatóriamente os pinos A4 e A5, pois estes são os reservados para o efeito.

Se quiseres usar outros pinos, que era o que eu estava a dizer, existem bibliotecas que fazem a tal comunicação por I2C, mas por software. Usam timers para enviar a informação no timing correcto. Pelo que sei não há bibliotecas que suportem receber informação, mas há para enviar. Logo no caso do lcd, e não sabendo como o mesmo funciona, não deve ser preciso receber informação, logo esse dava para colocar noutro pino qualquer. Mas não há necessidade, visto que o RTC e o lcd têm endereços diferentes.

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #8 em: 21 de Novembro de 2012, 22:59 »
Estás a usar com que biblioteca? Com a Wire certo?
Ou seja, estás a comunicar por I2C, mas por hardware... Escreves no registo do microcontrolador e o mesmo trata de enviar a informação por hardware. Daí teres de usar obrigatóriamente os pinos A4 e A5, pois estes são os reservados para o efeito.

Se quiseres usar outros pinos, que era o que eu estava a dizer, existem bibliotecas que fazem a tal comunicação por I2C, mas por software. Usam timers para enviar a informação no timing correcto. Pelo que sei não há bibliotecas que suportem receber informação, mas há para enviar. Logo no caso do lcd, e não sabendo como o mesmo funciona, não deve ser preciso receber informação, logo esse dava para colocar noutro pino qualquer. Mas não há necessidade, visto que o RTC e o lcd têm endereços diferentes.

a ok não tinha entendido
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline chefmoisas

  • Mini Robot
  • *
  • Mensagens: 16
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #9 em: 21 de Novembro de 2012, 23:03 »
Estás a usar com que biblioteca? Com a Wire certo?
Ou seja, estás a comunicar por I2C, mas por hardware... Escreves no registo do microcontrolador e o mesmo trata de enviar a informação por hardware. Daí teres de usar obrigatóriamente os pinos A4 e A5, pois estes são os reservados para o efeito.

Se quiseres usar outros pinos, que era o que eu estava a dizer, existem bibliotecas que fazem a tal comunicação por I2C, mas por software. Usam timers para enviar a informação no timing correcto. Pelo que sei não há bibliotecas que suportem receber informação, mas há para enviar. Logo no caso do lcd, e não sabendo como o mesmo funciona, não deve ser preciso receber informação, logo esse dava para colocar noutro pino qualquer. Mas não há necessidade, visto que o RTC e o lcd têm endereços diferentes.

Então posso ligar ambos às mesmas portas???Sem fazer mais nada certo ?

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #10 em: 21 de Novembro de 2012, 23:04 »
sim em hardware sim. é apenas ligar os 2 a esses pins. mas tens de ligar os SCL e o SDA certos
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline chefmoisas

  • Mini Robot
  • *
  • Mensagens: 16
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #11 em: 21 de Novembro de 2012, 23:06 »
sim em hardware sim. é apenas ligar os 2 a esses pins. mas tens de ligar os SCL e o SDA certos

Então o que fiz basicamente foi ligar na placa de testes ambos os sda na porta 4 analogica e os scl na porta 5 analogica.

Agora começa outro problema

Posso iniciar 2 serias diferentes ???

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #12 em: 21 de Novembro de 2012, 23:10 »
o relogio em principio vai ter sempre a funcionar. o lcd devera tambem estar sempre a mostrar o mesmo depois de receber informação até voltares a enviar ou desligar.

para leres o relogio e enviar para o led ao mesmo tempo não da. da para parecer ao mesmo tempo. mal lês o relogio podes mandar logo a informação para o lcd.
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline chefmoisas

  • Mini Robot
  • *
  • Mensagens: 16
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #13 em: 21 de Novembro de 2012, 23:20 »
Este é o codigo que tenho feito para já

Tenho também um modulo de 8 rele para activar desde bombas de retorno led's, etc todos através do RTC no entanto quando faço upload não aparece as horas no serial

O que tenho mal feito ?


Código: [Seleccione]
/* YourDuino.com Example Software Sketch
 LCD Display Blue/Yellow: I2C/TWI Interface
 terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"
/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27
/*-----( Declare Variables )-----*/
RTC_DS1307 RTC;
const int rele1 =  1;
const int rele2 =  2;
const int rele3 =  3;
const int rele4 =  4;
const int rele5 =  5;
const int rele6 =  6;
const int rele7 =  7;
const int rele8 =  8;

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);
  lcd.init(); // initialize the lcd
  lcd.backlight();
  // Print a message to the LCD.
  lcd.setCursor(0, 0);
  lcd.print("2-Line DISPLAY");
  delay(1500);
  lcd.setCursor(0, 1);
  lcd.print("YourDuino: HI!");
  Serial.begin(57600);
  Wire.begin();
    RTC.begin();
    pinMode(13, OUTPUT);

  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__));
  }
}/*--(end setup )---*/



void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  {
    // when characters arrive over the serial port...
    if (Serial.available()) {
      // wait a bit for the entire message to arrive
      delay(100);
      // clear the screen
      lcd.clear();
      // read all the available characters
      while (Serial.available() > 0) {
        // display each character to the LCD
        lcd.write(Serial.read());
      }
   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();
    delay(4000);
  const int  hora = now.hour();
if (hora >= 00 && hora < 04) digitalWrite(rele1, HIGH);
else digitalWrite(rele1, LOW); 
  }
  }

}/* --(end main loop )-- */

/*-----( Declare User-written Functions )-----*/


/* ( THE END ) */

Offline chefmoisas

  • Mini Robot
  • *
  • Mensagens: 16
Re: Lcd e modulo relogio com as mesmas portas analogicas o que fazer ?
« Responder #14 em: 21 de Novembro de 2012, 23:45 »
Afinal consegui meter as horas e data no lcd, usei vários exemplos deixo aqui o codigo para vossa opiniao

Código: [Seleccione]
/*-----( Import needed libraries )-----*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "RTClib.h"
/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27
/*-----( Declare Variables )-----*/
RTC_DS1307 RTC;

void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
  Wire.begin();
  RTC.begin();

  if (!RTC.isrunning())
  {
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}


void loop()
{
  DateTime agora = RTC.now();
  String relogio_data = "DT: ";
  String relogio_hora = "HR: ";
 
  int dia = agora.day();
  int mes = agora.month();
  int ano = agora.year();
 
  relogio_data += ArrumaZero(dia);
  relogio_data += "/";
  relogio_data += ArrumaZero(mes);
  relogio_data += "/";
  relogio_data += ano;
 
  int hora = agora.hour();
  int minuto = agora.minute();
  int segundo = agora.second();
 
  relogio_hora += ArrumaZero(hora);
  relogio_hora += ":";
  relogio_hora += ArrumaZero(minuto);
  relogio_hora += ":";
  relogio_hora += ArrumaZero(segundo);
 
  lcd.setCursor(0, 0);
  lcd.print(relogio_data);
  lcd.setCursor(0, 1);
  lcd.print(relogio_hora);
 
  delay(500);
}


String ArrumaZero(int i)
{
  String ret;
  if (i < 10) ret += "0";
  ret += i;
  return ret;
}