Помогите адаптировать скетч для использования LCD 16x2
Я нашел отличный инструктаж, в котором есть общий скетч. Я нуб, но я думаю, что понимаю его и как адаптировать его для моего использования, но он использовал другой дисплей, чем я.... и я просто не знаю, как получить вывод для отображения на нем.
В скетче он использует Oled-дисплей, а все, что у меня есть под рукой, - это жидкокристаллический дисплей I2c 16x2. Я пытался использовать библиотеки и другой код из других скетчей, которые работают на этом дисплее, но у меня просто есть знания, чтобы заставить его работать.
Кто-нибудь может мне помочь, пожалуйста?
Это та самая страница: https://www.instructables.com/Measure-Fuel-Level-With-Arduino/
Вот этот код:
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
SSD1306AsciiAvrI2c oled;
#define I2C_ADDRESS 0x3C
int TankValue0;
int TankValue1;
void setup() {
Serial.begin(9600);
oled.begin(&Adafruit128x64, I2C_ADDRESS);
oled.setFont(System5x7);
oled.clear();
}
void loop() {
int sensorTankValue0 = analogRead(A1);
int sensorTankValue1 = analogRead(A2);
TankValue0 = map(sensorTankValue0, 295, 785, 0, 100);
TankValue1 = map(sensorTankValue1, 295, 785, 0, 100);
if (TankValue0 < 0) {
TankValue0 = 0;
}
if (TankValue1 < 0) {
TankValue1 = 0;
}
if (TankValue0 > 100) {
TankValue0 = 100;
}
if (TankValue1 > 100) {
TankValue1 = 100;
}
oled.print("T0=");
oled.print(TankValue0);
oled.println(" ");
oled.print("T1=");
oled.print(TankValue1);
oled.println(" ");
oled.setCursor(0, 0);
}
@SV Savannah, 👍1
Обсуждение1 ответ
Хорошо, у меня все работает нормально, добавляя код с монитора батареи. Я вроде как просто колол его, пока он не застрял, меняя "oled" на "LCD" и несколько других вещей. Извините, я не могу быть более описательным..... Я не уверен, почему это сработало, но в конце концов он перестал бросать мне ошибки .
Это рабочий код:
#include <LiquidCrystal_I2C.h>
int TankValue0;
int TankValue1;
LiquidCrystal_I2C lcd(0x27, 16, 2); // установите адрес ЖК-дисплея на 0x27 для 16 символов и 2-строчного дисплея
void setup() {
lcd.init(); // инициализация lcd
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.clear();
lcd.print("WORD");
lcd.setCursor(0, 1);
lcd.print("TO");
delay(1500);
lcd.clear();
lcd.print("YO ");
lcd.setCursor(0, 1);
lcd.print("MOMMA");
delay(2000);
lcd.clear();
pinMode(A0, INPUT);
Serial.begin(9600); // запуск последовательного монитора
}
void loop() {
int sensorTankValue0 = analogRead(A0);
int sensorTankValue1 = analogRead(A1);
TankValue0 = map(sensorTankValue0, 210, 695, 0, 100);// я просто изменил первые 2 набора значений пока они не стали правильными для полного и пустого
TankValue1 = map(sensorTankValue1, 210, 695, 0, 100);
if (TankValue0 < 0) {
TankValue0 = 0;
}
if (TankValue1 < 0) {
TankValue1 = 0;
}
if (TankValue0 > 100) {
TankValue0 = 100;
}
if (TankValue1 > 100) {
TankValue1 = 100;
}
lcd.print("Water Level is :");
lcd.setCursor(0, 1);
delay(100);
lcd.print("WATER TANK = ");
lcd.print(TankValue0);
lcd.print("%");
lcd.setCursor(0, 0);
delay(10000);
lcd.clear();
}
извините, я не понимаю "кодовое поле"....., @SV Savannah
Вы можете посмотреть на [историю редактирования](https://arduino.stackexchange.com/posts/81869/revisions), чтобы увидеть, какие изменения я внес, чтобы исправить это. В правом верхнем углу при редактировании есть значок справки (круг с вопросительным знаком), который объясняет некоторые из форматирования. [CommonMark](https://spec.commonmark.org/current/) - это система, используемая сейчас, насколько я понимаю. Существует несколько способов цитирования кода; использование тройного обратного тика, вероятно, является самым простым для большинства случаев здесь., @timemage
- Печать string and integer LCD
- Как отобразить символ º на ЖК-дисплее?
- Отправка значения с одного Arduino на другой
- Черные квадраты дисплея Arduino 16x2
- NodeMCU с RFID RC522 и LCD-модулем интерфейса I2C вместе
- ЖК-дисплей I2C отображает странные символы
- Экран LCD 16*02 I2C показывает только первый напечатанный символ
- Потенциометр 10 кОм против резистора 10 кОм на ЖК-дисплее
Проверьте, например: https://www.arduino.cc/en/Tutorial/LibraryExamples/HelloWorld ... вместо " oled` измените его на функции в этом примере. Или сначала поиграйте с этим примером скетча, чтобы привыкнуть к тому, как он работает, прежде чем менять свой собственный скетч., @Michel Keijzers
Также используйте функцию "constrain` вместо операторов "if": https://www.arduino.cc/reference/en/language/functions/math/constrain/, @Michel Keijzers
Спасибо, я действительно пробовал это сделать, но у меня получаются ошибки, что бы я ни делал...., @SV Savannah
Наверное, лучше поставить тот скетч, который вы пробовали, чтобы мы могли посмотреть на ошибки вместо примера с использованием oled., @Michel Keijzers
Хорошо, пусть он работает хорошо, купите добавление кода с монитора батареи. Я просто колол его, пока он не застрял. Я хотел бы поделиться рабочим кодом, но нет места здесь?..?, @SV Savannah
Вы можете отредактировать свой вопрос и добавить свой код, для которого у вас есть вопрос., @Michel Keijzers