Дисплей 2004A - подключить нестандартно

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Papipa, 24 окт 2017.

  1. Papipa

    Papipa Гик

    Всем привет!

    Есть дисплей символьный, 2004А который, с припаянным модулем I2C.

    Не могу к Arduino Uno R3 подключить его стандартно, ибо ножки А4 и А5 заняты датчиком света... Как быть, можно ли подключить дисплей (а или датчик света?!) на оставшиеся ножки - А0, А1, А2, А3?

    Картинка подключения, кто не в теме:

    [​IMG]
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    Шину I2C менять нельзя. Подключай датчик к другим пинам.
     
  3. Papipa

    Papipa Гик

    Дык... датчик тоже подключен стандартно. Библа+указанные пины.

    Единственная зацепка, смотрю - на противоположном ряду пинов есть SCL и SDA пины, самые ближние к разъему USB. Может, это и есть вариант решения? Паяться туда пока боюсь, мало ли чего, дым еще пойдет и все такое... Надо экспертное мнение от кого-нибудь ))
     
  4. CYITEP_BAC9I

    CYITEP_BAC9I Гик

    А что за датчик? если управляется по I2C то все норм будет. Адреса то у них разные. А если не I2C, то тем более, измените пины в скетче или библиотеке и подключайтесь к другим пинам на здоровье
     
  5. Papipa

    Papipa Гик

    Это датчик света, модель GY-30, аналог BH1750, не суть вобщем. Стандартное подключение - с помощью библиотек "BH1750.h" и "Wire.h" ну и пины А4, А5, GND и +5V...

    Пойду пошарю в библе, действительно...


    Upd. Но собсно там тоже I2c интерфейс, в датчике света, реализован. Тупик (
     
  6. Papipa

    Papipa Гик

    Собственно... Сделал что напрашивалось - подключил параллельно датчик света и дисплей. Всё работает! ))
     
    NikitOS нравится это.
  7. NikitOS

    NikitOS Король шутов Администратор

    Вам же @CYITEP_BAC9I сказал что адреса у них разные и работать они будут..

    Проверить адрес можно этим:
    Код (C++):
    #include <Wire.h>

    byte error, address;
    int nDevices;

    void setup() {
    Wire.begin();
    Serial.begin(9600);
    Serial.println("\nI2C Scanner");
    }

    void loop() {
    Serial.println("Scanning...");
    nDevices = 0;
    for (address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
    Serial.print("I2C device found at address 0x");
    if (address < 16)
    Serial.print("0");
    Serial.print(address, HEX);
    Serial.println(" !");
    nDevices++;
    }
    else if (error == 4) {
    Serial.print("Unknow error at address 0x");
    if (address < 16)
    Serial.print("0");
    Serial.println(address, HEX);
    }
    }
    if (nDevices == 0)
    Serial.println("No I2C devices found\n");
    else
    Serial.println("done\n");
    delay(5000);
    }
    Недавно была загвоздка с таким дисплеем как и у вас, в примере адрес 0x27 но как показал этот скетч совершенно другой....