سلام وقت بخیر؛
یک سنسور دما و رطوبت SHTC3 با ارتباط I2C از طریق پایه های (I2C0 SDA) GP0 و (I2C0 SCL) GP1 به بُرد رسپبری پای پیکو Pico متصل کردم.
با برنامه زیر مقادیر دما و رطوبت محیط در پنجره سریال دیده میشود.
همانطور که در تصویر زیر مشخص است رسپبری پای پیکو دارای دو درگاه I2C0 و I2C1 است که در پایه های مختلف بُرد قابل دسترسی و برنامه ریزی هستند.
Atduino IDE به صورت پیش فرض GP0 و GP1 را به عنوان ورودی I2C0 می شناسد.
سوال اول: اگر بخواهم سنسور را به درگاه I2C1 وصل کنم. مثلا GP14 و GP15 چه تغییری باید در کد انجام بدهم؟
یعنی چطور به میکرو اطلاع بدم که خروجی سنسور رو از این دو پایه بخونه. راه های زیادی رو امتحان کردم که این دو پین رو به عنوان SDA و SCL سنسو معرفی کنم ولی در خروجی سنسور رو پیدا نمیکنه.
به طور کل از درگاه I2C1 نتونستم خروجی بگیرم ولی از همه درگاه های I2C0 میتونم استفاده کنم.
سوال دوم: چطور می توان دو ماژول را جداگانه به I2C0 و I2C1 وصل کنیم. یعنی موازی نباشند از دو درگاه جدا استفاده کنند.
ممنون میشم راهنمایی بفرمایید.
کد برنامه:
/****************************************************
I2C Connection For Raspberry pi pico connect
SHTC3 pin3/SDA to RP GPIO4/I2C0 SDA
&
SHTC3 pin4/SCL to RP GPIO5/I2C0 SCL
****************************************************/
Adafruit_SHTC3 shtc3 = Adafruit_SHTC3();
void setup() {
Serial.begin(115200);
while (!Serial)
delay(10);
Serial.println("SHTC3 test");
if (! shtc3.begin()) {
Serial.println("Couldn't find SHTC3");
while (1) delay(1);
}
Serial.println("Found SHTC3 sensor");
}
void loop() {
sensors_event_t humidity, temp;
shtc3.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data
Serial.print("Temp: "); Serial.print(temp.temperature); Serial.print(" *C ");
Serial.print("Hum: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");
delay(1000);
}