Форум программистов, компьютерный форум, киберфорум
Arduino
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 20.07.2021
Сообщений: 1
1

Работа с LCD дисплеем на Arduino

20.07.2021, 10:43. Показов 284. Ответов 1

Здравствуйте читатели. Произошла такая проблема, писал код для контролера Arduino NANO и получилась такая путаница. Написал код основываясь на других проектах из интернета и получилось что я написал код для OLED Дисплея, а у нас в городе их толком то нету, а в интернете их не закажешь.
В общем помогите мне переписать код для LCD дисплея.
Просто напишите мне что надо переписать, потому что я особо не шарю в программировании на Arduino.
Вот код:
P.S я не знаю как включить таблицу для кода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
#include <stdio.h>
#include <EEPROM.h>
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/sleep.h>
 
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <LiquidCrystal.h>
 
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
 
 
#define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
  B00000001, B11000000,
  B00000001, B11000000,
  B00000011, B11100000,
  B11110011, B11100000,
  B11111110, B11111000,
  B01111110, B11111111,
  B00110011, B10011111,
  B00011111, B11111100,
  B00001101, B01110000,
  B00011011, B10100000,
  B00111111, B11100000,
  B00111111, B11110000,
  B01111100, B11110000,
  B01110000, B01110000,
  B00000000, B00110000
};
 
LiquidCrystal lcd ()
 
#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
 
 
#define COIL 2
 
 
 
byte facility[2] = { 0x02, 0x0C };
byte cardID[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
int colsum[4] = { 0, 0, 0, 0}; // storage for the column checksums
 
// delay between symbols when we are transmitting
int bittime = 256;
 
byte RFIDdata[128];
 
int clock = 0; // storage for the current state of our clock signal.
 
byte datapointer = 0;
byte state;
 
//******************************************************
#define METAKOM_CYFRAL 0xFFFFFFFFFF
#define METAKOM_1 0x365A1140BE
#define CYFRAL_1 0x01FFFFFFFF
#define VIZIT_1 0x565A1140BE
#define VIZIT_2 0x365A398149
#define ELTIS 0x0
#define LIFT 0x0B57814601
#define TOILET 0x0400711335 //53
 
//uint64_t universalID[8] = {1099511627775, 233439314110, 8589934591, 370878267582, 233441952073, 0, 48712730113, 5675447};
uint64_t universalID[] =
{
  METAKOM_CYFRAL,
  METAKOM_1,
  CYFRAL_1,
  VIZIT_1,
  VIZIT_2,
  0,
  LIFT,
  TOILET
};
uint32_t nibleMask = 15;
 
#define BTN_UP   3
#define BTN_DWN  5
#define BTN_SEL  4
 
int8_t keyNumber = 0;
 
void setup()
{
  Serial.begin(9600);
 
  pinMode(BTN_UP, INPUT);
  pinMode(BTN_DWN, INPUT);
  pinMode(BTN_SEL, INPUT);
 
  pinMode(COIL, OUTPUT);
  digitalWrite(COIL, LOW);
 
  lcd.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  lcd.display();
  lcd.clearDisplay();
 
  lcd.setTextSize(1);
  lcd.setTextColor(WHITE);
}
 
void loop(void)
{
  Serial.println(keyNumber);
 
  if (digitalRead(BTN_UP) == HIGH)
  {
    keyNumber++;
    if (keyNumber == 8) keyNumber = 0;
    while (digitalRead(BTN_UP) == HIGH);
    cd.clear();
  }
 
  if (digitalRead(BTN_DWN) == HIGH)
  {
    keyNumber--;
    if (keyNumber == -1) keyNumber = 7;
    while (digitalRead(BTN_DWN) == HIGH);
    cd.clear();
  }
 
  switch (keyNumber)
  {
    case 0:
      lcd.setCursor(0, 0);
      lcd.print(">1 MEATACOM_CYFRAL");
      lcd.print(" 2 MEATACOM_1");
      lcd.print(" 3 CYFRAL_1");
      lcd.print(" 4 VIZIT_1");
      lcd.display();
      break;
    case 1:
      lcd.print.setCursor(0, 0);
      lcd.print(" 1 MEATACOM");
      lcd.print(">2 MEATACOM_1");
      lcd.print(" 3 CYFRAL_1");
      lcd.print(" 4 VIZIT_1");
      lcd.display();
      break;
    case 2:
      lcd.setCursor(0, 0);
      lcd.print(" 1 MEATACOM");
      lcd.print(" 2 MEATACOM_1");
      lcd.print(">3 CYFRAL_1");
      lcd.print(" 4 VIZIT_1");
      lcd.display();
      break;
    case 3:
      lcd.setCursor(0, 0);
      lcd.print(" 1 MEATACOM");
      lcd.print(" 2 MEATACOM_1");
      lcd.print(" 3 CYFRAL_1")
      lcd.print(">4 VIZIT_1");
      lcd.display();
      break;
    case 4:
      lcd.setCursor(0, 0);
      lcd.print(">5 VIZIT_2");
      lcd.print(" 6 ELTIS");
      lcd.print(" 7 LIFT");
      lcd.print(" 8 TOILET");
      lcd.display();
      break;
    case 5:
      lcd.print.setCursor(0, 0);
      lcd.print(" 5 VIZIT_2");
      lcd.print(">6 ELTIS");
      lcd.print(" 7 LIFT");
      lcd.print(" 8 TOILET");
      lcd.display();
      break;
    case 6:
      lcd.setCursor(0, 0);
      lcd.print(" 5 VIZIT_2");
      lcd.print(" 6 ELTIS");
      lcd.print(">7 LIFT");
      lcd.print(" 8 TOILET");
      lcd.display();
      break;
    case 7:
      lcd.setCursor(0, 0);
      lcd.print(" 5 VIZIT_2");
      lcd.print(" 6 ELTIS");
      lcd.print(" 7 LIFT");
      lcd.print(">8 TOILET");
      lcd.display();
      break;
  }
 
  if (digitalRead(BTN_SEL) == HIGH)
  {
    Display.clear();
    switch (keyNumber)
    {
      case 0:
        lcd.setCursor(0, 0);
        lcd.print("> MEATACOM_CYFRAL <");
        break;
      case 1:
        lcd.setCursor(0, 0);
        lcd.print("> MEATACOM_1 <");
        break;
      case 2:
        lcd.setCursor(0, 0);
        lcd.print("> CYFRAL_1 <");
        break;
      case 3:
        lcd.setCursor(0, 0);
        lcd.print("> VIZIT_1 <");
        break;
      case 4:
        lcd.setCursor(0, 0);
        lcd.print("> VIZIT_2 <");
        break;
      case 5:
        lcd.setCursor(0, 0);
        lcd.print("> ELTIS <");
        break;
      case 6:
        lcd.print(0, 0);
        lcd.print("> LIFT <");
        break;
      case 7:
        lcd.setCursor(0, 0);
        lcd.print("> TOILET <");
        break;
    }
    lcd.print("Press reset");
    lcd.print("to continue...");
    lcd.display();
 
    facility[0] = universalID[keyNumber] >> 36 & nibleMask;
    facility[1] = universalID[keyNumber] >> 32 & nibleMask;
 
    for (uint8_t i = 0; i < 8; ++i ) 
    {
      cardID[i] = (universalID[keyNumber] >> ((7 - i) * 4)) & nibleMask; 
    }
 
    EmulateCard();  // start card emulation
  }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2021, 10:43
Ответы с готовыми решениями:

PIC16f84a. Работа с LCD дисплеем
Доброго времени суток! Такая проблема, нужна программа ( ни С или асме) для pic16f84a и lsd...

Работа с LCD дисплеем HD44780 из МК Atmega16 (GCC)
Здравствуйте, пытаюсь подключить LCD дисплей к микроконтроллеру, скачал библиотеку, но уже на...

Амперметр на Atmega8 с LCD дисплеем
Может кто то делал или подскажет как написать самый простой амперметр на assembler! (именно на этом...

LCD vs Arduino UNO
Целый день просидел перебирая разные библиотеки в поисках LiquidCrystal_I2C.h Нашел библиотеку на...

1
472 / 249 / 52
Регистрация: 21.09.2008
Сообщений: 871
21.07.2021, 01:50 2
Zzzed, что-то я не уверен, что у Вас есть в наличии 4-строчный LCD для вывода информации (см. строки 134-200). И плату эмулятора домофона придётся переделывать, т.к. там соединение с экраном совсем другое. Может всё-таки купить подходящий дисплей и дождаться его?
Я покупал для SPI здесь, обошелся в $1.76 (132,59 руб.). Если доплатить за доставку AliExpress Saver Shipping, то через 3-4 недели он будет у Вас. Если купить сразу пару дисплеев, то доставка обойдётся дешевле в пересчёте на единицу товара.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2021, 01:50

Помощь в написании контрольных, курсовых и дипломных работ здесь.

LCD I2C arduino
Добрый день. Пришел набор из Китая, пытаюсь подключить экран, и ничего не получается, пробовал...

Написать программу для PIC16F877 для работы с LCD дисплеем LM016L
День добрый, форумчане. Только начинаю разбираться с пиками и асмом. Столкнулся с...

Медленно обновляется LCD Arduino
Выводятся цифры от одной до девяти, то более-менее нормально отображается. Когда начинается...

LCD от Pentax L40 и Arduino
Остался LCD от старой Pentax L40. Возможно ли как то подключить его к ардуино для тестов? Искал...

Arduino и lcd по одному проводу
Добрый день, помогите подключить дисплей от MicroCamp к Arduino UNO. И какие библиотеки...

Схема подключения LCD Nokia1600 к Arduino
Здравствуйте! Вдохновившись статьей http://we.easyelectronics.ru/lcd_gfx/os ... fonov.html о...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.