// Every-15-1
// 2021.1.3
// Arduino Nano Every を使用する。
// PWM周波数を15.7kHzにする。
#define UNTEN 17
#define VOL A5
#define GEN A7
#define S4SIN 14
#define S5SIN 15
#define SEN1 4
#define SEN2 3
#define SEN3 2
#define F1 6
#define P1 8
#define P2 10
int i;
int sen1;
int sen2;
int sen3;
int vol;
int unten;
int gen;
void setup() {
pinMode(UNTEN,INPUT);
pinMode(VOL,INPUT);
pinMode(GEN,INPUT);
pinMode(SEN1,INPUT);
pinMode(SEN2,INPUT);
pinMode(SEN3,INPUT);
pinMode(F1,OUTPUT);
pinMode(S4SIN,OUTPUT);
pinMode(S5SIN,OUTPUT);
pinMode(P1,OUTPUT);
pinMode(P2,OUTPUT);
TCA0.SINGLE.CTRLA = 0b0101; //PWM周波数の変更
analogWrite(F1,0);
digitalWrite(S4SIN,HIGH); //信号は赤
digitalWrite(S5SIN,HIGH); //信号は赤
digitalWrite(P1,HIGH);
delay(8000);
digitalWrite(P2,HIGH);
delay(8000);
digitalWrite(P1,LOW);
delay(8000);
digitalWrite(P2,LOW);
delay(8000);
}
void loop() {
unten = digitalRead(UNTEN);
while (unten == LOW) {
unten = digitalRead(UNTEN);
analogWrite(F1,0);
}
//****** 列車A 周回モード ************
digitalWrite(S4SIN,LOW); //信号を緑にする
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol*50/255); //室内灯点灯
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(100);
analogWrite(F1,vol);
sen3 = digitalRead(SEN3);
}
delay(8000);
sen1 = digitalRead(SEN1); //S1を待つ
while (sen1 == HIGH) {
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol);
sen1 = digitalRead(SEN1);
}
sen3 = digitalRead(SEN3); //S3を待つ
while (sen3 == HIGH) {
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol);
sen3 = digitalRead(SEN3);
}
digitalWrite(S4SIN,HIGH); //信号を赤にする
sen1 = digitalRead(SEN1);
while (sen1 == HIGH) {
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol);
sen1 = digitalRead(SEN1);
}
for(i=255;i>50;i--){ //減速
gen=analogRead(GEN)/3;
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol*i/255);
delay(gen);
}
delay(40000);
analogWrite(F1,0); //停車
delay(24000);
//****** 列車B 周回モード * ************
digitalWrite(P1,HIGH); //P1を反位に
delay(8000);
digitalWrite(P2,HIGH); //P2を反位に
delay(8000);
digitalWrite(S5SIN,LOW); //信号を緑にする
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol*50/255); //室内灯点灯
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(100);
analogWrite(F1,vol);
sen3 = digitalRead(SEN3);
}
delay(8000);
sen2 = digitalRead(SEN2); //S2を待つ
while (sen2 == HIGH) {
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol);
sen2 = digitalRead(SEN2);
}
sen3 = digitalRead(SEN3); //S3を待つ
while (sen3 == HIGH) {
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol);
sen3 = digitalRead(SEN3);
}
digitalWrite(S5SIN,HIGH); //信号を赤にする
sen2 = digitalRead(SEN2);
while (sen2 == HIGH) {
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol);
sen2 = digitalRead(SEN2);
}
for(i=255;i>50;i--){ //減速
gen=analogRead(GEN)/3;
vol=analogRead(VOL)/4;
delay(100);
analogWrite(F1,vol*i/255);
delay(gen);
}
delay(40000);
analogWrite(F1,0); //停車
digitalWrite(P1,LOW); //P1を定位に
delay(8000);
digitalWrite(P2,LOW); //P2を定位に
delay(24000);
}