LCD 2004 +I2C---нет связи

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

перепробовал разные варианты(адреса)скетч менял.Все равно две строки и ниразу не мурлыкнуло.Какое еще садомазо можно применить????

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

Aдреса с потолка брал или I2C сканером смотрел?

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

сканер пишет 0x27 но там PIC с A.поэтому пробовал все четыре.не идет .

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Канфликт адресов с PIC

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

парадокс .переключился на ВЕРБУ.Включил сканер выдал 38 адрес.запустил тестовый скетч.зерро

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Кто-нить чонить понял?

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

я да)к сторонней схеме подложил свинью(подключил энту жеку)все колбасит.появилось еще больше вопросов.Похоже мк рухнул

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DetSimen пишет:

Кто-нить чонить понял?

а что тут понимать, по шине I2C подключен PIC контроллер, подозреваю, что I2C на оном софтовый, работать будет только если адрес будет отличаться на уровне разряда

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

а можно услышать как это на русском?плиз

то есть библия ему не нравится???

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

пока проверю мк

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

мда.живой паразит

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

alex72 пишет:

мда.живой паразит

Что подключено к шине I2C???

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

слева---лсд 2004. если справа заглянуть похоже на UNO),Больше ничего

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

и больше ничего? Яркость накрутил, чтобы квадраты нарисовались, там еще джамп на модульке надо замкнуть, сбоку, он за яркость отвечает

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

был китайский.погиб сразу.хрюкнул и уснул.Взял с европы PCF8574AP .На своей сборке инфу показазывает.исправно.с ардой не хочет.какой ему еще пряник подарить??

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

alex72 пишет:

был китайский.погиб сразу.хрюкнул и уснул.Взял с европы PCF8574AP .На своей сборке инфу показазывает.исправно.с ардой не хочет.какой ему еще пряник подарить??

Правильную библиотеку )))

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

отлично.где -то на просторах вселенной какой то умный гаврик прописал истину .Смысл ее заключатся в том что если грузить похожую библиотеку то старую нужно удалить.Отсюда нарисовались сразу два вопроса:

1.как выбрать правильную? если на каждом сайте -у нас самая правильная.

2.как снести старую?в какой угол заглянуть?

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016
alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

все это хорошо.но результат тот же.видимо порт какой нить подбит.есть чистая 328.я так понимаю в нее чего то надо закинуть?и когда она его сьест то может принять на грудь.так?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Заканчивай с веществами. Не все они одинакого полезны

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

были б вещества ,а тут блин полный пипец.Завтра поеду за новой ардой(золотой).

ata3d
Offline
Зарегистрирован: 24.05.2017

Было похожее, скачал все что нашел и перебирал по очереди. Заработало с LiquidCrystal_I2C_V112.  Копирушь в папку libraries, не подошла удаляешь и все по новой.

sadman41
Offline
Зарегистрирован: 19.10.2016

Накидал небольшой тестер для PCF. Ставит ноги в HIGH/LOW согласно заданных паттернов.

Если посадить ногу из useFirstDevicePin на GND - начнет слать паттерны в устройство с первым найденным адресом.

#include <Wire.h>

// Short this pin to GND if want to test first found device
const uint8_t useFirstDevicePin = 2;

//
const uint8_t ledPin = 13;

// Pattens change delay
const uint16_t pause = 2000; // ms

// Chip I2C address
uint8_t pcfI2CAddress = 0x27;

// Patterns to switch PCF8574 pins to HIGH(1) / LOW(0) state.
// Every digit in row is pin: P7 ... P0
const uint8_t pattern[] = {
  B00000000,
  B11111111,
  B00000001,
  B00000010,
  B00000100,
  B00001000,
  B00010000,
  B00100000,
  B01000000,
  B10000000,
};

// I2C bus scan function.
// Returns number of found devices
// Set _pcfI2CAddress to first found address and exit if _exitOnFirstDevice option is true,
uint8_t scanI2CBus(uint8_t _exitOnFirstDevice, uint8_t* _pcfI2CAddress) {

  uint8_t error, address, nDevices;

  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++;
      if (_exitOnFirstDevice) {
        *_pcfI2CAddress = address;
        break;
      }
    }
    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\n");
  return nDevices;
}

// Send byte to PCF8574 via I2C
uint8_t writeToPCF(uint8_t _data) {
  Wire.beginTransmission(pcfI2CAddress);
  Wire.write((uint8_t) _data);
  return Wire.endTransmission();
}

void setup ()
{
  uint8_t rc;
  Serial.begin(9600);
  Wire.begin ();
  pinMode(useFirstDevicePin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
  Serial.println("------------- I2C devices ----------------");
  rc = scanI2CBus((LOW == digitalRead(useFirstDevicePin)), &pcfI2CAddress);
  Serial.println("------------------------------------------");
  if (0 >= rc) {
    while (true) {
      digitalWrite(ledPin, millis() % 1000 < 500);
    }
  }
  Serial.print("PCF8574 test (0x");
  Serial.print(pcfI2CAddress, HEX);
  Serial.println(")");
  delay(pause);
}

void loop ()
{
  for (uint8_t i = 0; i < sizeof(pattern); i++)
  {
    digitalWrite(ledPin, LOW);
    Serial.print("Send: B");
    Serial.println(pattern[i], BIN);
    writeToPCF(pattern[i]);
    delay (pause);
    digitalWrite(ledPin, HIGH);
  }
}

 

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

LiquidCrystal_I2C_V112.---стояла.не пошла.честно снес.пошел за лопатой.попробую нарыть другую версию

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

 ногу из useFirstDevicePin на GND-лапа мк?

sadman41
Offline
Зарегистрирован: 19.10.2016

alex72 пишет:

 ногу из useFirstDevicePin на GND-лапа мк?

Да. Ардуино пин на GND.

На выходах PCF должно начать появляться/пропадать VCC. Можно светодиоды подсадить на них.

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

TX??

sadman41
Offline
Зарегистрирован: 19.10.2016

Не понимаю, что такое ТХ. У меня на пинах появляется VCC - 4,95V. Можно хоть мультиметром, хоть осциллографом, хоть светодиодом проверить.

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

SCL-импульсы присутствуют

SDA-    +5V

Все в норме значит все таки с библиями косяк.Пьяные монахи их писали

sadman41
Offline
Зарегистрирован: 19.10.2016

А на P0... P7 у самого PCF что-то появляется?

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

 PCF-на плате от стороннего оборудование глядело работает без вопросов.к SCL-подбрасывал свету.вольтаж проседает. значит порт?

sadman41
Offline
Зарегистрирован: 19.10.2016

Ничего не понимаю. Какой свет к SCL...

Надо:

1) Взять переходник I2C, подключить к ардуине на A4/A5 и VCC/GND.
2) Замкнуть D2 на GND.
3) Запустить скетч.
4) Мерять напряжение на выводах P0 ... P7 (тех, которыми он втыкается в дисплей) переходника I2C. Или воткнуть его в макетку, а к выводам светодиодов накидать. 

Если на каждом выводе периодически появляется и пропадает VCC (или загорается светодиод) - этот вывод функционирует. Если функционируют все восемь - переходник работоспособный и должен работать с дисплеем, как положено.

 

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

2) Замкнуть D2 на GND.Гришань давай на одном каком нибудь языке общатся.я не пойму никак например :где этот D2?спасибо) с новой платой изменений нет

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

на жк D2 что ли??

проверил.D5 и Е--по пять вольт.на других все глухо.а почему экран с этим чипом на PIC контроллере работает?

sadman41
Offline
Зарегистрирован: 19.10.2016

Так что уж там осталось непонятного-то... 

bwn
Offline
Зарегистрирован: 25.08.2014

Хе, хе, а распиновка на выходе у них одинаковая с китайским (под который все библиотеки начертаны). А пику почему бы и не работать? У него своя программа и свои лапки дрыгает. ИМХО.

sadman41
Offline
Зарегистрирован: 19.10.2016

Согласен с предыдущим оратором. 

У меня такой и проблем никогда не было ни с МЭЛТ-овским дисплеем, ни с алишным 20x4: https://ru.aliexpress.com/store/product/LCD-16x2-16x4-20x2-20x4-adaptor-to-I2C/1950989_32635555276.html

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

сделал все как написал. на всех восьми порядка от 4.2-4.5В.Адрес 0.20   0.27.Протестировал не идет.Завтра попробую новый чип развести на макетке и прилепить к экрану.Прикупил в DIP корпусе.)

sadman41
Offline
Зарегистрирован: 19.10.2016

Тут вот схема, насколько я понимаю, совместимая с Ардуиновской библиотекой LiquidCrystal_I2C:

http://www.instructables.com/id/LCD-display-I2C-adapter-for-Arduino-with-PCF8574A/

На всякий случай.

И вот тут еще, внизу страницы: https://alselectro.wordpress.com/2016/05/12/serial-lcd-i2c-module-pcf8574/

alex72
alex72 аватар
Offline
Зарегистрирован: 08.03.2018

а вот за это спасибо.только подумал найти распиновку.меньше времени занимает чем прозвонкой конопатиться