1

Тема: Подключение LCD1602 по I2C к Ардуино

Данный контент доступен только зарегистрированным пользователям.


#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
void setup()
{
  lcd.init();                     
  lcd.backlight();// Включаем подсветку дисплея
  lcd.print("  rcl-radio.ru  ");
  lcd.setCursor(0, 1);
  lcd.print("    LCD 1602    ");
  delay(5000);
  lcd.noBacklight();// Выключаем подсветку дисплея
  delay(5000);
  lcd.backlight();// Включаем подсветку дисплея
}
void loop(){}

2 (2021-01-11 17:51:12 отредактировано galina)

Re: Подключение LCD1602 по I2C к Ардуино

А как подключить его используя PB8 и PB9 ?
STM32F1003

3

Re: Подключение LCD1602 по I2C к Ардуино

PB8 и PB9 ? - что за пины такие?

4 (2021-01-11 18:10:40 отредактировано galina)

Re: Подключение LCD1602 по I2C к Ардуино

Это пины stm32f103, нормально  используют PB6 и PB7 но с PB8 и PB9 есть проблемма.

5

Re: Подключение LCD1602 по I2C к Ардуино

К сожалению у меня не получилось запустить экран на этих пинах:

#include <SoftWire.h>
#include <Wire.h>
#include <LiquidCrystal_I2C_STM32.h> 
SoftWire SWire(PB8, PB9, SOFT_FAST);


 LiquidCrystal_I2C_STM32 lcd(0x27, 16, 2);



void setup(){
  SWire.begin();
  lcd.begin();                               
  lcd.backlight();// Включаем подсветку дисплея
  lcd.print("  rcl-radio.ru  ");
  lcd.setCursor(0, 1);
  lcd.print("    LCD 1602    ");
  delay(5000);
  lcd.noBacklight();// Выключаем подсветку дисплея
  delay(5000);
  lcd.backlight();// Включаем подсветку дисплея
}
void loop(){}

Сканер адреса правильно определяет адрес на этих пинах

http://forum.rcl-radio.ru/uploads/images/2021/01/175a688e0e95575113ba0cb0d74b9bd8.png

// --------------------------------------
// i2c_scanner
//
//

#include <SoftWire.h>

SoftWire SWire(PB8, PB9, SOFT_FAST);


void setup() {
  Serial.begin(9600);
  SWire.begin();
  Serial.println("\nSoftware I2C.. Scanner");
}


void loop() {
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++) {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.

    SWire.beginTransmission(address);
    error = SWire.endTransmission();
    
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address < 16) 
        Serial.print("0");
      Serial.println(address, HEX);

      nDevices++;
    }
    else if (error == 4) {
      Serial.print("Unknown error at address 0x");
      if (address < 16) 
        Serial.print("0");
      Serial.println(address, HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found");
  else
    Serial.println("done");

  delay(5000);           // wait 5 seconds for next scan
}

Но дальше продвинутся не удалось

6

Re: Подключение LCD1602 по I2C к Ардуино

Спасибо

7

Re: Подключение LCD1602 по I2C к Ардуино

Здравствуйте.
А Вы пробовали использовать I2C2 = PB10, PB11 ?

8

Re: Подключение LCD1602 по I2C к Ардуино

нет

9

Re: Подключение LCD1602 по I2C к Ардуино

Можете ли вы подключить LCD к PB10 и PB11 и сообщить мне результаты сканирования?