From 037f7ce38a085118b8bb5413b612c9366451a4b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=A7=D0=B5=D1=80?=
 =?UTF-8?q?=D1=82=D0=BA=D0=BE=D0=B2?= <stud126172@vyatsu.ru>
Date: Thu, 11 May 2023 08:24:30 +0000
Subject: [PATCH] lcd

---
 пример с библиотеками ардуино.txt | 55 ++++++++++++++++++
 типо с.txt                        | 93 +++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+)
 create mode 100644 пример с библиотеками ардуино.txt
 create mode 100644 типо с.txt

diff --git a/пример с библиотеками ардуино.txt b/пример с библиотеками ардуино.txt
new file mode 100644
index 0000000..e843baa
--- /dev/null
+++ b/пример с библиотеками ардуино.txt	
@@ -0,0 +1,55 @@
+#include <Wire.h>
+#include <LiquidCrystal_I2C.h>
+
+LiquidCrystal_I2C lcd(32, 16, 2);
+
+byte MasArray[32] = {
+  78, 69, 71, 82, 32, 77, 65, 78, 68, 65, 82, 73, 78, 33, 33, 33,
+  32, 32, 32, 32, 46, 32, 32, 32, 32, 46, 32, 32, 32, 46, 37, 33
+};
+
+char colum1[17];
+char colum2[17];
+
+unsigned long previousTime = 0;
+const unsigned long interval = 200;
+
+void delay_ms(unsigned long milliseconds) {
+  unsigned long startTime = millis();
+  while (millis() - startTime < milliseconds) {
+    // Wait until the specified time has passed
+  }
+}
+
+void setup() {
+  Serial.begin(9600);
+  lcd.init();
+  lcd.backlight();
+
+  for (int i = 0; i < 32; i++) {
+    if (i < 16) {
+      colum1[i] = (char)MasArray[i];
+    } else {
+      colum2[i - 16] = (char)MasArray[i];
+    }
+  }
+  colum1[16] = '\0';
+  colum2[16] = '\0';
+}
+
+void loop() {
+  unsigned long currentTime = millis();
+
+  if (currentTime - previousTime >= interval) {
+    previousTime = currentTime;
+
+    for (int i = 15; i > 0; i--) {
+      lcd.setCursor(i, 0);
+      lcd.print(colum1);
+      lcd.setCursor(0, 1);
+      lcd.print(colum2);
+      delay_ms(200); // Use the custom delay_ms() function instead of delay()
+      lcd.clear();
+    }
+  }
+}
diff --git a/типо с.txt b/типо с.txt
new file mode 100644
index 0000000..9d293cc
--- /dev/null
+++ b/типо с.txt	
@@ -0,0 +1,93 @@
+#include <Wire.h>
+
+#define LCD_ADDRESS 0x27
+#define LCD_ROWS 2
+#define LCD_COLUMNS 16
+
+byte MasArray[32] = {
+78, 69, 71, 82, 32, 77, 65, 78, 68, 65, 82, 73, 78, 33, 33, 33,
+32, 32, 32, 32, 46, 32, 32, 32, 32, 46, 32, 32, 32, 46, 37, 33
+};
+
+char colum1[17];
+char colum2[17];
+
+unsigned long previousTime = 0;
+const unsigned long interval = 200;
+
+void delay_ms(unsigned long milliseconds) {
+unsigned long startTime = millis();
+while (millis() - startTime < milliseconds) {
+// Wait until the specified time has passed
+}
+}
+
+void lcdCommand(uint8_t command) {
+Wire.beginTransmission(LCD_ADDRESS);
+Wire.write(0x00);
+Wire.write(command);
+Wire.endTransmission();
+}
+
+void lcdWrite(uint8_t value) {
+Wire.beginTransmission(LCD_ADDRESS);
+Wire.write(0x40);
+Wire.write(value);
+Wire.endTransmission();
+}
+
+void lcdSetCursor(uint8_t row, uint8_t col) {
+uint8_t row_offsets[] = { 0x00, 0x40 };
+uint8_t offset = row_offsets[row] + col;
+lcdCommand(0x80 | offset);
+}
+
+void lcdClear() {
+lcdCommand(0x01); // Clear display
+delay_ms(2); // Delay for clear display command
+}
+
+void lcdInit() {
+Wire.begin();
+lcdCommand(0x38); // Function set: 8-bit mode, 2 lines, 5x8 font
+lcdCommand(0x0C); // Display control: Display ON, Cursor OFF, Blinking OFF
+lcdClear();
+}
+
+void lcdPrint(const char* str) {
+while (*str) {
+lcdWrite(*str++);
+}
+}
+
+void setup() {
+Serial.begin(9600);
+lcdInit();
+
+for (int i = 0; i < 32; i++) {
+if (i < 16) {
+colum1[i] = (char)MasArray[i];
+} else {
+colum2[i - 16] = (char)MasArray[i];
+}
+}
+colum1[16] = '\0';
+colum2[16] = '\0';
+}
+
+void loop() {
+unsigned long currentTime = millis();
+
+if (currentTime - previousTime >= interval) {
+previousTime = currentTime;
+
+for (int i = 15; i > 0; i--) {
+lcdSetCursor(i, 0);
+lcdPrint(colum1);
+lcdSetCursor(0, 1);
+lcdPrint(colum2);
+delay_ms(200); // Use the custom delay_ms() function instead of delay()
+lcdClear();
+}
+}
+}