прошу помощи в создании скетча для контроля 4я реле с 2х кнопок и вывод инфо о батареи на экран
- Войдите на сайт для отправки комментариев
Втр, 26/10/2021 - 22:31
Друзья всем добрый день или вечер)
прошу в помощи объединения двух скетч и помочь и сказать как сделать рабочий скетч:
задачи-
1- надо контролировать 3 реле с одной кнопки (при нажатии кнопки 1- включении и выключение реле 1 и далее включение и выключение реле 2 и далее реле 3)
2- надо контролировать реле 4 с кнопки 2 (вкл -выкл)- независимо от задачи 1
3- надо выводить на OLED12864 i2c инфо вольтметр и состояние задачи
//скетч 1- вкл и выкл реле 1-4 по кнопкам 1-2 boolean btn1; boolean btn2; boolean btn1_flag = 0; boolean btn2_flag = 0; unsigned long last_press; byte press_count = 0; boolean flag = 0; void setup() { pinMode(2, INPUT_PULLUP); // сюда подключена кнопка pinMode(3, INPUT_PULLUP); Serial.begin(9600); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); digitalWrite (5, 0); digitalWrite (6, 0); digitalWrite (7, 0); digitalWrite (8, 0); } void loop() { btn1 = !digitalRead(2); // считать текущее положение кнопки if (btn1 == 1 && btn1_flag == 0 && millis() - last_press > 50) { btn1_flag = 1; if (press_count > 3){ press_count = 0; } press_count ++; if (press_count == 1) { Serial.println("realy 1"); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 1); } if (press_count == 2) { Serial.println("relay 2"); digitalWrite(5, 0); digitalWrite(6, 1); digitalWrite(7, 1); } if (press_count == 3) { Serial.println("relay 3"); digitalWrite(5, 1); digitalWrite(6, 0); digitalWrite(7, 1); } if (press_count == 4) { Serial.println("relay 4"); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 0); } if (press_count == 5) { Serial.println("relay 5"); digitalWrite(5, 1); digitalWrite(6, 1); digitalWrite(7, 1); } last_press = millis(); } if (btn1 == 0 && btn1_flag == 1 && press_count >= 0 && millis() - last_press > 50) { btn1_flag = 0; last_press = millis(); } btn2 = !digitalRead(3); // считать текущее положение кнопки if (btn2 == 1 && btn2_flag == 0 && millis() - last_press > 50) { // если кнопка НАЖАТА, до этого была была ОТПУЩЕНА btn2_flag = 1; // запоминаем, что нажимали кнопку flag = !flag; // инвертируем флажок last_press = millis(); // запоминаем время digitalWrite(8, flag); // подаём сигнал на пин реле / светодиода } if (btn2 == 0 && btn2_flag == 1) { // если кнопка ОТПУЩЕНА, и до этого была НАЖАТА btn2_flag = 0; // запоминаем, что отпустили кнопку } }
вот второй скетч
//при включении лого- далее вольтметр и состояние задачи #include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) #define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); int analogInput = A0; float vin = 0; void setup() { Serial.begin(9600); // SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) { Serial.println(F("SSD1306 allocation failed")); for(;;); // Don't proceed, loop forever } display.display(); delay(2000); // Pause for 3 seconds display.clearDisplay(); display.invertDisplay(true); delay(1000); display.invertDisplay(false); delay(1000); display.clearDisplay(); } void loop() { vin = float(analogRead(analogInput))/18.25; display.clearDisplay(); display.setTextSize(3); // Draw 2X-scale text display.setTextColor(SSD1306_WHITE); // Draw white text display.setCursor(4, 0); display.println("V:"); display.setCursor(54, 0); display.println(vin ); display.setCursor(4, 40); display.println("MODE 1"); delay (2000); display.display(); }
при объединении двух скетч в один кнопки не работают (то есть реле)
прошу намекнуть куда копать ? спасибо что прочитали и надеюсь на пинок который откроет мне глаза)
Глаза откроют только знания, которых (судя по всему) у Вас нет. Если нужно «просто сделать» - обратитесь в раздел «Ищу исполнителя». Если самому разобраться, то:
1. Где Ваш объединённый скетч?
Это как минимум.
Спасибо за ответ - обращусь в ищу исполнителя так как надо сделать еще пару задач - на которые я точно не буду способен)))) спасибо тему можно закрывать)