Как я могу обнаружить прикрепленные моторные щиты в коде?

Я использую Motor Shield v2 и Я ищу способ автоматического определения адресов подключенных моторных щитов.

, 👍0

Обсуждение

узнать, как обнаружить устройства i2c, @jsotola

@gre_gor, sempaiscuba, jsotola, Greenonline, per1234 снова в ожидании с хорошим ответом, @Juraj

@Юрай Но я не считаю это хорошим вопросом., @gre_gor

@gre_gor, почему бы и нет? ты можешь улучшить его, @Juraj


1 ответ


1

Если вы настроите каждому устройству I2C уникальный адрес, то будет легко определить, какие из них подключены.

Этот скетч создан на основе скетча сканера I2C, который можно найти здесь: I2cScanner

// Этот скетч тестирует стандартные 7-битные адреса.
// Устройства с более высоким битовым адресом могут отображаться неправильно.
#include <Wire.h>
byte shieldOneAddress = 0x27;
byte shieldTwoAddress = 0x32;
byte error, address;

void setup(){

  Wire.begin();
  Serial.begin(9600);
  Serial.println("Scanning for shields...");

  for(address = 1; address < 127; address++){

    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if(error == 0){
      if(address == shieldOneAddress){
        Serial.println("Shield One is connected.");
      }
      if(address == shieldTwoAddress){
        Serial.println("Shield Two is connected.");
      }
    }

  }
  Serial.println("Scan complete.\n");
}

void loop(){}
,

Этот код обнаруживает устройство, подключенное по адресу 112. Это адрес [all call](https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/faq#faq-10). Он не определяет индивидуальный адрес моторного щита (в моем случае 0x60)., @mikeLundquist

Итак, ^ это верно, когда [библиотека Motor Shield](http://adafruit.github.io/Adafruit_Motor_Shield_V2_Library/html/class_adafruit___motor_shield.html#a96e0da77dcc865279404ff48e42b55b7) не импортируется, но когда библиотека Motor Shield импортирована, она работает нормально. Возможно, они что-то настраивают, не уверен., @mikeLundquist