#1 2018-10-29 20:29:41

Бодя96
Учасник
Зареєстрований: 2018-10-28
Повідомлень: 24

Допоможіть з останнім дописом тут будь ласка, зміна i2c

Доброго вечора, маю 2 таких ( https://arduino.ua/prod2467-lazernii-datchik-rasstoyaniya-vl53l0x-v2 ) лазерних дальноміра, перевіряв адрес датчиків на шині i2c їхній адрес 0x29 для обох, як програмно змінити і де глянути чи можна змінити взагалі, дякую

Остання редакція Бодя96 (2018-11-02 04:09:13)

Неактивний

#2 2018-10-30 12:58:54

Gость
Гість

Re: Допоможіть з останнім дописом тут будь ласка, зміна i2c

Что, и даже джампера нет для смены адреса... На схеме модуля тактовый сигнал данных проходит через транзистор Q1A, перережьте ему питание затвора и сами подавайте туда плюс, когда надо. Вот такой вот самодельный CS будет.

#3 2018-10-30 13:04:05

Gость
Гість

Re: Допоможіть з останнім дописом тут будь ласка, зміна i2c

Оппа, в даташите написано, что адрес можно менять: Programmable I2C address.

#4 2018-10-30 13:10:09

Gость
Гість

Re: Допоможіть з останнім дописом тут будь ласка, зміна i2c

Короче, после включения управляющий МК должен зашатдаунить все модули, кроме одного и прописать адрес модуля, затем проделать это с остальными, т.е. нужно использовать провод к XSHUT каждого модуля и даже демультиплексор, если свободных ножек маловато у управляющего МК. Далее берём и читаем в Гугле документацию, например adafruit-vl53l0x-micro-lidar-distance-sensor-breakout.pdf:
To set the new address you can do it one of two ways. During initialization, instead of calling lox.begin(), call
lox.begin(0x30) to set the address to 0x30. Or you can, later, call lox.setAddress(0x30) at any time.

#5 2018-10-30 13:18:44

Бодя96
Учасник
Зареєстрований: 2018-10-28
Повідомлень: 24

Re: Допоможіть з останнім дописом тут будь ласка, зміна i2c

Спасибі за відповідь, хотілося б уточнити, в мене ще використовується драйвер L298N та сервопривід, в них немає виходу XSHUT, їм також вручну треба вписувати адресу?

Неактивний

#6 2018-10-30 13:25:22

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: Допоможіть з останнім дописом тут будь ласка, зміна i2c

Краще уважно прочитати https://www.st.com/content/ccc/resource … 279088.pdf, шоб не помилитись з висновками.

Неактивний

#7 2018-10-31 19:47:38

Бодя96
Учасник
Зареєстрований: 2018-10-28
Повідомлень: 24

Re: Допоможіть з останнім дописом тут будь ласка, зміна i2c

Всім привіт, знайшов статтю, але через недостатнє розуміння англійської не можу повністю зрозуміти суть пунктів 2.1, 2.2. І чи можна зашити програму через USB з 5 В, потім вставити 12В в роз'єм PowerJack і тоді лише дістати USB щоб програма не збилась

https://www.st.com/content/ccc/resource/technical/document/application_note/group0/0e/0a/96/1b/82/19/4f/c2/DM00280486/files/DM00280486.pdf/jcr:content/translations/en.DM00280486.pdf

і вот знайшов код щоб змінити регістр з перевіркою, але без дії з попереднього посилання і з живленням лише 5В він змінював лише адресу 2 регістру

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;
VL53L0X sensor2;

void setup()
{

  pinMode(5, OUTPUT);
  pinMode(4, OUTPUT);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);

  delay(500);
  Wire.begin();


  Serial.begin (9600);

  pinMode(4, INPUT);
  delay(150);
  Serial.println("00");
  sensor.init(true);

  Serial.println("01");
  delay(100);
  sensor.setAddress((uint8_t)22);
  Serial.println("02");

  pinMode(5, INPUT);
    delay(150);
  sensor2.init(true);
  Serial.println("03");
  delay(100);
  sensor2.setAddress((uint8_t)25);
  Serial.println("04");

  Serial.println("addresses set");



}

void loop()
{
  Serial.println ("I2C scanner. Scanning ...");
  byte count = 0;


  for (byte i = 1; i < 120; i++)
  {

    Wire.beginTransmission (i);
    if (Wire.endTransmission () == 0)
    {
      Serial.print ("Found address: ");
      Serial.print (i, DEC);
      Serial.print (" (0x");
      Serial.print (i, HEX);
      Serial.println (")");
      count++;
      delay (1);  // maybe unneeded?
    } // end of good response
  } // end of for loop
  Serial.println ("Done.");
  Serial.print ("Found ");
  Serial.print (count, DEC);
  Serial.println (" device(s).");

  delay(3000);
}

ось звідси взяв програму https://github.com/pololu/vl53l0x-arduino/issues/1

Остання редакція Бодя96 (2018-10-31 22:34:03)

Неактивний

#8 2018-11-25 20:40:16

Бодя96
Учасник
Зареєстрований: 2018-10-28
Повідомлень: 24

Re: Допоможіть з останнім дописом тут будь ласка, зміна i2c

Всім дякую, все працює

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму