#define OPEN_BUTTON 6
#define CLOSE_BUTTON 7
#define STEP_OPEN 2
#define STEP_CLOSE 4
#define ACC_DETECT 10
int accState = 0;
void setup()
{
//establish switch pins
pinMode(OPEN_BUTTON, INPUT_PULLUP);
pinMode(CLOSE_BUTTON, INPUT_PULLUP);
pinMode(STEP_OPEN, INPUT_PULLUP);
pinMode(STEP_CLOSE, INPUT_PULLUP);
//establish +ACC detection pin
pinMode(ACC_DETECT,INPUT_PULLUP);
//read the state of the +ACC detection pin
accState = digitalRead(ACC_DETECT);
if (accState==LOW)
{
//initial power state is on
sk93_screenUp();
}
else
{
//initial power state is off
sk93_screenDown();
}
//establish motor direction toggle pins
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
//establish motor brake pins
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
}
void loop(void)
{
int switchValue;
switchValue = digitalRead(ACC_DETECT);
if (switchValue != accState)
{
if (switchValue==LOW)
{
//power has been turned on
sk93_screenUp();
}
else
{
//power has been turned off
sk93_screenDown();
}
accState = switchValue;
}
switchValue = digitalRead(OPEN_BUTTON);
if (switchValue==LOW)
{
//screenUp();
sk93_screenUp();
}
switchValue = digitalRead(CLOSE_BUTTON);
if (switchValue==LOW)
{
sk93_screenDown();
}
switchValue = digitalRead(STEP_OPEN);
if (switchValue==LOW)
{
stepOpen();
}
switchValue = digitalRead(STEP_CLOSE);
if (switchValue==LOW)
{
stepClose();
}
}
void sk93_screenUp(void)
{
for (int i=0; i < 14; i++)
{
digitalWrite(9, LOW); //ENABLE CH A
digitalWrite(8, HIGH); //DISABLE CH B
digitalWrite(12, HIGH); //Sets direction of CH A
analogWrite(3, 255); //Moves CH A
delay(25);
digitalWrite(9, HIGH); //DISABLE CH A
digitalWrite(8, LOW); //ENABLE CH B
digitalWrite(13, LOW); //Sets direction of CH B
analogWrite(11, 255); //Moves CH B
delay(25);
digitalWrite(9, LOW); //ENABLE CH A
digitalWrite(8, HIGH); //DISABLE CH B
digitalWrite(12, LOW); //Sets direction of CH A
analogWrite(3, 255); //Moves CH A
delay(25);
digitalWrite(9, HIGH); //DISABLE CH A
digitalWrite(8, LOW); //ENABLE CH B
digitalWrite(13, HIGH); //Sets direction of CH B
analogWrite(11, 255); //Moves CH B
delay(25);
}
//set all pins off after operation
digitalWrite(8, LOW); //DISABLE CH B
digitalWrite(12, LOW); //DISABLE CH B
digitalWrite(9, LOW); //DISABLE CH B
digitalWrite(13, LOW); //DISABLE CH B
analogWrite(3,0);
analogWrite(11,0);
}
void sk93_screenDown(void)
{
for (int i=0; i < 14; i++)
{
digitalWrite(9, LOW); //ENABLE CH A
digitalWrite(8, HIGH); //DISABLE CH B
digitalWrite(12, HIGH); //Sets direction of CH A
analogWrite(3, 255); //Moves CH A
delay(25);
digitalWrite(9, HIGH); //DISABLE CH A
digitalWrite(8, LOW); //ENABLE CH B
digitalWrite(13, HIGH); //Sets direction of CH B
analogWrite(11, 255); //Moves CH B
delay(25);
digitalWrite(9, LOW); //ENABLE CH A
digitalWrite(8, HIGH); //DISABLE CH B
digitalWrite(12, LOW); //Sets direction of CH A
analogWrite(3, 255); //Moves CH A
delay(25);
digitalWrite(9, HIGH); //DISABLE CH A
digitalWrite(8, LOW); //ENABLE CH B
digitalWrite(13, LOW); //Sets direction of CH B
analogWrite(11, 255); //Moves CH B
delay(25);
}
//set all pins off after operation
digitalWrite(8, LOW); //DISABLE CH B
digitalWrite(12, LOW); //DISABLE CH B
digitalWrite(9, LOW); //DISABLE CH B
digitalWrite(13, LOW); //DISABLE CH B
analogWrite(3,0);
analogWrite(11,0);
}
void stepOpen(void)
{
if (digitalRead(STEP_OPEN)==LOW)
digitalWrite(9, LOW); //ENABLE CH A
digitalWrite(8, HIGH); //DISABLE CH B
digitalWrite(12, HIGH); //Sets direction of CH A
analogWrite(3, 255); //Moves CH A
delay(1000);
digitalWrite(9, HIGH); //DISABLE CH A
digitalWrite(8, LOW); //ENABLE CH B
digitalWrite(13, LOW); //Sets direction of CH B
analogWrite(11, 255); //Moves CH B
delay(1000);
digitalWrite(9, LOW); //ENABLE CH A
digitalWrite(8, HIGH); //DISABLE CH B
digitalWrite(12, LOW); //Sets direction of CH A
analogWrite(3, 255); //Moves CH A
delay(1000);
digitalWrite(9, HIGH); //DISABLE CH A
digitalWrite(8, LOW); //ENABLE CH B
digitalWrite(13, HIGH); //Sets direction of CH B
analogWrite(11, 255); //Moves CH B
delay(1000);
}
void stepClose(void)
{
if (digitalRead(STEP_CLOSE)==LOW)
digitalWrite(9, LOW); //ENABLE CH A
digitalWrite(8, HIGH); //DISABLE CH B
digitalWrite(12, HIGH); //Sets direction of CH A
analogWrite(3, 255); //Moves CH A
delay(1000);
digitalWrite(9, HIGH); //DISABLE CH A
digitalWrite(8, LOW); //ENABLE CH B
digitalWrite(13, HIGH); //Sets direction of CH B
analogWrite(11, 255); //Moves CH B
delay(1000);
digitalWrite(9, LOW); //ENABLE CH A
digitalWrite(8, HIGH); //DISABLE CH B
digitalWrite(12, LOW); //Sets direction of CH A
analogWrite(3, 255); //Moves CH A
delay(1000);
digitalWrite(9, HIGH); //DISABLE CH A
digitalWrite(8, LOW); //ENABLE CH B
digitalWrite(13, LOW); //Sets direction of CH B
analogWrite(11, 255); //Moves CH B
delay(1000);
}