Столкнулся с проблемой подключения двух устройств на одной I2c линии, а именно SI7021(3.3в) и Lcd 1602

?
Оба работают от разных линий питания, но сидят на одном I2c. Дисплей на I2c может работать на 3.3в

Компилирую)))

Пересадите.

Как? У еспшки только одна линия I2c, и то программная

Есть много вариантов этого действия?

Не знаю. Слышал есть библиотеки, которые увеличивают количество линий I2c, но я их не видел

Ничего не изменилось
Scanning…
I2C device found at address 0x27 !
I2C device found at address 0x40 !
done

Причём тут это, если речь идёт о напряжении питания?

Тем, что написано в первом сообщении.
Лечится преобразователем уровней.
Таким, или самодельным на двух мосфет транзисторах 2N7002 и четырёх резисторах.
Последний также есть готовый на али.

И что, этот код компилируется? :slight_smile:

Да, а что в нëм не так?

Спасибо, попробую

Декларация функции внутри функции )))

Так питание раздельное и на дисплей идëт 5в и на датчик идëт 3.3в. Я линию в самом начале проекта развëл.

Хорошо, попробую сегодня поправить, но я до этого уже проверял, результата не дало

Вот такое накидал и смотри ка…

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); 
int temp, hum;
void setup() {
  temp = 1;
  hum = 2;
}

void loop() {
  void temperature();
  lcd.setCursor(1, 0);
  lcd.print(temp);
  lcd.setCursor(1, 1);
  lcd.print(hum);
}

Оно ворнингами сыпит, но компилируется :smiley:

Warnings

new.cpp: In function ‘void* operator new(std::size_t, std::nothrow_t)’:
new.cpp:59:60: warning: unused parameter ‘tag’ [-Wunused-parameter]
void * operator new(std::size_t size, const std::nothrow_t tag) noexcept {
^~~
new.cpp: In function ‘void* operator new (std::size_t, const std::nothrow_t&)’:
new.cpp:68:63: warning: unused parameter ‘tag’ [-Wunused-parameter]
void * operator new(std::size_t size, const std::nothrow_t& tag) noexcept {
^~~
new.cpp: In function ‘void operator delete(void*, const std::nothrow_t&)’:
new.cpp:103:55: warning: unused parameter ‘tag’ [-Wunused-parameter]
void operator delete(void* ptr, const std::nothrow_t& tag) noexcept {
^~~
new.cpp: In function ‘void operator delete (void*, const std::nothrow_t&)’:
new.cpp:106:57: warning: unused parameter ‘tag’ [-Wunused-parameter]
void operator delete(void* ptr, const std::nothrow_t& tag) noexcept {
^~~
Скетч использует 3162 байт (9%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 224 байт (10%) динамической памяти, оставляя 1824 байт для локальных переменных. Максимум: 2048 байт.

1 лайк

Какие есть ещë идеи?

Почитайте, что такое подтяжка, как она зависит от питания.
Пока что видно, что понимание того, о чем вам пишут, отсутствует.

Я знаю что такое подтягивающие резисторы, если я этого не написал, то это не значит, что я этого не понимаю. Использовал подтяжку 10Ком, 20кОм, 1Ком. Знаю, что подтяжка в 20Ком многовата, но так писали на даташитах. Особого результата этого не дало

И преобразователи уровней не помогли?