Arduino UNO + LCD дисплей

lapitalik
Offline
Зарегистрирован: 02.10.2012

Здравстуйте. Подключил дисплей к ардуино. Он сразу же загорелся в тестовом режиме (когда квадратики горят). Попытался открыть в File->Examples->LiquidCristal->Hello world. Закачал на ардуино, а у меня ничего на дисплее не происходит, но в компиляторе надпись:

Binary sketch size: 2.570 bytes (of a 32.256 byte maximum)
 

Как запустить этот пример. Просто я новичек. Вот третий день только сижу разбираю примеры. Помогите запустить дисплей 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Проверяйте, соответствует ли подключение индикатора варианту в тестовом примере. Там прямо в тексте указано, какой вывод к какому порту должен быть подключен

 

lapitalik
Offline
Зарегистрирован: 02.10.2012

У меня Ardoino UNO и SainSmart 1602 LCD Keypad Shield и она просто сверху должна прикрепляться к ардуинке. Дисплей горит в режиме теста

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Тогда все просто - берите библу от шилда (там должны быть примеры). У Вас наверняка дисплей подключен к SPI, так что стандартный пример не покатит.

lapitalik
Offline
Зарегистрирован: 02.10.2012

 А какой пример может прокатить? Можно ссылку на полезный материал?

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

 Ну Вы даете! К шилду идет библиотека, в ней должны быть примеры.

lapitalik
Offline
Зарегистрирован: 02.10.2012

Скачал эту библиотеку. Запустил пример "Helli World". И ничего. Все по-старому. Горит только в тестовом режиме и все

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

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

wmweb
Offline
Зарегистрирован: 16.12.2012

Вам правильно советовал AlexFisher:
Проверяйте, соответствует ли подключение индикатора варианту в тестовом примере.
Там прямо в тексте указано, какой вывод к какому порту должен быть подключен

Подойдет стандартная библиотека LiquidCrystal
Открываете
examples>Hello world

и в тексте меняете

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

На

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

Monsel
Offline
Зарегистрирован: 27.10.2013

AlexFisher пишет:
Ну тогда могу только посоветовать найти схему шилда и выложить сюда (или ссылку на схему) - можно будет сравнить с библиотекой и сделать вывод с совместимостью железа с оной. Возможно, у Вас какая-то модификация, и ноги разведены по другому... или еще какая хрень... От китайцев можно всего ожидать (не сомневаюсь, что девайсина собрана безымянным ляо).  

Добрый вечер!  У меня та же самая проблема с LCD Shield 1602     http://www.ebay.com/itm/370880538854  - нет схемы  и неизвестен интерфейс подключения. Возможно параллельный, тк на главную плату (shield) распаяны все 16 выводов LCD модуля и из них по нижней стороне shield разведены 7 шт.

Какая библиотека предназначена будет работать с этим индикатором и кнопками?

Посмотрел на принципиальную схему в библиотеке

AlexFisher пишет:
  Ну Вы даете! К шилду идет библиотека, в ней должны быть примеры.
  и способ подключения кнопок через делители, но на своей плате не нашел ни одного резистора, заглядывал даже в щель между shield и платой LCD модуля.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Нету у него режима теста. Там есть подстроечный резистор  который отвечает за контрастность - вот если он неправильно настроен то всегда черные квадратики будут на дисплее.

kolganoff
Offline
Зарегистрирован: 26.09.2013

Monsel пишет:

Добрый вечер!  У меня та же самая проблема с LCD Shield 1602     http://www.ebay.com/itm/370880538854  - нет схемы  и неизвестен интерфейс подключения. Возможно параллельный, тк на главную плату (shield) распаяны все 16 выводов LCD модуля и из них по нижней стороне shield разведены 7 шт.

Какая библиотека предназначена будет работать с этим индикатором и кнопками?

Посмотрел на  способ подключения кнопок через делители, но на своей плате не нашел ни одного резистора, заглядывал даже в щель между shield и платой LCD модуля.

Лучше смотреть какие выводы шилда разведены. Вот тут нарисовано:

http://www.hobbyist.co.nz/?q=16x2-arduino-lcd-shield

На шилд напаян обычный параллельный LCD + на шилде есть микросхема декодера I2C. 

У LCD нет тестового режима, а есть режим инициализации, когда горит одна строка квадратиков.

Резисторы лучше искать тестером ;-)

Monsel
Offline
Зарегистрирован: 27.10.2013

NeiroN пишет:
Нету у него режима теста. Там есть подстроечный резистор  который отвечает за контрастность - вот если он неправильно настроен то всегда черные квадратики будут на дисплее.

установил библиотеку, откомпилировал пример программы

/*
Sainsmart LCD Shield for Arduino
Key Grab v0.2
Written by jacky

www.sainsmart.com

Displays the currently pressed key on the LCD screen.

Key Codes (in left-to-right order):

None   - 0
Select - 1
Left   - 2
Up     - 3
Down   - 4
Right  - 5

*/

#include <LiquidCrystal.h>
#include <DFR_Key.h>

//Pin assignments for SainSmart LCD Keypad Shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
//---------------------------------------------

DFR_Key keypad;

int localKey = 0;
String keyString = "";
                 
void setup() 
{ 
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Key Grab v0.2");
  delay(2500);
  
  /*
  OPTIONAL
  keypad.setRate(x);
  Sets the sample rate at once every x milliseconds.
  Default: 10ms
  */
  keypad.setRate(10);

}

void loop() 
{ 
  /*
  keypad.getKey();
  Grabs the current key.
  Returns a non-zero integer corresponding to the pressed key,
  OR
  Returns 0 for no keys pressed,
  OR
  Returns -1 (sample wait) when no key is available to be sampled.
  */
  localKey = keypad.getKey();
  
  if (localKey != SAMPLE_WAIT)
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Current Key:");
    lcd.setCursor(0, 1);
    lcd.print(localKey);
  }
}

в UNO (а после обнаружения проблемы загрузил этот скетч в Mega2560)

Надпись "KeyGrab v0.2" после перезагрузки выдается четко, а когда появляется надпись

Current key

0

то надпись дрожит по строкам и отдельным пискелям. впечатление, как будто кнопки 1 2 3 4 нажаты и программа так быстро пытается обновитьдисплей, что  ( медленный  FSTN ?)  не успевает обновляться и на нажатие кнопок  1,2,3 и 4 нет реакции, а при нажатии и удержании кнопки 5, ноль во второй строке LCD заменяется на цифру 5:

Current key

5

на это время дрожание пикселей прекращается, а при отпускании возобновляется. Нажатие кнопки 6 (RESET) приводит к перезагрузке и выдачи заставки "KeyGrab v 0.2" и повторению дрожания. В чем может быть причина?

 

Monsel
Offline
Зарегистрирован: 27.10.2013

kolganoff пишет:
Лучше смотреть какие выводы шилда разведены. Вот тут нарисовано:  http://www.hobbyist.co.nz/?q=16x2-arduino-lcd-shield

На шилд напаян обычный параллельный LCD + на шилде есть микросхема декодера I2C. Резисторы лучше искать тестером ;-) 

Разведены так, как по вашей ссылке те 8 шт.  А0 я сначала не заметил. Резисторы нашел визуально, тестером не проверял.  Пересмотрел поверхности шилда, на нем ,  как и на принципиальной схеме     микросхем не нашел (плохо искал?). Не понимаю почему "рябит" изображение на  индикаторе без нажатой кнопки 5?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Обратите внимание за 39-ю строчку кода. Сделайте подобное в 71-ой строчке. Экран обновляется каждый раз с начала цикла и без задержек, а это очень часто.

Но это на первых парах. Лучше не обновлять его пока не нужно будет выводить другую информацию.

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:
Обратите внимание за 39-ю строчку кода. Сделайте подобное в 71-ой строчке. Экран обновляется каждый раз с начала цикла и без задержек, а это очень часто. Но это на первых парах. Лучше не обновлять его пока не нужно будет выводить другую информацию.

добавил задержку и появилась стабильность, но кнопки 1 2 3 4 uno не видит

и дополнительно : в одном каталоге с примером находится файл  c кривым именем ¦T-и+---+-¦¦.C ,  читаю его notepad'ом - в нем определена SIMPLE_WAIT Открыть с помощью arduino.exe Windows игнорирует, да и arduino установился странно - без прописки в Program files. Чем открыть этот кривоименный файл  ¦T-и+---+-¦¦.C  ?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Файлы с расширением .С .СРР .Н и подобные я открываю Atmel Studio 6.0 Удобно и читабельно. Легко редактировать.

Вы клаву правельно инициализироваль? И какую задержку поставили? достаточно 100-300











//Pin assignments for SainSmart LCD Keypad Shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 

Arduini можно установить, а можно распоковать. Я разници не нашёл

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:
Файлы с расширением .С .СРР .Н и подобные я открываю Atmel Studio 6.0 Удобно и читабельно. Легко редактировать.Вы клаву правельно инициализироваль? И какую задержку поставили? достаточно 100-300

//Pin assignments for SainSmart LCD Keypad Shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 

Arduini можно установить, а можно распоковать. Я разници не нашёл

Да, эта строка включена в код программы:

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 

Поменял инициализацию клавиатуры в setup() на

keypad.setRate(200); // НО КНОПКИ 1 2 3 4 ПРОГРАММЕ ПО-ПРЕЖНЕМУ НЕ ВИДНЫ

НО КНОПКИ 1 2 3 4 ПРОГРАММЕ ПО-ПРЕЖНЕМУ НЕ ВИДНЫ

Какую функцию выполняет кривоименный файл *.C в каталоге с примером  и как можно  выводить отдельные символы с инвертированием фона ?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Честно говоря я не работал ещё с клавой и этой библиотекой, но мне кажется что 

keypad.setRate(200);

это время опроса клавишь. Ну а какую функцию выполняет я уж точно не знаю. Я его не видел.

 

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:

Честно говоря я не работал ещё с клавой и этой библиотекой, но мне кажется что 

keypad.setRate(200);

это время опроса клавишь. Ну а какую функцию выполняет я уж точно не знаю. Я его не видел.

Ну что-то нестабильно работает считывание с клавиатуры, кнопку 1 программа не читала не разу, №5 легче всего, а 2 3 и 4 с большими проблемами, как будто зависает при считывании ихз клавиатуры в каком-то прерывании. Сам я при моем начальном уровне разобраться с текстами библиотек не смогу, есть ли более надежные проверенные библиотеки ?

 

файл с кривым именем:

/*
DFRobot LCD Shield for Arduino
Key Grab v0.2
Written by Glendon Klassen

Displays the currently pressed key on the LCD screen.

Key Codes (in left-to-right order):

None   - 0
Select - 1
Left   - 2
Up     - 3
Down   - 4
Right  - 5

*/

#include <LiquidCrystal.h>
#include <DFR_Key.h>

//Pin assignments for DFRobot LCD Keypad Shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
//---------------------------------------------

DFR_Key keypad;

int localKey = 0;
String keyString = "";
                 
void setup() 
{ 
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Key Grab v0.2");
  delay(2500);
  
  /*
  OPTIONAL
  keypad.setRate(x);
  Sets the sample rate at once every x milliseconds.
  Default: 10ms
  */
  keypad.setRate(10);

}

void loop() 
{ 
  /*
  keypad.getKey();
  Grabs the current key.
  Returns a non-zero integer corresponding to the pressed key,
  OR
  Returns 0 for no keys pressed,
  OR
  Returns -1 (sample wait) when no key is available to be sampled.
  */
  localKey = keypad.getKey();
  
  if (localKey != SAMPLE_WAIT)
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("keypad testing:");
    lcd.setCursor(0, 1);
    lcd.print(localKey);
  }
}

как можно свернуть код программы в посте?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Monsel пишет:
   как можно свернуть код программы в посте?

Вкладка "Дополнительно"

 

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:

Monsel пишет:
   как можно свернуть код программы в посте?

Вкладка "Дополнительно"

спасибо

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Так файл с "кривым" названием это то, что вы компелируете и загружаете. Рассмотрите библиотеку, она должна быть раскометнирована. Там и посмотрите как инвертировать, и какие функции есть. Большенство функций, особенно которые возвращают какие-либо значения, имеют прототипы которые расположены подрят и имена говорят сами за себя.

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:
Так файл с "кривым" названием это то, что вы компелируете и загружаете.

 

Рассмотрите библиотеку, она должна быть раскометнирована. Там и посмотрите как инвертировать, и какие функции есть. Большенство функций, особенно которые возвращают какие-либо значения, имеют прототипы которые расположены подрят и имена говорят сами за себя.

Ссылок на файл с таким кривым именем

¦T-и+---+-¦¦.C

не нашел, компилирую не его, а другой похожий по содержанию файл.

Эта библиотека куцая - ничего нет, кроме передирания копирайтов в примере - см "отличия" заколовков скетчей №1 и 2. Ищу другую библиотеку, вы какую используете?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Что значит куцая? Каково содержимое DFR_Key.h ?

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:
Что значит куцая? Каково содержимое DFR_Key.h ?

то есть мне трудно  т.к. весьма скудно документирована (комментирована)

#ifndef DFR_Key_h
#define DFR_Key_h

#include "Arduino.h"

#define SAMPLE_WAIT -1
#define NO_KEY 0
#define UP_KEY 3
#define DOWN_KEY 4
#define LEFT_KEY 2
#define RIGHT_KEY 5
#define SELECT_KEY 1

class DFR_Key
{
  public:
    DFR_Key();
    int getKey();
    void setRate(int);
  private:
    int _refreshRate;
    int _keyPin;
    int _threshold;
    int _keyIn;
    int _curInput;
    int _curKey;
    int _prevInput;
    int _prevKey;
    boolean _change;
    unsigned long _oldTime;
};

#endif

Как можно  инвертировать (текст/фон) для отдельных символов на LCD  не создавая нового символа?

/*
  LiquidCrystal Library - Custom Characters
 
 Demonstrates how to add custom characters on an LCD  display.  
 The LiquidCrystal library works with all LCD displays that are 
 compatible with the  Hitachi HD44780 driver. There are many of 
 them out there, and you can usually tell them by the 16-pin interface.
 
 This sketch prints "I <heart> Arduino!" and a little dancing man
 to the LCD.
 
  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K potentiometer:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 * 10K poterntiometer on pin A0
 
 created21 Mar 2011
 by Tom Igoe
 Based on Adafruit's example at
 https://github.com/adafruit/SPI_VFD/blob/master/examples/createChar/createChar.pde
 
 This example code is in the public domain.
 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 
 Also useful:
 http://icontexto.com/charactercreator/
 
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// make some custom characters:
byte heart[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
};

byte smiley[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b00000,
  0b00000,
  0b10001,
  0b01110,
  0b00000
};

byte frownie[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b00000,
  0b00000,
  0b00000,
  0b01110,
  0b10001
};

byte armsDown[8] = {
  0b00100,
  0b01010,
  0b00100,
  0b00100,
  0b01110,
  0b10101,
  0b00100,
  0b01010
};

byte armsUp[8] = {
  0b00100,
  0b01010,
  0b00100,
  0b10101,
  0b01110,
  0b00100,
  0b00100,
  0b01010
};
void setup() {
  // create a new character
  lcd.createChar(0, heart);
  // create a new character
  lcd.createChar(1, smiley);
  // create a new character
  lcd.createChar(2, frownie);
  // create a new character
  lcd.createChar(3, armsDown);  
  // create a new character
  lcd.createChar(4, armsUp);  

  // set up the lcd's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the lcd.
  lcd.print("I "); 
  lcd.write(0);
  lcd.print(" Arduino! ");
  lcd.write(1);

}

void loop() {
  // read the potentiometer on A0:
  int sensorReading = analogRead(A0);
  // map the result to 200 - 1000:
  int delayTime = map(sensorReading, 0, 1023, 200, 1000);
  // set the cursor to the bottom row, 5th position:
  lcd.setCursor(4, 1);
  // draw the little man, arms down:
  lcd.write(3);
  delay(delayTime);
  lcd.setCursor(4, 1);
  // draw him arms up:
  lcd.write(4);
  delay(delayTime); 
}

Не удалось скомпилировать вышеприведенную программу из примеров "LiquidCrystal Library - Custom Characters"   и не знаю как устранить ошибки

 

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

кастомизированные символы теперь печатаются в экран не lcd.write(n);, а lcd.print((char)n);

Monsel
Offline
Зарегистрирован: 27.10.2013

Клапауций пишет:
кастомизированные символы теперь печатаются в экран не lcd.write(n);, а lcd.print((char)n);
Вы пишите "теперь" - то есть начиная с какого момента, какой версии ?  Этот пример устарел?

Чтобы выделить несколько символов инвертированием фона нужно обязательно создавать символы или есть способ проще?

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Monsel пишет:

Вы пишите "теперь" - то есть начиная с какого момента, какой версии ?  Этот пример устарел?

Какой версии уже не важно.

Пример устарел.

Monsel пишет:
Чтобы выделить несколько символов инвертированием фона нужно обязательно создавать символы или есть способ проще?

Все ненормальные вещи, реализуются ненормальными способами.

полный список методов и функций ищите в файле keywords.txt в папке с файлами библиотеки

Monsel
Offline
Зарегистрирован: 27.10.2013

Клапауций пишет:
Пример устарел.

Все ненормальные вещи, реализуются ненормальными способами. полный список методов и функций ищите в файле keywords.txt в папке с файлами библиотеки

Где взять актуальную версию примера  и  какая программа формирует keywords.txt ? 

#######################################
# Syntax Coloring Map for DFR_Key
#######################################

#######################################
# Datatypes (KEYWORD1)
#######################################

DFR_Key	KEYWORD1

#######################################
# Methods and Functions (KEYWORD2)
#######################################

getKey	        KEYWORD2
setRate         KEYWORD2

#######################################
# Constants (LITERAL1)
#######################################
 
SAMPLE_WAIT LITERAL1
NO_KEY LITERAL1
UP_KEY LITERAL1
DOWN_KEY LITERAL1
LEFT_KEY LITERAL1
RIGHT_KEY LITERAL1
SELECT_KEY LITERAL1

что такое LITERAL1  в keywords.txt ?

Клапауций
Offline
Зарегистрирован: 10.02.2013

Monsel пишет:

Где взять актуальную версию примера  и  какая программа формирует keywords.txt ? 

замените lcd.write(n); на lcd.print((char)n); - будет актуальный пример.

как формируется не знаю - если сами будете писать библиотеки, то само прояснится по ходу дела

Monsel пишет:

что такое LITERAL1  в keywords.txt ?

список констант, в данном случае, так думаю, что это название кнопок - с.м. # Constants (LITERAL1)

Monsel
Offline
Зарегистрирован: 27.10.2013

а как инвертировать фон и текст отдельных позиций на LCD ?

vvadim
Offline
Зарегистрирован: 23.05.2012

Или переклеиваете поляризационные плёнки в дисплее или используйте другой дисплей (напрмер графический)

Monsel
Offline
Зарегистрирован: 27.10.2013

vvadim пишет:
Или переклеиваете поляризационные плёнки в дисплее или используйте другой дисплей (напрмер графический)
  И каг быздро переклеивадь, если символ бежит по икрану. Cкажите по-простому : выделить символы в отдельных позициях на текстовом невозможно?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

А разве в виде курсора это реализовать невозможно. Как я понял, собственно это и надо сделать.

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:
А разве в виде курсора это реализовать невозможно. Как я понял, собственно это и надо сделать.
наверное возможно ,  но вопрос был был о выделении группы символов

vvadim
Offline
Зарегистрирован: 23.05.2012

Monsel пишет:

а как инвертировать фон и текст отдельных позиций на LCD ?

16х2 дисплей этого не делает. Вам нужно использовать ГРАФИЧЕСКИЙ дисплей.

Monsel
Offline
Зарегистрирован: 27.10.2013

Клапауций пишет:
замените lcd.write(n); на lcd.print((char)n); - будет актуальный пример.

/*
  LiquidCrystal Library - Custom Characters
 
 Demonstrates how to add custom characters on an LCD  display.  
 The LiquidCrystal library works with all LCD displays that are 
 compatible with the  Hitachi HD44780 driver. There are many of 
 them out there, and you can usually tell them by the 16-pin interface.
 
 This sketch prints "I <heart> Arduino!" and a little dancing man
 to the LCD.
 
  The circuit:
 * LCD RS pin to digital pin 12
 * LCD Enable pin to digital pin 11
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 * LCD R/W pin to ground
 * 10K potentiometer:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)
 * 10K poterntiometer on pin A0
 
 created21 Mar 2011
 by Tom Igoe
 Based on Adafruit's example at
 https://github.com/adafruit/SPI_VFD/blob/master/examples/createChar/createChar.pde
 
 This example code is in the public domain.
 http://www.arduino.cc/en/Tutorial/LiquidCrystal
 
 Also useful:
 http://icontexto.com/charactercreator/
 
 */

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// make some custom characters:
byte heart[8] = {
  0b00000,
  0b01010,
  0b11111,
  0b11111,
  0b11111,
  0b01110,
  0b00100,
  0b00000
};

byte smiley[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b00000,
  0b00000,
  0b10001,
  0b01110,
  0b00000
};

byte frownie[8] = {
  0b00000,
  0b00000,
  0b01010,
  0b00000,
  0b00000,
  0b00000,
  0b01110,
  0b10001
};

byte armsDown[8] = {
  0b00100,
  0b01010,
  0b00100,
  0b00100,
  0b01110,
  0b10101,
  0b00100,
  0b01010
};

byte armsUp[8] = {
  0b00100,
  0b01010,
  0b00100,
  0b10101,
  0b01110,
  0b00100,
  0b00100,
  0b01010
};
void setup() {
  // create a new character
  lcd.createChar(0, heart);
  // create a new character
  lcd.createChar(1, smiley);
  // create a new character
  lcd.createChar(2, frownie);
  // create a new character
  lcd.createChar(3, armsDown);  
  // create a new character
  lcd.createChar(4, armsUp);  

  // set up the lcd's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the lcd.
  lcd.print("I "); 
  //------------------------- lcd.write(0);
  lcd.print((char)0);
    // lcd.write(n); на lcd.print((char)n);
  
  lcd.print(" Arduino! ");
  //-------------------------lcd.write(1);
  lcd.print((char)(1));

}

void loop() {
  // read the potentiometer on A0:
  int sensorReading = analogRead(A0);
  // map the result to 200 - 1000:
  int delayTime = map(sensorReading, 0, 1023, 200, 1000);
  // set the cursor to the bottom row, 5th position:
  lcd.setCursor(4, 1);
  // draw the little man, arms down:
  // -----------lcd.write(3);
  lcd.print((char)3);
  
  delay(delayTime);
  lcd.setCursor(4, 1);
  // draw him arms up:
  // -------------- lcd.write(4);
  lcd.print((char)4);
  
  delay(delayTime); 
}


Заменил, но видимого на LCD результата  нет.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

У этого шилда     LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

И подсветка на 10  (десятом).

hugoboss317
Offline
Зарегистрирован: 21.03.2013

vvadim пишет:

Monsel пишет:

а как инвертировать фон и текст отдельных позиций на LCD ?

16х2 дисплей этого не делает. Вам нужно использовать ГРАФИЧЕСКИЙ дисплей.

Речь идёт об использовании 16х2, причём тут графический? 16х2 выкинуть что ли!?

vvadim
Offline
Зарегистрирован: 23.05.2012

Ну не будет он инвертировать фон и текст отдельных позиций

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:
Речь идёт об использовании 16х2, причём тут графический? 16х2 выкинуть что ли!?
спасибо за понимание, с графическим не хочу связываться из-за сложностей с программированием и бесполезного распыления скромной производительности AVR.

trembo пишет:
У этого шилда     LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  И подсветка на 10  (десятом).

спасиибо, так работает, а на 10pin  высокий уровень подает  библиотека  при инициализации ?

 

 

Кстати,  lcd.createChar(0, array_of_bytes);  не записывает ли  в EEPROM или flash LCD?

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

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Сложностей с программированием? Вы так.... на минутку зашли в программирование а вобще проходили мимо? Анука взяли яйца в руки и заказали графический и выложили фото с выведеным "Hello world". Иначе Вам просто тут нечего делать. За вас писатиь проги тут никто не будет, я на себе уже давно убедился в этом. А направить на истенный курс, подтолкнуть к правельному решению..... для этого и существуют форумы. 

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:
Сложностей с программированием? Вы так.... на минутку зашли в программирование а вобще проходили мимо? Анука взяли яйца в руки и заказали графический и выложили фото с выведеным "Hello world". Иначе Вам просто тут нечего делать. За вас писатиь проги тут никто не будет, я на себе уже давно убедился в этом. А направить на истенный курс, подтолкнуть к правельному решению..... для этого и существуют форумы.

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

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Хозяин барен

Monsel
Offline
Зарегистрирован: 27.10.2013

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

-------------

изменил программу и получил печальное подтверждение -   lcd.createChar(code, array);  записывает символы пользователя  в энергонезависимую память LCD и 

... возможно изнашивает ее.

 

 

 

Клапауций
Offline
Зарегистрирован: 10.02.2013

Monsel пишет:

... возможно изнашивает ее.

*и от девственниц большой износ(Пратчетт)

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Monsel, а почему Вы мне тычете? Мы ведь с Вами детей не крестили, и то что я Вам не смог помочь, не повод на меня сливать злость, ИМХО показывать свой хоррактер не лучший способ просьбы о помощи.

Monsel
Offline
Зарегистрирован: 27.10.2013

hugoboss317 пишет:
Monsel, а почему Вы мне тычете? Мы ведь с Вами детей не крестили, и то что я Вам не смог помочь, не повод на меня сливать злость, ИМХО показывать свой хоррактер не лучший способ просьбы о помощи.
Ошибочно назвал на ты, а про злость - я не понимаю о чем это? Вы мне помогли и ответили на мои вопросы . Программу меню я уже написал и отладил,  осталось создать из нее библиотеку. 

Почитал вашу ветку про программирование графического индикатора 128х64 - очень интересно, но к сожалению для мой текущей задачи он не нужен, а в будущем обязательно применю.  Спасибо вам.

 PS: вы изменяете слова русского языка не сознательно  ? 

hugoboss317 пишет:
хоррактер
hugoboss317 пишет:
на истенный курс, подтолкнуть к правельному решению

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Monsel пишет:
для мой текущей задачи он не нужен

Если АсознатИльно, обычно пишу ошибАчную букву бАльшой.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Monsel пишет:

 подсветка на 10  (десятом)

спасиибо, так работает, а на 10pin  высокий уровень подает  библиотека  при инициализации ?

Нет. это ваш пин и делайте с ним что хотите, например:

#define LCD_PWM_pin  10             //LCD backlight pin

byte LCD_PWM_value =  64 ;         // LCD brihtness variable

analogWrite  ( LCD_PWM_pin, LCD_PWM_value ) ;   //  set LCD brihtness