Ардуино. помощь в написании кода
всем привет. хочу сделать так, чтобы при нужном значении температуры включался светодиод (в дальнейшем будет замена на реле) с этим проблем не возникло, на просторах интернета нашелся код для этого. но я хочу, чтобы значение температуры можно было менять, например двумя кнопками. первая кнопка увеличивает значение, вторая уменьшает.
есть два кода. но не получается их соединить в один код
первый код это включение светодиода при заданной температуре. то есть в коде указываешь необходимое значение
второй код это счетчик с двумя кнопками. при нажатии первого числовое значение прибавляется, второго - уменьшается
в теме ардуино новичок. поэтому прошу тапками не бросаться. пытался искать в интернете и самостоятельно написать код. но всегда выдает ошибку
поэтому кто знает как сделать изменение значения необходимой температуры кнопками. пожалуйста подскажите. заранее спасибо
1 код:
#include
#include
#include
#include
#define ONE_WIRE_BUS 2 //D2 пин к которому подключен датчик
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float temp;
#define fan 4 //D4 пин светодиода
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
int maxTemp = 30; // задаем значение температуры при котором включается светодиод
void setup() {
pinMode(fan, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
sensors.begin();
}
void loop() {
delay(2000);
sensors.requestTemperatures();
temp = sensors.getTempCByIndex(0);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0,0);
display.println("Temreratur");
display.setTextSize(3);
display.setCursor(10,30);
display.println(temp);
display.setCursor(0,30);
display.setCursor(105,30);
display.println("C");
display.display();
sensors.requestTemperatures();
float t = sensors.getTempCByIndex(0);
// проверяем, были ли ошибки при считывании и, если были, то начинаем заново
if (isnan(t)) {
Serial.println("Failed to read from sensor!");
return;
}
if(t > maxTemp) {
digitalWrite(fan, HIGH);
} else {
digitalWrite(fan, LOW);
}
}
2 код:
const int button = 5; // D5 вывод контроллера для кнопки 1
const int button2 = 7; // D7 вывод контроллера для кнопки 2
int count = 0; // переменная для подсчета нажатий на кнопку
int button_old = 1; // предидущее значение входа для отлавливания момента нажатия
void setup() {
//инициализация связи с монитором порта
Serial.begin(9600);
//конфигурация входа контроллера и подключение внутреннего подтягивающего резистора
pinMode(button, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
}
void loop() {
if ((digitalRead(button)==LOW)&&(button_old==1))
{
count = count + 1;
Serial.println(count);
}
button_old = digitalRead(button);
delay(100);
if ((digitalRead(button2)==LOW)&&(button_old==1))
{
count = count - 1;
Serial.println(count);
}
button_old = digitalRead(button2);
delay(100);
}
Вижу, что тебе не ответ нужен, а повыпендриваться забанивая нормальные ответы.
Лучше найди готовый скетч "Термостат", А писать для тебя (да еще и бесплатно ) никто не будет.
Ты даешь две не законченных программы и хочешь чтобы их дописали и объединили.
Посоветовать пару строчек еще можно, так что задавай конкретные вопросы, или предлагай оплату.
Пробуй дальше и все заработает. Обучение программированию всегда гемор. Во-первых нужен код отлавливающий нажатие кнопки, и подавляющий ее дребезг. Этот код возвратит нажатую кнопку. А затем проверяем какая кнопка была нажата и согласно результату, инкрементируем или декрементируем значение уставки.