Как соединить два скетча в один

Serega-K
Offline
Зарегистрирован: 15.11.2019

Здравствуйте. Я понимаю что я повторяюсь, но я не могу никак это сделать, сколько об это не читал об этом. Есть реле работает от ардуино нано, реле включается от кнопке, и работает пока кнопка нажата, а счетчик на втором ардуино нано с дисплеем ТМ1637 считает сколько раз включается реле. На двух ардуино работаен, а мне бы это все в одно ардуино влить, может кто помочь, у меня не получается. За ранее всем огромное спасибо!

скетч реле

#define k1 2
#define butt 5 // кнопка

void setup() {
  
  pinMode (k1, OUTPUT); //назначаем пины на вывод
  pinMode (butt, INPUT_PULLUP);
  
}

void loop() {

  if (digitalRead(butt) == LOW) //когда нажата кнопка тогда и работает
  {
    digitalWrite (k1, HIGH);
    delay (150);
    digitalWrite (k1, LOW);

    delay (150);

  }

}

скетч счетчика

#include "TM1637.h"

void DispUpdate(void);
boolean DebounceButton(int ScanPort, boolean last);

#define INC 2 //Пин подключения датчика готовой продукции  
#define RES 3 //Пин подключения кнопки сброса счетчика

#define CLK 4 //TM1637 CLK
#define DIO 5 //TM1637 DIO

int8_t CountDisp[] = {0x00,0x00,0x00,0x00};

static int Counter = 0; //Значение счетчика будет сохраняться здесь

bool INCCurr = false;
bool INCPrev = false;

/*
 * Создаем объект tm1637 класса TM1637
 * в качестве параметров передаём ему
 * номера пинов к которым подключен модуль
 * с дисплеем
 */
TM1637 tm1637(CLK, DIO);

void setup() 
{
  pinMode(INC, INPUT);  //Определяем пины подключения кнопки сброса 
  pinMode(RES, INPUT);  //и датчика готовой продукции как входные

  //Инициализация дисплея на базе драйвера TM1637
  tm1637.init();
  /*
   * Установка яркости свечения сегментов
   * возможные значения:  BRIGHT_TYPICAL либо 2
   *                      BRIGHT_DARKEST либо 0
   *                      BRIGHTEST      либо 7
   * Также можно вводить значения от 0 до 4
   * при вводе начения свыше 4 визуального различия   
   * в яркости свечения не наблюдается поэтому решено
   * остановиться на 3
   */
  tm1637.set(2);  
}

void loop()
{
  //Обнуление счетчика
  if(digitalRead(RES))
  {
    Counter = 0;
  }
  
  //Проверка кнопки инкремента - нажатие и обработка "Антидребезг"
  INCCurr = DebounceButton(INC, INCPrev);
  
  if(INCPrev == false && INCCurr == true)
  {
    if(Counter == 9999)
    {
      Counter = 0;
    }
    else
    {
      Counter ++;
    }
  }
  INCPrev = INCCurr;
  
  DispUpdate();
}

//Функция подавления дребезга контактов концевого датчика
boolean DebounceButton(int ScanPort, boolean last)
{
  boolean current = digitalRead(ScanPort);
  if(current != last)
  {
    delay(10);
    current = digitalRead(ScanPort); 
  }
  return current;
}

//Функция обновления дисплея
//Вывод значения счетчика на дисплей
void DispUpdate(void)
{
  int intValue = Counter;
  int divValue;
  
  for(int i = 3; i >= 0; i --)
  {
    divValue = intValue % 10;
    intValue = intValue / 10;
    
    CountDisp[i] = divValue;
  }
  tm1637.display(CountDisp);
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Попробуйте заказать в коммерческом разделе. Здесь, возможно, кто-то и напишет, если поупражняться захочет, но вероятность невелика. А там за небольшую денежку всё сделают. С праздником!

Serega-K
Offline
Зарегистрирован: 15.11.2019

ЕвгенийП пишет:

Попробуйте заказать в коммерческом разделе. Здесь, возможно, кто-то и напишет, если поупражняться захочет, но вероятность невелика. А там за небольшую денежку всё сделают. С праздником!

Спасибо и вас с праздником 

Ulliss
Offline
Зарегистрирован: 16.09.2019

А в чем задача суммарного скетча? Считать количество нажатий кнопки из первого?