Відповісти

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

Назад

Огляд теми (нові повідомленні вгорі)

Бодя96
2018-11-25 20:40:16

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

Бодя96
2018-10-31 19:47:38

Всім привіт, знайшов статтю, але через недостатнє розуміння англійської не можу повністю зрозуміти суть пунктів 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

Вячеслав Азаров
2018-10-30 13:25:22

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

Бодя96
2018-10-30 13:18:44

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

Gость
2018-10-30 13:10:09

Короче, после включения управляющий МК должен зашатдаунить все модули, кроме одного и прописать адрес модуля, затем проделать это с остальными, т.е. нужно использовать провод к 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.

Gость
2018-10-30 13:04:05

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

Gость
2018-10-30 12:58:54

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

Бодя96
2018-10-29 20:29:41

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

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