Шина I2C
- Войдите на сайт для отправки комментариев
Ср, 28/01/2015 - 14:36
Здраствуйте. Есть arduino uno и датчики к нему: DSN-FIR800, HC-SR01, DHT11 и YL-38. Хочу повесить их на I2C. Есть несколько вопросов:
1) Датчик должен поддерживать I2C?
2) Где узнать по какому адрессу обращаться к датчику?
1) ни в коем случае!
2) загружаете скетч i2c_scanner или как-то так называется.
1. должен
2. используйте i2c сканер
может-мОгет, но не обязан :) , каким его сделали, такой он и есть
Так, исходя из комментариев я могу на шину повесить любой датчик.
Есть ещё один вопрос
Ультразвуковой дальномер использует два пина для общения с ардуинкой. Как правильно будет тогда с ним общаться?
Так, исходя из комментариев я могу на шину повесить любой датчик.
Ультразвуковой дальномер использует два пина для общения с ардуинкой. Как правильно будет тогда с ним общаться?
не Так, исходя из комментариев на шину можно повесить только IIC-датчик...
Ультразвуковой дальномер такой шины не имеет :(
Понял, всем спасибо.
#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" ); } //****************************************************************************************************************это пример....
Так, исходя из комментариев я могу на шину повесить любой датчик.
Есть ещё один вопрос
Ультразвуковой дальномер использует два пина для общения с ардуинкой. Как правильно будет тогда с ним общаться?
Если не ошибаюсь, не один датчик указанный вами не поддерживает i2c, не знаю YL-38, но думаю тоже мимо.
Если не ошибаюсь, не один датчик указанный вами не поддерживает i2c, не знаю YL-38, но думаю тоже мимо.
Но повесить-то датчик на шину это не помешает? Дальше i2c_scanner ничего не увидит - и все встанет на свои места.
Самый лучший критерий - это практика!
Но повесить-то датчик на шину это не помешает? Дальше i2c_scanner ничего не увидит - и все встанет на свои места.
Самый лучший критерий - это практика!
Самый лучший критерий читать спеки, если подключите 3.3 вольтовое устройство не толерантное к 5в, это практика?
И я не пойму, как можно подключать к шинам SDA SCL с одной стороны, к неведомо к чему с другой? где логика?
И я не пойму, как можно подключать к шинам SDA SCL с одной стороны, к неведомо к чему с другой? где логика?
А что будет-то? :) Ну, в худшем случае - ничего не заработает... По времени - 10 минут с двумя перекурами, а человек - вторые сутки на форуме пытается ответ получить.