ЖКИ питается больше необходимого тока
Итак, я впервые пробую ЖК-модуль 16x2 и не знаю, как решить эту проблему. Я знаю, что ток больше, также я пробовал использовать резисторы и т. Д., Но безрезультатно. Пожалуйста, предложите решение. Также укажите, есть ли какие-либо ошибки в моем коде.
#include <Servo.h>.
#include <LiquidCrystal.h> // включает библиотеку LiquidCrystal
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Создает объект LC. Параметры: (rs, enable, d4, d5, d6, d7)
// Определяет выводы Tirg и Echo ультразвукового датчика
const int trigPin = 10;
const int echoPin = 11;
const int buzzer = 9; // зуммер на контакт 9 Arduino
// Переменные длительности и расстояния
long duration;
int distance;
Servo myServo; // Создает сервообъект для управления серводвигателем
void setup() {
pinMode(trigPin, OUTPUT); // Устанавливает тригПин как Выход
pinMode(echoPin, INPUT); // Устанавливает echoPin в качестве входа
Serial.begin(9600);
myServo.attach(12); // Определяет, к какому контакту подключен серводвигатель
pinMode(buzzer, OUTPUT); // Установить зуммер - контакт 9 в качестве выхода
lcd.begin(16, 2);
}
void loop() {
// поворачивает серводвигатель от 15 до 165 градусов
for (int i = 15; i <= 165; i++) {
myServo.write(i);
delay(10);
distance = calculateDistance();// Вызывает функцию для расчета расстояния, измеренного Ультразвуковым датчиком, для каждого градуса
Serial.print(i); // Отправляет текущую степень в последовательный порт
Serial.print(","); // Отправляет дополнительный символ рядом с предыдущим значением, необходимым позже в Processing IDE для индексации
Serial.print(distance); // Отправляет значение расстояния в последовательный порт
Serial.print("."); // Отправляет дополнительный символ рядом с предыдущим значением, необходимым позже в Processing IDE для индексации
if (trigPin == HIGH)
{
lcd.print("Arduino");
}
if (distance < 150) {
tone(buzzer, 1000); // Отправляем звуковой сигнал частотой 1 кГц... // ...на 1 секунду
// ...на 1 секунду
}
else {
noTone(buzzer);
lcd.print("All Clear");
}
}
// Повторяет предыдущие строки от 165 до 15 градусов
for (int i = 165; i > 15; i--) {
myServo.write(i);
delay(2);
distance = calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
}
// Функция расчета расстояния, измеренного Ультразвуковым датчиком
int calculateDistance() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Устанавливает тригпин в состояние HIGH на 10 микросекунд
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // Считывает echoPin, возвращает время прохождения звуковой волны в микросекундах
distance = duration * 0.034 / 2;
return distance;
}
@Mutant101was_here, 👍-4
Обсуждение2 ответа
"На ЖК-дисплей подается ток, превышающий требуемый". Обычно это не так.
Большинство устройств потребляют столько тока, сколько им нужно, не больше, при условии, что вы подаете на них правильное напряжение. Если вы даете им напряжение выше указанного, это пропускает слишком большой ток для уровня сопротивления, которое они предлагают. Так что, пока вы питаете их регулируемым источником с указанным напряжением, все в порядке.
Существует небольшое количество устройств, таких как светодиоды, которым требуется источник питания с ограниченным током, но они являются исключением.
Ага. После того, как ОП отредактировал свой вопрос и показал ошибку симулятора, которую они получили, мы увидели, что это перегрузка по току для светодиода подсветки. Это имеет больше смысла, но нам все равно нужно знать модель ЖК-дисплея, чтобы помочь им устранить неполадки в цепи., @Duncan C
Извини, приятель, но симулятор этого не упомянул. Только то, что это "ЖК 16x2", @Mutant101was_here
В сообщении об ошибке говорится, что светодиодная подсветка ЖК-дисплея не превышает 20 мА. Затем он говорит, что вместо этого вы подаете через него 22 кА. Я делаю это как> 1 миллион раз больше текущего. Вы случайно не питаете светодиод 240 вольт?, @Duncan C
Проблема связана с двумя контактами справа от ЖК-дисплея, которые отмечены светодиодом. На этой смоделированной плате ЖК-дисплея контакты фоновых светодиодов доступны напрямую с внешних контактов, поэтому светодиод подключается непосредственно к этим контактам. Каждому светодиоду нужен токоограничивающий резистор, иначе он сгорит от чрезмерного тока. Добавьте резистор не менее 250 Ом на эти контакты светодиода, например, между самым правым контактом и землей.
Обратите внимание, что в большинстве настоящих ЖК-модулей контакты светодиодов подсветки не выламываются напрямую. Обычно у них есть полная схема управления светодиодом, и вы предоставляете только простой уровень напряжения; на этот вход не поступает значительный ток. Таким образом, вы можете настроить яркость подсветки с помощью простого потенциометра.
Благодаря вам, собственно проблема решена, но вроде. Теперь ЖК-дисплей ничего не печатает ... Я не думаю, что в моем коде есть ошибка, предложите исправление, @Mutant101was_here
- ЖК-дисплей с I2C не распознается esp32
- Нет функции сопоставления для вызова 'DS3231 (const uint8_t &, const uint8_t &)
- Преобразовать байтовый текстовый файл в массив
- Как полностью очистить все от arduino и напечатать что-то новое?
- qMenuSystem Oled I2C не может заставить его работать
- Что не так с моим жидкокристаллическим дисплеем и кодом клавиатуры?
- Как запрограммировать кнопку джойстика, чтобы сбросить все?
- avrdude ser_open() can't set com-state
Как вы думаете, почему ЖК-дисплей получает слишком много тока?, @Majenko
Изображение вашей схемы имеет слишком низкое разрешение, чтобы действительно прочитать метки контактов на ЖК-дисплее, поэтому мы не можем действительно увидеть, что было подключено неправильно. Tinkercad жалуется на светодиодную подсветку, а не на сам ЖК-дисплей. Очевидно, что контакты светодиода подсветки просто выведены на внешние контакты платы ЖК-дисплея, поэтому вам нужен подходящий резистор на соответствующем контакте светодиода подсветки. Вы должны были подключить его без какого-либо резистора (таким образом, чрезвычайно высокий расчетный ток 20 кА). Вам понадобится не менее 250 Ом., @chrisl
трудно предложить решение, если вы на самом деле не говорите, в чем проблема, @jsotola
"На самом деле, я знаю, что ток больше", это из-за того, что программное обеспечение для моделирования говорит вам это?, @Fahad
вы ничего не говорите нам о конкретной модели ЖК-дисплея, которую вы используете, или о ее характеристиках, а изображение, которое вы разместили, имеет слишком низкое разрешение, чтобы можно было понять, какие метки контактов находятся на ЖК-дисплее. Таким образом, мы не можем сказать, что происходит. Вы также не приводите никаких причин, по которым вы считаете, что ваш ЖК-дисплей «подает ток больше, чем требуется»., @Duncan C
Итак, согласно вашим комментариям, я загрузил изображения контактов..., @Mutant101was_here
Вам нужно отредактировать свой вопрос, чтобы лучше объяснить вашу проблему. Похоже, вы используете симулятор схемы, чтобы попытаться понять, как управлять ЖК-дисплеем, и что симулятор схемы сообщает вам, что вы подаете слишком большой ток на вывод светодиода подсветки ЖК-модуля. Отредактируйте свой вопрос, чтобы сказать это. Также укажите, какой ЖК-модуль моделирует симулятор., @Duncan C