Russian Arabic English French German Hungarian Japanese Romanian Turkish Ukrainian

Таймер на Arduino Nano.

      Таймер собран на Arduino Nano для автоматизации технологического процесса отпарки трикотажных шапок. Использован переключатель времени задержки на 11 позиций. В зависимости от переключения на GND соответствующего порта 12, 11, 10, 9, 8, 7, 6, 5, 4, 18, 19  время задержки увеличивается с шагом 1 с. По умолчанию в программе установлен шаг переключения 1000 милисекунд = 1 секунда задержки. Для изменения времени необходимо откорректировать значение в данной строке. По окончании одного цикла установлена задержка в 5 с до начала новой операции. Готовности таймера к работе, а также окончание интервала времени задержки подтверждается звуковым сигналом. Источник звука - пьезоизлучатель подключенный к 13 порту и GND. Управление нагрузкой - через порт 2 и порт 3. Реле подключается через оптопару и транзистор. Кнопка пуск подает GND на порт 14 и в данном устройстве была вмонтирована в педаль. Схема принципиальная настолько проста , что я считаю что рисовать нет смысла.

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif

const byte button_pin = 14;
const byte relay1_pin = 2;
const byte relay2_pin = 3;

const byte switch11 = 19;
const byte switch10 = 18;
const byte switch9 = 4;
const byte switch8 = 5;
const byte switch7 = 6;
const byte switch6 = 7;
const byte switch5 = 8;
const byte switch4 = 9;
const byte switch3 = 10;
const byte switch2 = 11;
const byte switch1 = 12;

const byte buz_pin = 13;

const int pause_ms = 5000;

void setup()
{
  digitalWrite(relay1_pin, HIGH);
  digitalWrite(relay2_pin, HIGH);
 
  pinMode(switch1, INPUT_PULLUP);
  pinMode(switch2, INPUT_PULLUP);
  pinMode(switch3, INPUT_PULLUP);
  pinMode(switch4, INPUT_PULLUP);
  pinMode(switch5, INPUT_PULLUP);
  pinMode(switch6, INPUT_PULLUP);
  pinMode(switch7, INPUT_PULLUP);
  pinMode(switch8, INPUT_PULLUP);
  pinMode(switch9, INPUT_PULLUP);
  pinMode(switch10, INPUT_PULLUP);
  pinMode(switch11, INPUT_PULLUP);
  pinMode(button_pin, INPUT_PULLUP);
  pinMode(relay1_pin, OUTPUT);
  pinMode(relay2_pin , OUTPUT);
  pinMode(buz_pin , OUTPUT);
}

void loop()
{
  while (digitalRead(button_pin) == HIGH);
  {
    tone(13, 3000, 60);
    delay (60);
    int bcd;

    bitWrite(bcd, 0, !digitalRead(switch1));
    bitWrite(bcd, 1, !digitalRead(switch2));
    bitWrite(bcd, 2, !digitalRead(switch3));
    bitWrite(bcd, 3, !digitalRead(switch4));
    bitWrite(bcd, 4, !digitalRead(switch5));
    bitWrite(bcd, 5, !digitalRead(switch6));
    bitWrite(bcd, 6, !digitalRead(switch7));
    bitWrite(bcd, 7, !digitalRead(switch8));
    bitWrite(bcd, 8, !digitalRead(switch9));
    bitWrite(bcd, 9, !digitalRead(switch10));
    bitWrite(bcd, 10, !digitalRead(switch11));

    if (bcd == 1) {
      bcd = 1;
    }
    if (bcd == 2) {
      bcd = 2;
    }
    if (bcd == 4) {
      bcd = 3;
    }
    if (bcd == 8) {
      bcd = 4;
    }
    if (bcd == 16) {
      bcd = 5;
    }
    if (bcd == 32) {
      bcd = 6;
    }
    if (bcd == 64) {
      bcd = 7;
    }
    if (bcd == 128) {
      bcd = 8;
    }
    if (bcd == 256) {
      bcd = 9;
    }
    if (bcd == 512) {
      bcd = 10;
    }
    if (bcd == 1024) {
      bcd = 11;
    }
    bcd = bcd*1000;                           // 1000 милисекунд = 1 секунда задержки.

    digitalWrite(relay1_pin, LOW);
    digitalWrite(relay2_pin, LOW);
    delay(bcd);
    digitalWrite(relay1_pin, HIGH);
    digitalWrite(relay2_pin, HIGH);
    tone(13, 2800, 300);
    delay (300);
    tone(13, 3000, 200);
    delay(pause_ms);
    tone(13, 4000, 100);
  }
}

Рейтинг@Mail.ru Яндекс.Метрика