// the setup function runs once when you press reset or power the board
int sensoInput = 8;
int S1 = 9;
int S2 = 10;
int S3 = 11;
int S4 = 12;
int S5 = 13;
int n = 0;
int S1Delta = 284;
int S2Delta = 992;
int S3Delta = 1200;
int S4Delta = 1492;
int S5Delta = 2310;
int S1Period = 1350;
int S2Period = 1420;
int S3Period = 1420;
int S4Period = 1420;
int S5Period = 835;
int Pages = 10;
int S1Gap = 125;
int S2Gap = 55;
int S3Gap = 55;
int S4Gap = 55;
int S5Gap = 643;
unsigned long S1end = 0;
unsigned long S2end = 0;
unsigned long S3end = 0;
unsigned long S4end = 0;
unsigned long S5end = 0;
unsigned long SMillis=0;
unsigned long S1MillisStep=0;
unsigned long S2MillisStep=0;
unsigned long S3MillisStep=0;
unsigned long S4MillisStep=0;
unsigned long S5MillisStep=0;
void setup() {
pinMode(sensoInput, INPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(S4, OUTPUT);
pinMode(S5, OUTPUT);
digitalWrite(S1,LOW);
digitalWrite(S2,LOW);
digitalWrite(S3,LOW);
digitalWrite(S4,LOW);
digitalWrite(S5,LOW);
}
// the loop function runs over and over again forever
void loop() {
if (digitalRead(sensoInput) == LOW && (n==0) ) {
n=1;
SMillis=millis();
S1end=SMillis+S1Delta+Pages*S1Period+(Pages-1)*S1Gap;
S2end=SMillis+S2Delta+Pages*S2Period+(Pages-1)*S2Gap;
S3end=SMillis+S3Delta+Pages*S3Period+(Pages-1)*S3Gap;
S4end=SMillis+S4Delta+Pages*S4Period+(Pages-1)*S4Gap;
S5end=SMillis+S5Delta+Pages*S5Period+(Pages-1)*S5Gap;
}
if (n==1){
////////////////////////////// S1
if (SMillis+S1Delta<=millis() && millis()<=S1end){
if (S1MillisStep==0) {
S1MillisStep=millis();
digitalRead(S1)== HIGH;
}
if (S1MillisStep+S1Period<=millis()) {
if (digitalRead(S1)== HIGH ) digitalWrite(S1,LOW);
if (S1MillisStep+S1Period+S1Gap<=millis()){
digitalWrite(S1,HIGH);
S1MillisStep=millis();
}
}
}
else if (digitalRead(S1)== HIGH ) digitalWrite(S1,LOW);
////////////////////////////// S2
if (SMillis+S2Delta<=millis() && millis()<=S2end){
if (S2MillisStep==0) {
S2MillisStep=millis();
digitalRead(S2)== HIGH;
}
if (S2MillisStep+S2Period<=millis()) {
if (digitalRead(S2)== HIGH ) digitalWrite(S2,LOW);
if (S2MillisStep+S2Period+S2Gap<=millis()){
digitalWrite(S2,HIGH);
S2MillisStep=millis();
}
}
}
else if (digitalRead(S2)== HIGH ) digitalWrite(S2,LOW);
////////////////////////////// S3
if (SMillis+S3Delta<=millis() && millis()<=S3end){
if (S3MillisStep==0) {
S3MillisStep=millis();
digitalRead(S3)== HIGH;
}
if (S3MillisStep+S3Period<=millis()) {
if (digitalRead(S3)== HIGH ) digitalWrite(S3,LOW);
if (S3MillisStep+S3Period+S3Gap<=millis()){
digitalWrite(S3,HIGH);
S3MillisStep=millis();
}
}
}
else if (digitalRead(S3)== HIGH ) digitalWrite(S3,LOW);
////////////////////////////// S4
if (SMillis+S4Delta<=millis() && millis()<=S4end){
if (S4MillisStep==0) {
S4MillisStep=millis();
digitalRead(S4)== HIGH;
}
if (S4MillisStep+S4Period<=millis()) {
if (digitalRead(S4)== HIGH ) digitalWrite(S4,LOW);
if (S4MillisStep+S4Period+S4Gap<=millis()){
digitalWrite(S4,HIGH);
S4MillisStep=millis();
}
}
}
else if (digitalRead(S4)== HIGH ) digitalWrite(S4,LOW);
////////////////////////////// S5
if (SMillis+S5Delta<=millis() && millis()<=S5end){
if (S5MillisStep==0) {
S5MillisStep=millis();
digitalRead(S5)== HIGH;
}
if (S5MillisStep+S5Period<=millis()) {
if (digitalRead(S5)== HIGH ) digitalWrite(S5,LOW);
if (S5MillisStep+S5Period+S5Gap<=millis()){
digitalWrite(S5,HIGH);
S5MillisStep=millis();
}
}
}
else if (digitalRead(S5)== HIGH ) digitalWrite(S5,LOW);
}
}