// Every-14
// 2020.12.21
// Arduino Nano Every を使用する。
// PWM周波数を15.7kHzにする。

#define  UNTEN 11
#define  VOL   A0
#define  GEN   A2
#define  S2SIN  9
#define  SEN1  7
#define  SEN3  3
#define  F1  5

  int i;
  int sen1;
  int sen3;
  int vol;
  int unten;
  int gen;

void setup() {
  pinMode(UNTEN,INPUT);
  pinMode(VOL,INPUT);
  pinMode(GEN,INPUT);
  pinMode(SEN1,INPUT);
  pinMode(SEN3,INPUT);
  pinMode(F1,OUTPUT);
  pinMode(S2SIN,OUTPUT);
  
  TCA0.SINGLE.CTRLA = 0b0101; //PWM周波数の変更
  
  analogWrite(F1,0);
  digitalWrite(S2SIN,HIGH); //信号は赤
}

void loop() {
  unten = digitalRead(UNTEN);    //運転開始を待つ
  while (unten == LOW) {
    unten = digitalRead(UNTEN);
    analogWrite(F1,0);
  }

//****** 出発進行 ************
  vol=analogRead(VOL)/4;
  analogWrite(F1,vol*50/255);       //室内灯をON
  digitalWrite(S2SIN,LOW);  //信号を緑にする
  delay(16000); 
  for(i=50;i<255;i++){      //加速する
    vol=analogRead(VOL)/4;
    delay(200);
    analogWrite(F1,vol*i/255);
  }

  sen3 = digitalRead(SEN3);  //S3を待つ
  while (sen3 == HIGH) {
    vol=analogRead(VOL)/4;
    delay(10);
    analogWrite(F1,vol);
    sen3 = digitalRead(SEN3);
  }
  
  sen1 = digitalRead(SEN1);  //S1を待つ
  while (sen1 == HIGH) {
    vol=analogRead(VOL)/4;
    delay(10);
    analogWrite(F1,vol);
    sen1 = digitalRead(SEN1);
  }
  
  sen3 = digitalRead(SEN3);  //S3を待つ
  while (sen3 == HIGH) {
    vol=analogRead(VOL)/4;
    delay(10);
    analogWrite(F1,vol);
    sen3 = digitalRead(SEN3);
  }

  sen1 = digitalRead(SEN1);  //S1を待つ
  while (sen1 == HIGH) {
    vol=analogRead(VOL)/4;
    delay(10);
    analogWrite(F1,vol);
    sen1 = digitalRead(SEN1);
  }
  digitalWrite(S2SIN,HIGH);  //信号を赤にする
  for(i=255;i>50;i--){     //減速
    gen=analogRead(GEN)/3;
    vol=analogRead(VOL)/4;
    analogWrite(F1,vol*i/255);
    delay(gen);
  }
  delay(24000);
  analogWrite(F1,0);    //消灯
  delay(60000);
  
}