Arduino RS485 a I2C súčasne

Odpovědět
miluk
Příspěvky: 2
Registrován: 28 říj 2022, 19:55
Reputation: 0

Arduino RS485 a I2C súčasne

Příspěvek od miluk » 28 říj 2022, 20:02

Ahojte,

mám pripojené Arduino Nano cez RS485 (TX1, RX0) k PLC Domat MarkMMX. Dáta z arduina čítam Modbus RTU protokolom. Všetko funguje správne až do doby, keď pripojím senzor osvetlenia BH1750 s I2C komunikáciou na piny A4 a A5. Po nahratí kódu na čítanie hodnoty zo senzora, prestane komunikovať NANO na RS485.

Vie mi s tým niekto pomôcť? Ďakujem.

Skrátený kód:

Kód: Vybrat vše

#include <BH1750.h>
#include<ModbusRtu.h>
#include <Wire.h>

BH1750 lightMeter;

float lux;

Modbus bus;  

uint16_t modbus_array[] = {180,20,40};

void setup()
{
  Wire.begin();
  bus = Modbus(10,1,4);
  bus.begin(19200);
}

void loop()
{
[b]   lux = lightMeter.readLightLevel();[/b]

   bus.poll(modbus_array,sizeof(modbus_array)/sizeof(modbus_array[0]));
   modbus_array[2] = lux;

  if (modbus_array[0] == 300)   
  {
    digitalWrite(led1,LOW);
  }
  else   
  {
    digitalWrite(led1,HIGH);
  }
}

AstroMiK
Příspěvky: 592
Registrován: 08 pro 2017, 19:05
Reputation: 0

Re: Arduino RS485 a I2C súčasne

Příspěvek od AstroMiK » 29 říj 2022, 07:35

A jaké konkrétní knihovny pro Modbus a pro to čidlo světla používáš?

Když vyzkoušíš samotné čtení světla bez Modbusu (třeba jen s pravidelným výpisem do sériové linky), tak to funguje?

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Arduino RS485 a I2C súčasne

Příspěvek od kiRRow » 29 říj 2022, 09:43

Tohle je překlep a měl by být opraven, aby nemátl ?

Kód: Vybrat vše

[b]   lux = lightMeter.readLightLevel();[/b]

miluk
Příspěvky: 2
Registrován: 28 říj 2022, 19:55
Reputation: 0

Re: Arduino RS485 a I2C súčasne

Příspěvek od miluk » 30 říj 2022, 20:55

Ďakujem všetkým. Už je to vyriešené. Senzor sporadicky vypadával - na serial monitore bola hláška - Device not configured. Takže po pátraní na nete som namiesto

Kód: Vybrat vše

lightMeter.begin();
použil

Kód: Vybrat vše

lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE_2, 0x5C, &Wire);
a ADD kontakt senzora pripojil na 5V kvôli adrese 0x5C. Všetko funguje fajn.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 10 hostů