Что не так с моим жидкокристаллическим дисплеем и кодом клавиатуры?
Я делаю все, что в моих силах. Кто-нибудь может мне помочь?
#include <LiquidCrystal.h>
#include <Keypad.h>
int sensePin = A0; //это в Arduino pin, который будет читать TMP36 датчик выходной
int sensorInput; //переменная, которую мы будем использовать для хранения входной сигнал датчика
double tempc; //переменная, которую мы будем использовать, чтобы сохранить температуру в градусах Цельсия
double tempf;//переменная, которую мы будем использовать для сохранения температуры в градусах Фаренгейта
int speedPin = A3;//PIN, используемый, чтобы управлять скоростью двигателя
int dir1 = A1; //мотор L293D pin3
int dir2 = A2; //привод мотора L@93D pin6
LiquidCrystal lcd(13,12,11,10,9,8);//lcd pins
const byte ROWS = 4;//константа для строк в клавиатуре
const byte COLS = 4;//константа для столбца в клавиатуре
char HexaKeys[ROWS][COLS] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'},
};
byte rowPins[ROWS] = {7,6,5,4};
byte colPins[COLS] = {3,2,1,0};
Keypad customKeypad = Keypad(makeKeymap(HexaKeys), rowPins, colPins, ROWS, COLS);
void setup()
{
pinMode(speedPin, OUTPUT);
pinMode(dir1, OUTPUT);
pinMode(dir2, OUTPUT);
lcd.begin(16, 2);
lcd.clear();
}
void loop()
{
char customKey = customKeypad.getKey();//считывание нажатой клавиши
sensorInput = analogRead(A0); //считывание аналогового датчика и сохранение его
tempc = (double)sensorInput / 1024; //поиск процента считывания входного сигнала
tempc = tempc * 5; //умножьте на 5 В, чтобы получить напряжение
tempc = tempc - 0.5; //Вычтите смещение
tempc = tempc * 100; //преобразовать в градусы
tempf = (tempc * 9.0 / 5.0) + 32.0;//преобразовать в Фаренгейт
if (customKey == '1')
{
lcd.print("TEMP");
lcd.print(tempf,"F");
lcd.setCursor(0,1);
if(tempc>=27)
{
digitalWrite(dir1,LOW);
digitalWrite(dir2,HIGH);
lcd.print("fan speed=100%");
}
else
{
digitalWrite(dir1,HIGH);
digitalWrite(dir2,HIGH);
lcd.print("fan speed=0%");
}
}
if(customKey=='2')
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMP:");
lcd.print(tempc,"C");
lcd.print(tempf,"F");
lcd.setCursor(0,1);
if(tempc>=27)
{
digitalWrite(dir1,LOW);
digitalWrite(dir2,HIGH);
lcd.print("fan speed=100%");
}
else
{
digitalWrite(dir1,LOW);
digitalWrite(dir2,HIGH);
lcd.print("fan speed=100%");
}
}
if (customKey == '3')
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMP:");
lcd.setCursor(5, 0);
lcd.print(tempc,"C");
lcd.print(tempf,"F");
if(tempc>27.0)
{
digitalWrite(dir1,LOW);
digitalWrite(dir2,HIGH);
analogWrite(speedPin,64);
lcd.setCursor(0,1);
lcd.print("fan speed=25%");
}
else
{
digitalWrite(dir1,HIGH);
digitalWrite(dir2,HIGH);
analogWrite(speedPin,64);
lcd.print("fan speed=25%");
}
}
if(customKey=='4')
{
lcd.setCursor(0,2);
lcd.print("GOOD BYE");
}
}
@abdallah, 👍-1
Обсуждение0
Смотрите также:
- ЖКИ питается больше необходимого тока
- ЖК-дисплей с I2C не распознается esp32
- Нет функции сопоставления для вызова 'DS3231 (const uint8_t &, const uint8_t &)
- Преобразовать байтовый текстовый файл в массив
- Как полностью очистить все от arduino и напечатать что-то новое?
- qMenuSystem Oled I2C не может заставить его работать
- Как запрограммировать кнопку джойстика, чтобы сбросить все?
- avrdude ser_open() can't set com-state
Пожалуйста, потратьте время, чтобы правильно отформатировать код в вопросах; это значительно облегчает помощь. Также важно объяснить, что происходит не так - "это не работает" не дает много информации. Отличная схема, однако! Что вы использовали, чтобы сделать его?, @Dave Newton
Мы не знаем, что не так, пока вы не скажете нам, с какой проблемой вы столкнулись. Кроме того, вместо того, чтобы быть программистом "копирования и вставки", сделайте шаг назад, чтобы проверить одну часть кода, чтобы убедиться, что он работает первым, комментируя все несвязанные коды(например, сначала проверьте ЖК-дисплей, затем добавьте датчик температуры, затем добавьте клавиатуру). Вы узнаете больше и лучше поймете код., @hcheung
в вашем коде нет ничего плохого, он делает именно то, на что запрограммирован ... почему вы говорите, что что-то не так?, @jsotola