прошу помощи в создании скетча для контроля 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. Где Ваш объединённый скетч?
Это как минимум.
Спасибо за ответ - обращусь в ищу исполнителя так как надо сделать еще пару задач - на которые я точно не буду способен)))) спасибо тему можно закрывать)