Ошибка в скетче

Pyfez
Offline
Зарегистрирован: 30.10.2020
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);


volatile int counter=0;
uint32_t timer=0;
void incCounter(){
  counter++;
}
void startMeas(){
  counter=0;
  attachInterrupt(0, incCounter, FALLING );

  timer=millis();
}
void setup() {
  
  pinMode(2,INPUT_PULLUP);
  lcd.begin(16, 2);
  lcd.backlight();
  Serial.begin(9600);
  lcd.setCursor(0,0);
  lcd.println("Start");
  startMeas();
}
void loop() {
if(millis()-timer>=10000){
  detachInterrupt(0);
  lcd.print("Frequency:");
  lcd.print(counter/10);
  lcd.println(" Hz");
  startMeas();
}
}

 

Pyfez
Offline
Зарегистрирован: 30.10.2020

Не работает :(

b707
Offline
Зарегистрирован: 26.05.2017

Pyfez пишет:

Не работает :(

в чем выражается "не работает"?

Pyfez
Offline
Зарегистрирован: 30.10.2020

b707 пишет:

Pyfez пишет:

Не работает :(

в чем выражается "не работает"?

Текст на дисплей не выводиться 

b707
Offline
Зарегистрирован: 26.05.2017

Даже Старт не выводится?

Pyfez
Offline
Зарегистрирован: 30.10.2020

b707 пишет:
Даже Старт не выводится?
Даже старт :(

Green
Offline
Зарегистрирован: 01.10.2015

А подсветка хоть работает?)
В LiquidCrystal_I2C.cpp нужно найти clear() (129-я строка) и заменить delay(2000) на 2500. Об исполнении доложить.)

Pyfez
Offline
Зарегистрирован: 30.10.2020

Green пишет:

А подсветка хоть работает?)
В LiquidCrystal_I2C.cpp нужно найти clear() (129-я строка) и заменить delay(2000) на 2500. Об исполнении доложить.)

Да подсветка работает, https://imgur.com/a/Hwc8xdQ вот эта строчка верно ?

Pyfez
Offline
Зарегистрирован: 30.10.2020

Green пишет:

А подсветка хоть работает?)
В LiquidCrystal_I2C.cpp нужно найти clear() (129-я строка) и заменить delay(2000) на 2500. Об исполнении доложить.)

Заменил но результата нету :(

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А что I2C сканер то говорит? Точно адрес у дисплея такой? Не?

Green
Offline
Зарегистрирован: 01.10.2015

Значит, протирать контакты спиртом до получения результата.

Pyfez
Offline
Зарегистрирован: 30.10.2020

BOOM пишет:

А что I2C сканер то говорит? Точно адрес у дисплея такой? Не?

Да точно такой, сверил в магазине где покупал

Pyfez
Offline
Зарегистрирован: 30.10.2020

Green пишет:

Значит, протирать контакты спиртом до получения результата.

С кодом все верно ? Если возможность что я что то не так подключил ?

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Где, вообще, схема подключения? Вторая страница пошла, а схемы и не видно. То без I2C дисплей был, сейчас уже I2C...

b707
Offline
Зарегистрирован: 26.05.2017

Pyfez пишет:

Да точно такой, сверил в магазине где покупал

в каком магазине?! - на реальном дисплее ардуиной проверять надо, есть скетч специальный, I2C-сканер называется. в примерах к Ардуино лежит

Заодно и будет ясно, правильно подключил или нет

Green
Offline
Зарегистрирован: 01.10.2015

Pyfez пишет:

С кодом все верно ? Если возможность что я что то не так подключил ?


А что там можно НЕ ТАК подключить?

Pyfez
Offline
Зарегистрирован: 30.10.2020

b707 пишет:

Pyfez пишет:

Да точно такой, сверил в магазине где покупал

в каком магазине?! - на реальном дисплее ардуиной проверять надо, есть скетч специальный, I2C-сканер называется. в примерах к Ардуино лежит

Заодно и будет ясно, правильно подключил или нет

Вот ссылка https://beegreen.com.ua/modul-perehidnik-lcd1602-iic-i2c-10336

b707
Offline
Зарегистрирован: 26.05.2017

зачем мне ссылка?? - мне ничего проверять не надо. Если вас устраивает.,что дисплей не работает - сидите и смотрите на него

А если хотите результат - нечего ленится, запускайте сканер. Через пять минут будем знать ЗАВЕДОМО, правильно ли подключен дисплей и какой у него НА САМОМ ДЕЛЕ адрес

b707
Offline
Зарегистрирован: 26.05.2017

Green пишет:

А что там можно НЕ ТАК подключить?

ты новичков не знаешь? - да все что угодно.

Green
Offline
Зарегистрирован: 01.10.2015

Pyfez пишет:

Заменил но результата нету :(


Замените на 4000, для очистки совести. Больше никаких мыслей.

Pyfez
Offline
Зарегистрирован: 30.10.2020

BOOM пишет:

Где, вообще, схема подключения? Вторая страница пошла, а схемы и не видно. То без I2C дисплей был, сейчас уже I2C...

Вот схема подключения датчика к ардуино https://imgur.com/a/6UWZCTa, а вот дисплея к ардуино https://imgur.com/a/4FGmxkF

b707
Offline
Зарегистрирован: 26.05.2017

Pyfez пишет:

Вот схема подключения датчика к ардуино https://imgur.com/a/6UWZCTa, а вот дисплея к ардуино https://imgur.com/a/4FGmxkF

вы когда научитесь правильно картинки вставлять?

Green
Offline
Зарегистрирован: 01.10.2015

b707 пишет:

ты новичков не знаешь? - да все что угодно.


А вот никогда бы не подумал... Однако, недавно попался lcd, для которого штатной 2000 было мало! А 2500 нормально. Ну, полный писец!)

Pyfez
Offline
Зарегистрирован: 30.10.2020

b707 пишет:

Pyfez пишет:

Да точно такой, сверил в магазине где покупал

в каком магазине?! - на реальном дисплее ардуиной проверять надо, есть скетч специальный, I2C-сканер называется. в примерах к Ардуино лежит

Заодно и будет ясно, правильно подключил или нет

0x27 выяснил

 

b707
Offline
Зарегистрирован: 26.05.2017

Pyfez пишет:

0x27 выяснил

 

выложите сообщение сканера. только текстом, а не картинкой

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Green пишет:

А что там можно НЕ ТАК подключить?

Непросто, но специалисты имеются.

Pyfez
Offline
Зарегистрирован: 30.10.2020

b707 пишет:

Pyfez пишет:

0x27 выяснил

 

выложите сообщение сканера. только текстом, а не картинкой

nI2C Scanner

Scanning...
I2C device found at address 0x27 !
donen
 
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Уберите всё! attachInterrupt ... - ВСЁ! Оставьте только вывод слова Start.

Отпишитесь, что получилось и не забудьте выложить получившийся скетч.

И, да, там крутилка есть - контрастность. Крутили? Крутите при влечённом питании, пока не появятся прямоугольнички. Может у Вас контрастность по нулям. Жалобы на этот дисплей - через одну с этим связаны.

Кстати, он что, прямо вот так и написал?

Pyfez пишет:

donen

Pyfez
Offline
Зарегистрирован: 30.10.2020
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);


volatile int counter=0;
uint32_t timer=0;
void incCounter(){
  counter++;
}
void startMeas(){
  counter=0;
  attachInterrupt(0, incCounter, FALLING );

  timer=millis();
}
void setup() {
  
  pinMode(2,INPUT_PULLUP);
  lcd.begin(16, 2);
  lcd.backlight();
  Serial.begin(9600);
  lcd.setCursor(0,0);
  lcd.println("Start");
  startMeas();
}
void loop() {
if(millis()-timer>=10000){
  detachInterrupt(0);
  lcd.print("Frequency:");
  lcd.print(counter/10);
  lcd.println(" Hz");
  startMeas();
}
}

ЕвгенийП пишет:

Уберите всё! attachInterrupt ... - ВСЁ! Оставьте только вывод слова Start.

Отпишитесь, что получилось и не забудьте выложить получившийся скетч.

И, да, там крутилка есть - контрастность. Крутили? Крутите при влечённом питании, пока не появятся прямоугольнички. Может у Вас контрастность по нулям. Жалобы на этот дисплей - через одну с этим связаны.

Кстати, он что, прямо вот так и написал?

Pyfez пишет:

donen

Не совсем понимаю что стиреть что оставить, и да крутилку крутил поставил что бы было еле заметно квадратики

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Pyfez пишет:

Не совсем понимаю что стиреть что оставить, и да крутилку крутил поставил что бы было еле заметно квадратики

Чего Вы не понимаете? Я же написал - "Уберите всё! attachInterrupt ... - ВСЁ! Оставьте только вывод слова Start."

Чего тут не понимать?

#include &lt;LiquidCrystal_I2C.h&gt;
#include &lt;Wire.h&gt;

LiquidCrystal_I2C lcd(0x27, 16, 2);


// volatile int counter=0; - НАХ!
// uint32_t timer=0; - НАХ!
// void incCounter(){ - НАХ!
//   counter++; - НАХ!
// } - НАХ!
// void startMeas(){ - НАХ!
//   counter=0; - НАХ!
//   attachInterrupt(0, incCounter, FALLING ); - НАХ!
//  - НАХ!
//   timer=millis(); - НАХ!
// } - НАХ!
void setup() {
  
//   pinMode(2,INPUT_PULLUP); - НАХ!
  lcd.begin(16, 2);
  lcd.backlight();
//   Serial.begin(9600); - НАХ!
  lcd.setCursor(0,0);
  lcd.println(&quot;Start&quot;);
//   startMeas(); - НАХ!
}
void loop() {
// if(millis()-timer&gt;=10000){ - НАХ!
//   detachInterrupt(0); - НАХ!
//   lcd.print(&quot;Frequency:&quot;); - НАХ!
//   lcd.print(counter/10); - НАХ!
//   lcd.println(&quot; Hz&quot;); - НАХ! 
//   startMeas(); - НАХ!
// } - НАХ!
}

 

Feofan
Offline
Зарегистрирован: 28.05.2017

В 25-й quot; влезло

Pyfez
Offline
Зарегистрирован: 30.10.2020

ЕвгенийП пишет:

Pyfez пишет:

Не совсем понимаю что стиреть что оставить, и да крутилку крутил поставил что бы было еле заметно квадратики

Чего Вы не понимаете? Я же написал - "Уберите всё! attachInterrupt ... - ВСЁ! Оставьте только вывод слова Start."

Чего тут не понимать?

#include &lt;LiquidCrystal_I2C.h&gt;
#include &lt;Wire.h&gt;

LiquidCrystal_I2C lcd(0x27, 16, 2);


// volatile int counter=0; - НАХ!
// uint32_t timer=0; - НАХ!
// void incCounter(){ - НАХ!
//   counter++; - НАХ!
// } - НАХ!
// void startMeas(){ - НАХ!
//   counter=0; - НАХ!
//   attachInterrupt(0, incCounter, FALLING ); - НАХ!
//  - НАХ!
//   timer=millis(); - НАХ!
// } - НАХ!
void setup() {
  
//   pinMode(2,INPUT_PULLUP); - НАХ!
  lcd.begin(16, 2);
  lcd.backlight();
//   Serial.begin(9600); - НАХ!
  lcd.setCursor(0,0);
  lcd.println(&quot;Start&quot;);
//   startMeas(); - НАХ!
}
void loop() {
// if(millis()-timer&gt;=10000){ - НАХ!
//   detachInterrupt(0); - НАХ!
//   lcd.print(&quot;Frequency:&quot;); - НАХ!
//   lcd.print(counter/10); - НАХ!
//   lcd.println(&quot; Hz&quot;); - НАХ! 
//   startMeas(); - НАХ!
// } - НАХ!
}

 

Ничего так же не происходит 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А скетч Ваш где? Всегда выкладывайте скетч! Покажите ВАШ, А НЕ МОЙ скетч, хочу ещё раз взглянуть.

И, пожалуйста, чётко и точно ответьте на вопросы: не нужны фантазии и заявления, то там всё правильно и стандартно, ладно?

1. Сканер работает на том же самом соединении (т.е. Вы не пересобирали макетку - всё то же, просто одно работает, а другое - нет). Так?
2. А этот маленький скетч, который Вы сейчас выложите - нет. Правильно?

Если всё так (я правда, на скетч ещё гляну), то вариантов два:

А) кривая библиотека
Б) плохое соединение I2C переходника с дисплеем 0 плохие контакты или вовсе неправильно соединено. Попробуйте проверить все контакты и выложить фото соединения, на котором видны были бы контакты.

По мне, так скорее (Б), чем (А).

Pyfez
Offline
Зарегистрирован: 30.10.2020

ЕвгенийП пишет:

А скетч Ваш где? Всегда выкладывайте скетч! Покажите ВАШ, А НЕ МОЙ скетч, хочу ещё раз взглянуть.

И, пожалуйста, чётко и точно ответьте на вопросы: не нужны фантазии и заявления, то там всё правильно и стандартно, ладно?

1. Сканер работает на том же самом соединении (т.е. Вы не пересобирали макетку - всё то же, просто одно работает, а другое - нет). Так?
2. А этот маленький скетч, который Вы сейчас выложите - нет. Правильно?

Если всё так (я правда, на скетч ещё гляну), то вариантов два:

А) кривая библиотека
Б) плохое соединение I2C переходника с дисплеем 0 плохие контакты или вовсе неправильно соединено. Попробуйте проверить все контакты и выложить фото соединения, на котором видны были бы контакты.

По мне, так скорее (Б), чем (А).

Ответ на ваш вопрос 1 да я ничего не отключал так как есть даже с датчиком оно определило 0х27

Нет скетч который я только что выложил не работает просто на дисплее черные кубити и все

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.println("Start");
  
}
void loop() {

}

 

Pyfez
Offline
Зарегистрирован: 30.10.2020

ЕвгенийП пишет:

А скетч Ваш где? Всегда выкладывайте скетч! Покажите ВАШ, А НЕ МОЙ скетч, хочу ещё раз взглянуть.

И, пожалуйста, чётко и точно ответьте на вопросы: не нужны фантазии и заявления, то там всё правильно и стандартно, ладно?

1. Сканер работает на том же самом соединении (т.е. Вы не пересобирали макетку - всё то же, просто одно работает, а другое - нет). Так?
2. А этот маленький скетч, который Вы сейчас выложите - нет. Правильно?

Если всё так (я правда, на скетч ещё гляну), то вариантов два:

А) кривая библиотека
Б) плохое соединение I2C переходника с дисплеем 0 плохие контакты или вовсе неправильно соединено. Попробуйте проверить все контакты и выложить фото соединения, на котором видны были бы контакты.

По мне, так скорее (Б), чем (А).

I2C мне спаяли как я просил  вот библиотека которая у меня стоит 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А фото не будет?

Pyfez
Offline
Зарегистрирован: 30.10.2020

ЕвгенийП пишет:

А фото не будет?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Pyfez пишет:

#include <LiquidCrystal_I2C.h>
#include <Wire.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.println("Start");
  
}
void loop() {

}

Только что запустил ничего не меняя (тупо скопипастил). Всё работает, слово Start появляется.

Вот моя библиотека:

LiquidCrystal_I2C.cpp

// Based on the work by DFRobot

#include "LiquidCrystal_I2C.h"
#include <inttypes.h>
#if defined(ARDUINO) && ARDUINO >= 100

#include "Arduino.h"

#define printIIC(args)	Wire.write(args)
inline size_t LiquidCrystal_I2C::write(uint8_t value) {
	send(value, Rs);
	return 1;
}

#else
#include "WProgram.h"

#define printIIC(args)	Wire.send(args)
inline void LiquidCrystal_I2C::write(uint8_t value) {
	send(value, Rs);
}

#endif
#include "Wire.h"



// When the display powers up, it is configured as follows:
//
// 1. Display clear
// 2. Function set: 
//    DL = 1; 8-bit interface data 
//    N = 0; 1-line display 
//    F = 0; 5x8 dot character font 
// 3. Display on/off control: 
//    D = 0; Display off 
//    C = 0; Cursor off 
//    B = 0; Blinking off 
// 4. Entry mode set: 
//    I/D = 1; Increment by 1
//    S = 0; No shift 
//
// Note, however, that resetting the Arduino doesn't reset the LCD, so we
// can't assume that its in that state when a sketch starts (and the
// LiquidCrystal constructor is called).

LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows)
{
  _Addr = lcd_Addr;
  _cols = lcd_cols;
  _rows = lcd_rows;
  _backlightval = LCD_NOBACKLIGHT;
}

void LiquidCrystal_I2C::init(){
	init_priv();
}

void LiquidCrystal_I2C::init_priv()
{
	Wire.begin();
	_displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
	begin(_cols, _rows);  
}

void LiquidCrystal_I2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
	if (lines > 1) {
		_displayfunction |= LCD_2LINE;
	}
	_numlines = lines;

	// for some 1 line displays you can select a 10 pixel high font
	if ((dotsize != 0) && (lines == 1)) {
		_displayfunction |= LCD_5x10DOTS;
	}

	// SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
	// according to datasheet, we need at least 40ms after power rises above 2.7V
	// before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50
	delay(50); 
  
	// Now we pull both RS and R/W low to begin commands
	expanderWrite(_backlightval);	// reset expanderand turn backlight off (Bit 8 =1)
	delay(1000);

  	//put the LCD into 4 bit mode
	// this is according to the hitachi HD44780 datasheet
	// figure 24, pg 46
	
	  // we start in 8bit mode, try to set 4 bit mode
   write4bits(0x03 << 4);
   delayMicroseconds(4500); // wait min 4.1ms
   
   // second try
   write4bits(0x03 << 4);
   delayMicroseconds(4500); // wait min 4.1ms
   
   // third go!
   write4bits(0x03 << 4); 
   delayMicroseconds(150);
   
   // finally, set to 4-bit interface
   write4bits(0x02 << 4); 


	// set # lines, font size, etc.
	command(LCD_FUNCTIONSET | _displayfunction);  
	
	// turn the display on with no cursor or blinking default
	_displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;
	display();
	
	// clear it off
	clear();
	
	// Initialize to default text direction (for roman languages)
	_displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;
	
	// set the entry mode
	command(LCD_ENTRYMODESET | _displaymode);
	
	home();
  
}

/********** high level commands, for the user! */
void LiquidCrystal_I2C::clear(){
	command(LCD_CLEARDISPLAY);// clear display, set cursor position to zero
	delayMicroseconds(2000);  // this command takes a long time!
}

void LiquidCrystal_I2C::home(){
	command(LCD_RETURNHOME);  // set cursor position to zero
	delayMicroseconds(2000);  // this command takes a long time!
}

void LiquidCrystal_I2C::setCursor(uint8_t col, uint8_t row){
	int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
	if ( row > _numlines ) {
		row = _numlines-1;    // we count rows starting w/0
	}
	command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
}

// Turn the display on/off (quickly)
void LiquidCrystal_I2C::noDisplay() {
	_displaycontrol &= ~LCD_DISPLAYON;
	command(LCD_DISPLAYCONTROL | _displaycontrol);
}
void LiquidCrystal_I2C::display() {
	_displaycontrol |= LCD_DISPLAYON;
	command(LCD_DISPLAYCONTROL | _displaycontrol);
}

// Turns the underline cursor on/off
void LiquidCrystal_I2C::noCursor() {
	_displaycontrol &= ~LCD_CURSORON;
	command(LCD_DISPLAYCONTROL | _displaycontrol);
}
void LiquidCrystal_I2C::cursor() {
	_displaycontrol |= LCD_CURSORON;
	command(LCD_DISPLAYCONTROL | _displaycontrol);
}

// Turn on and off the blinking cursor
void LiquidCrystal_I2C::noBlink() {
	_displaycontrol &= ~LCD_BLINKON;
	command(LCD_DISPLAYCONTROL | _displaycontrol);
}
void LiquidCrystal_I2C::blink() {
	_displaycontrol |= LCD_BLINKON;
	command(LCD_DISPLAYCONTROL | _displaycontrol);
}

// These commands scroll the display without changing the RAM
void LiquidCrystal_I2C::scrollDisplayLeft(void) {
	command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);
}
void LiquidCrystal_I2C::scrollDisplayRight(void) {
	command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);
}

// This is for text that flows Left to Right
void LiquidCrystal_I2C::leftToRight(void) {
	_displaymode |= LCD_ENTRYLEFT;
	command(LCD_ENTRYMODESET | _displaymode);
}

// This is for text that flows Right to Left
void LiquidCrystal_I2C::rightToLeft(void) {
	_displaymode &= ~LCD_ENTRYLEFT;
	command(LCD_ENTRYMODESET | _displaymode);
}

// This will 'right justify' text from the cursor
void LiquidCrystal_I2C::autoscroll(void) {
	_displaymode |= LCD_ENTRYSHIFTINCREMENT;
	command(LCD_ENTRYMODESET | _displaymode);
}

// This will 'left justify' text from the cursor
void LiquidCrystal_I2C::noAutoscroll(void) {
	_displaymode &= ~LCD_ENTRYSHIFTINCREMENT;
	command(LCD_ENTRYMODESET | _displaymode);
}

// Allows us to fill the first 8 CGRAM locations
// with custom characters
void LiquidCrystal_I2C::createChar(uint8_t location, uint8_t charmap[]) {
	location &= 0x7; // we only have 8 locations 0-7
	command(LCD_SETCGRAMADDR | (location << 3));
	for (int i=0; i<8; i++) {
		write(charmap[i]);
	}
}

// Turn the (optional) backlight off/on
void LiquidCrystal_I2C::noBacklight(void) {
	_backlightval=LCD_NOBACKLIGHT;
	expanderWrite(0);
}

void LiquidCrystal_I2C::backlight(void) {
	_backlightval=LCD_BACKLIGHT;
	expanderWrite(0);
}



/*********** mid level commands, for sending data/cmds */

inline void LiquidCrystal_I2C::command(uint8_t value) {
	send(value, 0);
}


/************ low level data pushing commands **********/

// write either command or data
void LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) {
	uint8_t highnib=value&0xf0;
	uint8_t lownib=(value<<4)&0xf0;
       write4bits((highnib)|mode);
	write4bits((lownib)|mode); 
}

void LiquidCrystal_I2C::write4bits(uint8_t value) {
	expanderWrite(value);
	pulseEnable(value);
}

void LiquidCrystal_I2C::expanderWrite(uint8_t _data){                                        
	Wire.beginTransmission(_Addr);
	printIIC((int)(_data) | _backlightval);
	Wire.endTransmission();   
}

void LiquidCrystal_I2C::pulseEnable(uint8_t _data){
	expanderWrite(_data | En);	// En high
	delayMicroseconds(1);		// enable pulse must be >450ns
	
	expanderWrite(_data & ~En);	// En low
	delayMicroseconds(50);		// commands need > 37us to settle
} 


// Alias functions

void LiquidCrystal_I2C::cursor_on(){
	cursor();
}

void LiquidCrystal_I2C::cursor_off(){
	noCursor();
}

void LiquidCrystal_I2C::blink_on(){
	blink();
}

void LiquidCrystal_I2C::blink_off(){
	noBlink();
}

void LiquidCrystal_I2C::load_custom_character(uint8_t char_num, uint8_t *rows){
		createChar(char_num, rows);
}

void LiquidCrystal_I2C::setBacklight(uint8_t new_val){
	if(new_val){
		backlight();		// turn backlight on
	}else{
		noBacklight();		// turn backlight off
	}
}

void LiquidCrystal_I2C::printstr(const char c[]){
	//This function is not identical to the function used for "real" I2C displays
	//it's here so the user sketch doesn't have to be changed 
	print(c);
}


// unsupported API functions
void LiquidCrystal_I2C::off(){}
void LiquidCrystal_I2C::on(){}
void LiquidCrystal_I2C::setDelay (int cmdDelay,int charDelay) {}
uint8_t LiquidCrystal_I2C::status(){return 0;}
uint8_t LiquidCrystal_I2C::keypad (){return 0;}
uint8_t LiquidCrystal_I2C::init_bargraph(uint8_t graphtype){return 0;}
void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_col_end){}
void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_row_end){}
void LiquidCrystal_I2C::setContrast(uint8_t new_val){}

	

LiquidCrystal_I2C.h

//YWROBOT
#ifndef LiquidCrystal_I2C_h
#define LiquidCrystal_I2C_h

#include <inttypes.h>
#include "Print.h" 
#include <Wire.h>

// commands
#define LCD_CLEARDISPLAY 0x01
#define LCD_RETURNHOME 0x02
#define LCD_ENTRYMODESET 0x04
#define LCD_DISPLAYCONTROL 0x08
#define LCD_CURSORSHIFT 0x10
#define LCD_FUNCTIONSET 0x20
#define LCD_SETCGRAMADDR 0x40
#define LCD_SETDDRAMADDR 0x80

// flags for display entry mode
#define LCD_ENTRYRIGHT 0x00
#define LCD_ENTRYLEFT 0x02
#define LCD_ENTRYSHIFTINCREMENT 0x01
#define LCD_ENTRYSHIFTDECREMENT 0x00

// flags for display on/off control
#define LCD_DISPLAYON 0x04
#define LCD_DISPLAYOFF 0x00
#define LCD_CURSORON 0x02
#define LCD_CURSOROFF 0x00
#define LCD_BLINKON 0x01
#define LCD_BLINKOFF 0x00

// flags for display/cursor shift
#define LCD_DISPLAYMOVE 0x08
#define LCD_CURSORMOVE 0x00
#define LCD_MOVERIGHT 0x04
#define LCD_MOVELEFT 0x00

// flags for function set
#define LCD_8BITMODE 0x10
#define LCD_4BITMODE 0x00
#define LCD_2LINE 0x08
#define LCD_1LINE 0x00
#define LCD_5x10DOTS 0x04
#define LCD_5x8DOTS 0x00

// flags for backlight control
#define LCD_BACKLIGHT 0x08
#define LCD_NOBACKLIGHT 0x00

#define En B00000100  // Enable bit
#define Rw B00000010  // Read/Write bit
#define Rs B00000001  // Register select bit

class LiquidCrystal_I2C : public Print {
public:
  LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);
  void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS );
  void clear();
  void home();
  void noDisplay();
  void display();
  void noBlink();
  void blink();
  void noCursor();
  void cursor();
  void scrollDisplayLeft();
  void scrollDisplayRight();
  void printLeft();
  void printRight();
  void leftToRight();
  void rightToLeft();
  void shiftIncrement();
  void shiftDecrement();
  void noBacklight();
  void backlight();
  void autoscroll();
  void noAutoscroll(); 
  void createChar(uint8_t, uint8_t[]);
  void setCursor(uint8_t, uint8_t); 
#if defined(ARDUINO) && ARDUINO >= 100
  virtual size_t write(uint8_t);
#else
  virtual void write(uint8_t);
#endif
  void command(uint8_t);
  void init();

////compatibility API function aliases
void blink_on();						// alias for blink()
void blink_off();       					// alias for noBlink()
void cursor_on();      	 					// alias for cursor()
void cursor_off();      					// alias for noCursor()
void setBacklight(uint8_t new_val);				// alias for backlight() and nobacklight()
void load_custom_character(uint8_t char_num, uint8_t *rows);	// alias for createChar()
void printstr(const char[]);

////Unsupported API functions (not implemented in this library)
uint8_t status();
void setContrast(uint8_t new_val);
uint8_t keypad();
void setDelay(int,int);
void on();
void off();
uint8_t init_bargraph(uint8_t graphtype);
void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_col_end);
void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len,  uint8_t pixel_col_end);
	 

private:
  void init_priv();
  void send(uint8_t, uint8_t);
  void write4bits(uint8_t);
  void expanderWrite(uint8_t);
  void pulseEnable(uint8_t);
  uint8_t _Addr;
  uint8_t _displayfunction;
  uint8_t _displaycontrol;
  uint8_t _displaymode;
  uint8_t _numlines;
  uint8_t _cols;
  uint8_t _rows;
  uint8_t _backlightval;
};

#endif

Попробуйте с нею.

Если не заработает, то вариант один - соединение. Причём не I2C переходника с Ардуино (там всё нормально, иначе сканер бы не работал), а переходника с дисплеем. Ну, или битый дисплей, но это вряд-ли - они живучие.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это что за фото? На нём ничего не видно, ни со стороны дисплея, ни со стороны переходника.

Pyfez
Offline
Зарегистрирован: 30.10.2020

ЕвгенийП пишет:

Это что за фото? На нём ничего не видно, ни со стороны дисплея, ни со стороны переходника.

Не работает с вашой библиотекой Фото подключения ( не могу "Нормально" загрузит выбивает ошибку )

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, при такой резкости (особенно со стороны переходника) качество пайки не разглядишь, но по любому, Вы уже поняли, что дело не в прошивке, т.к. у меня работает именно этот скетч с именно этой библиотекой. Так что ищите либо сопли в соединении, либо неисправность переходника и/или дисплея (типа там непропаи/коротыши). Осциллограф-то есть? Если нет, то только внимательный (с лупой) осмотр и перепайка всех хоть немного подозрительных мест. Если же есть, то переделываете скетч, чтобы он выводил 8-ки во все 32 знакоместа, берёте даташит на дисплей, смотрите, что там должно быть на ногах и смотрите есть ли оно. Как на какой-то ноге нет - ищем обрыв в её цепи. Если на двух соседних ногах одно и тоже - ищем коротыш. Как-то так.

Pyfez
Offline
Зарегистрирован: 30.10.2020

ЕвгенийП пишет:

Ну, при такой резкости (особенно со стороны переходника) качество пайки не разглядишь, но по любому, Вы уже поняли, что дело не в прошивке, т.к. у меня работает именно этот скетч с именно этой библиотекой. Так что ищите либо сопли в соединении, либо неисправность переходника и/или дисплея (типа там непропаи/коротыши). Осциллограф-то есть? Если нет, то только внимательный (с лупой) осмотр и перепайка всех хоть немного подозрительных мест. Если же есть, то переделываете скетч, чтобы он выводил 8-ки во все 32 знакоместа, берёте даташит на дисплей, смотрите, что там должно быть на ногах и смотрите есть ли оно. Как на какой-то ноге нет - ищем обрыв в её цепи. Если на двух соседних ногах одно и тоже - ищем коротыш. Как-то так.

Да нет какой осциллограф вы что, я студент которому надо это сделать на диплом.

Green
Offline
Зарегистрирован: 01.10.2015

А lcd то нормальный? Без I2C запустите. Заодно и вычислите виновника.

Green
Offline
Зарегистрирован: 01.10.2015

Pyfez пишет:
Да нет какой осциллограф вы что, я студент которому надо это сделать на диплом.


Лучше бы вы это не говорили...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А что, студент не может иметь осциллограф? Мой внук - школьник, у него два :-)

Ну, смотрите с лупой, ищите. Малейшее подозрение на непропай/коротыш - перепаивайте это место. Или (если есть возможность, возьмите другой переходник и другой дисплей.

mixail844
Offline
Зарегистрирован: 30.04.2012

Green пишет:

Pyfez пишет:
Да нет какой осциллограф вы что, я студент которому надо это сделать на диплом.


Лучше бы вы это не говорили...

ну почему же ? одно дело пришел студент и начал клянчить что бы по бырику написали код "за так" для диплома ,а другое который хочет сам разобраться .

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

ЕвгенийП пишет:

А что, студент не может иметь осциллограф? Мой внук - школьник, у него два :-)

"два тиливизира крути верти, а ну ка девушки, а ну ка парни..."

Pyfez
Offline
Зарегистрирован: 30.10.2020

ЕвгенийП пишет:

А что, студент не может иметь осциллограф? Мой внук - школьник, у него два :-)

Ну, смотрите с лупой, ищите. Малейшее подозрение на непропай/коротыш - перепаивайте это место. Или (если есть возможность, возьмите другой переходник и другой дисплей.

Вроде адекватно спаяно 

b707
Offline
Зарегистрирован: 26.05.2017

Pyfez пишет:

Вроде адекватно спаяно 

на фото очень хорошо получилось покрывало, а пайки опять нифига не видно.

Мне вот интересно - вы сами-то не замечаете. что постоянно фотографируете не то?

И неплохо бы еще фото с другой стороны платы дисплея

Pyfez
Offline
Зарегистрирован: 30.10.2020

b707 пишет:

Pyfez пишет:

Вроде адекватно спаяно 

на фото очень хорошо получилось покрывало, а пайки опять нифига не видно.

Мне вот интересно - вы сами-то не замечаете. что постоянно фотографируете не то?

И неплохо бы еще фото с другой стороны платы дисплея

Вот тут есть с другой стороны https://imgur.com/a/1ejSujz я не могу скинуть нормально ошибку выкидываает