Ir para o conteúdo
Marta Barbosa

Address em Arduino

Mensagens Recomendadas

Marta Barbosa

Boa noite,

Sou iniciante em arduino e estou a fazer um projeto para a faculdade, no entanto tenho um pequeno problema e preciso de ajuda.
Pelo que eu percebi, o sensor de watchdog por predefinição vem alocado às entradas A4 e A5 do Arduino Uno devido ao DS1307_ADDRESS que vem predefinido com essas entradas, no entanto os meus Arduinos já tem essas entradas ocupadas, (por causa da escravatizaçao). Alguém me sabe dizer como faço para mudar a directoria das entradas, por favor?
Ou então como faço para o arduino ler a data e hora do pc e não precisar do watchdog.

Desde já agradeço :)


MartaBarbosa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Nuno Santos

Boas Marta,

Não sei se entendi muito bem o que queres, pelo que entendi, queres ligar um RTC por I2C nas portas A4 e A5 do Arduino, e ja la tens qualquer coisa ligada? (o que é escravatizaçao?) o i2c é um protocolo que funciona como um barramento, pelo que se quiseres ligar mais alguma coisa que use i2c basta ligares em paralelo nos pinos do arduino ou em serie nos mesmos pinos no RTC, pois a selecao do dispositivo que estas a ler é relativo ao ADDRESS de cada dispositivo.

Como nao entendi muito bem o que queres, se a informação que te dei nao servir, da um pouco mais de detalhes por favor

Editado por Nuno Santos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Marta Barbosa

Ola Nuno,

Obrigada pela resposta, no entanto vou tentar explicar melhor.

Eu tenho dois arduinos UNO ligados um ao outro pois preciso de todas as entradas de dois arduinos e o prof nao me deixa pegar num nano ou mega, então escravizei um e o outro ficou a mestre para haver comunicação entre eles. Assim, um dos arduinos apenas lê alguns dados e envia-os para o outro, deste modo o segundo arduino lê mais dados e trata os dados recebidos, é o que tem o código principal. Para conseguir fazer esta comunicação tive de ligar as entradas A4 e A5 dos dois arduinos.
Agora, preciso monitorizar a data e hora atual e para isso tenho um watchdog. O problema é  que este dispositivo vem predefinido para as entradas A4 e A5 e eu já as tenho ocupadas. Nao poderei colocar em paralelo como sugeriu pois assim a escravatização estaria condicionada 


MartaBarbosa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Olá Marta,

Ora bem, pelo que percebi, tens 2 arduinos a comunicar por I2C, certo ? Pelo que entendi, tens um arduino ligado como I2C master e outro como I2C slave, é isso ?

Se for esse o caso podes ligar o RTC como I2C Slave, e no código definir o endereço do RTC, para comunicar.

51adfda8ce395f9d5d000000.png

E no código endereças cada dispositivo pelo seu endereço I2C, lês os dados, e "tudo pacifico"! ;)

#include <Wire.h>

int address_sensor1= 72; //RTC
int address_sensor2= 73; //segundo arduino

void setup(){

Serial.begin(9600);
Wire.begin(); //Cria um objecto wire (i2c)
}
void loop(){
Wire.beginTransmission(address_sensor1); //Envia um pedido de comunicação com o rtc no endereço definido
Wire.write(0); //Manda um bit para o register zero a pedir o envio de dados
Wire.endTransmission(); //termina a transmissão com o sensor zero
Wire.requestFrom(address_sensor1, 1);//Pede 1 byte no endereço expecificado 

while(Wire.available() == 0);
  {
    delay(2000);
    Wire.beginTransmission(address_sensor2); //envia pedido ao dispositivo no endereço especificado
    Wire.write(0); // evia um bit para o register zero a pedir dados
    Wire.endTransmission(); //termina a transmissão de dados com o sensor no endereço
    //lê os dados do sensor no endereço
    Wire.requestFrom(address_sensor2, 1);//pede 1 byte ao endereço expecificado 
    while(Wire.available() == 0);
    int value= Wire.read();//lê os dados vindos do dispositivo
    delay(2000);
  }
} 

Tens na PROGRMAR um artigo que fala sobre i2c.

Cordiais cumprimentos,
Apocsantos

 

 


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bubulindo

@apocsantos,

O esquema que colocaste é relativo a SPI, não a I2C. O esquema é algo assim:

https://i.stack.imgur.com/ZkR5L.png

O código no entanto parece correcto. Não sei apenas se é preciso enviar um endTransmission() depois do requestFrom().

 


include <ai se te avio>

Mãe () {

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
apocsantos

Boa noite,

@bubulindo, tens razão, enganei-me na imagem. O código era para I2C, a imagem é que está incorrecta.

Cordiais cumprimentos,
Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

assinatura.jpg

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.