Шина I2C

Korgen
Offline
Зарегистрирован: 28.01.2015

Здраствуйте. Есть arduino uno и датчики к нему: DSN-FIR800, HC-SR01, DHT11 и YL-38. Хочу повесить их на I2C. Есть несколько вопросов:
1) Датчик должен поддерживать I2C?
2) Где узнать по какому адрессу обращаться к датчику?
 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

1) ни в коем случае!

2) загружаете скетч i2c_scanner или как-то так называется.

vvadim
Offline
Зарегистрирован: 23.05.2012

1. должен

2. используйте i2c сканер

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

может-мОгет, но не обязан :) , каким его сделали, такой он и есть

Korgen
Offline
Зарегистрирован: 28.01.2015

Так, исходя из комментариев я могу на шину повесить любой датчик. 

Есть ещё один вопрос 

Ультразвуковой дальномер использует два пина для общения с ардуинкой. Как правильно будет тогда с ним общаться?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Korgen пишет:

Так, исходя из комментариев я могу на шину повесить любой датчик. 

Ультразвуковой дальномер использует два пина для общения с ардуинкой. Как правильно будет тогда с ним общаться?

не Так, исходя из комментариев на шину можно повесить только IIC-датчик...

Ультразвуковой дальномер такой шины не имеет :(

Korgen
Offline
Зарегистрирован: 28.01.2015

Понял,  всем спасибо.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
#include <NewPing.h>
#define triggerPin 8
#define echoPin 9
#define pinG 10
#define pinB 11
#define pinR 12
#define maxDistance 5000 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
//#define count 5
NewPing sonar( triggerPin , echoPin , maxDistance );
float distance;
//****************************************************************************************************************
void setup()
{
  pinMode( pinG , OUTPUT );
  pinMode( pinB , OUTPUT );
  pinMode( pinR ,  OUTPUT );
  Serial.begin( 115200 );
}
//****************************************************************************************************************
void loop()
{
  delay( 100 );
//  unsigned int uS = sonar.ping_median( count );
  unsigned int uS = sonar.ping();
  distance = uS / US_ROUNDTRIP_CM;
  
  if ( ( distance > 50 ) && ( distance <= 200 ) )
    {
      digitalWrite( pinG , HIGH );
    }
  else
    {
      digitalWrite( pinG , LOW );
    }
  if ( ( distance > 25 ) && ( distance <= 50 ) )
    {
      digitalWrite( pinB , HIGH );
    }
  else
    {
      digitalWrite( pinB , LOW );
    }
  if ( distance <= 25 )
    {
      digitalWrite( pinR , HIGH );
    }
  else
    {
      digitalWrite( pinR , LOW );
    }

  Serial.print( " D = " );
  Serial.print( distance , 0 ); // Convert ping time to distance in cm and print result (0 = outside set distance range)
  Serial.println( " cm" );

}
//****************************************************************************************************************

это пример....

TevatroN
Offline
Зарегистрирован: 17.11.2013

Korgen пишет:

Так, исходя из комментариев я могу на шину повесить любой датчик. 

Есть ещё один вопрос 

Ультразвуковой дальномер использует два пина для общения с ардуинкой. Как правильно будет тогда с ним общаться?

Если не ошибаюсь, не один датчик указанный вами не поддерживает i2c, не знаю YL-38, но думаю тоже мимо.

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

TevatroN пишет:

Если не ошибаюсь, не один датчик указанный вами не поддерживает i2c, не знаю YL-38, но думаю тоже мимо.

Но повесить-то датчик на шину это не помешает? Дальше i2c_scanner ничего не увидит - и все встанет на свои места.

Самый лучший критерий - это практика!

TevatroN
Offline
Зарегистрирован: 17.11.2013

Andrey_Y_Ostanovsky пишет:

Но повесить-то датчик на шину это не помешает? Дальше i2c_scanner ничего не увидит - и все встанет на свои места.

Самый лучший критерий - это практика!

Самый лучший критерий читать спеки, если подключите 3.3 вольтовое устройство не толерантное к 5в, это практика?

И я не пойму, как можно подключать к шинам SDA SCL с одной стороны, к неведомо к чему с другой? где логика?

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

TevatroN пишет:

И я не пойму, как можно подключать к шинам SDA SCL с одной стороны, к неведомо к чему с другой? где логика?

А что будет-то? :) Ну, в худшем случае - ничего не заработает... По времени - 10 минут с двумя перекурами, а человек - вторые сутки на форуме пытается ответ получить.