Marta Barbosa Posted February 3, 2018 at 11:38 PM Report #609211 Posted February 3, 2018 at 11:38 PM 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 🙂
Nuno Santos Posted February 4, 2018 at 09:28 AM Report #609212 Posted February 4, 2018 at 09:28 AM (edited) 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 Edited February 4, 2018 at 09:30 AM by Nuno Santos
Marta Barbosa Posted February 4, 2018 at 12:17 PM Author Report #609213 Posted February 4, 2018 at 12:17 PM 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
apocsantos Posted February 4, 2018 at 01:04 PM Report #609214 Posted February 4, 2018 at 01:04 PM 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. 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"
bubulindo Posted February 9, 2018 at 07:07 AM Report #609272 Posted February 9, 2018 at 07:07 AM @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 () { }
apocsantos Posted February 9, 2018 at 10:57 PM Report #609279 Posted February 9, 2018 at 10:57 PM 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"
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now