18 янв. 2016 г.

замена сгоревшему Logix 740

Начало.

Итак, запустил.




Оптический датчик зацеплен ровно по схеме с сайта производителя.

Код (пока кривой, но работает):


#include <Wire.h>
#include <DS1307.h>

int BTN = 4;
int OPTIC = 3;
int RELAY = 2;

/* when to go on */
int INHOUR = 6;
int INDAY = SAT;

DS1307 clock;

void setup(){

clock.begin();
//clock.fillByYMD(2016,2,8);
//clock.fillByHMS(21,47,00);
//clock.fillDayOfWeek(MON);
//clock.setTime();//write time to the RTC chip
pinMode(BTN, INPUT);
pinMode(OPTIC, INPUT);
pinMode(RELAY, OUTPUT);
}

void loop()
{

int buttonState = digitalRead(BTN);
if(buttonState == 1 ) //start
  regen();

clock.getTime();
Serial.println(clock.dayOfMonth, DEC);
Serial.println(clock.hour, DEC);
Serial.println(clock.minute, DEC);
if (clock.hour == INHOUR && clock.dayOfMonth == INDAY && clock.minute == 10)
{
  regen();
}

delay(1000); // 1 sec
} //loop()

void regen()
{

cycle(5,0); //1
cycle(5,0); //2
cycle(0,1); //3 - long
cycle(5,0); //4
cycle(1,0); //5 - KMnO4 inject
cycle(3,0); //6 - wide
cycle(5,0); //7
cycle(5,0); //8

digitalWrite(RELAY,1);
delay(6500); //roll to zero position
digitalWrite(RELAY,0);
} //regen

void cycle ( int duration, boolean zazor )
{
  int opticState;
boolean donetime = 0;
digitalWrite(RELAY,1);
waitlabel();
waitsolid(zazor);
digitalWrite(RELAY,0);

if ( zazor == 0)

  delay(duration*60000);

} //cycle

void waitlabel ()
 {
  int opticState = digitalRead(OPTIC);
  while (opticState == 1) //wait for label
    {
    opticState = digitalRead(OPTIC);
    delay(100);
    }
 }

void waitsolid ( boolean parm )
 {
  int opticState = digitalRead(OPTIC);
  while (opticState == 0) //until label is visible
    {
    opticState = digitalRead(OPTIC);
      if (parm == 1)
        {
          digitalWrite(RELAY,0);
          delay(30000);
          digitalWrite(RELAY,1);
          delay(1000);
        }
      else
        delay(100);
    }
 } 

Комментариев нет:

Отправить комментарий