//ShanghaiSubwayM5STACKFinal
//by Kim Grossa
//How to use
//ButtonA The train runs counterclockwize
//ButtonB Reset M5STACK
//ButtonC The train runs clockwize
//Run this softwarte connectiong to PC
//Run Battery-only makes misses sometime
#include <M5Stack.h>
int st1=3;
int st2=5;
int st3=2;
int st4=17;
int st5=16;
int st6=19;
int t1=2000;
int t2=200;
int t3=1000;
int ct=3;
String str11="Shanghai Subway";
String str12="by Kim Grossa";
String str13="BtnA CClockwize";
String str14="BtnB Reset";
String str15="BtnC Clockwize";
String str16="Enjoy!";
String str17="Run this software";
String str18="Conneting to PC";
String str1="Zongshan Park";
String str2="Jingsu Park";
String str3="Jing'ran Temple";
String str4="West Nanjing Rd.";
String str5="People's Square";
String str6 ="East Nanjing Rd.";
String strnow="Now";
String strnext="Next";
void setup()
{
M5.begin();
M5.Power.begin();
pinMode(st1,OUTPUT);
pinMode(st2,OUTPUT);
pinMode(st3,OUTPUT);
pinMode(st4,OUTPUT);
pinMode(st5,OUTPUT);
pinMode(st6,OUTPUT);
M5.Lcd.setTextSize(3);
M5.Lcd.setCursor(0,0);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.println(str11);
M5.Lcd.println(str12);
M5.Lcd.println(str17);
M5.Lcd.println(str18);
M5.Lcd.println("");
M5.Lcd.println(str13);
M5.Lcd.println(str14);
M5.Lcd.println(str15);
M5.Lcd.println("");
M5.Lcd.println(str16);
}
void loop()
{
if(M5.BtnA.wasPressed())
{
runCCW();
}
if(M5.BtnB.wasPressed())
{
esp_restart();
}
if(M5.BtnC.wasPressed())
{
runCW();
}
M5.update();
}
void runCW()
{
M5.Lcd.fillScreen(BLACK); //Now station1
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str1);
digitalWrite(st1,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station2
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str2);
digitalWrite(st1,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st2,HIGH);
delay(t2);
digitalWrite(st2,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station2
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str2);
digitalWrite(st2,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station3
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str3);
digitalWrite(st2,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st3,HIGH);
delay(t2);
digitalWrite(st3,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station3
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str3);
digitalWrite(st3,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station4
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str4);
digitalWrite(st3,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st4,HIGH);
delay(t2);
digitalWrite(st4,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station4
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str4);
digitalWrite(st4,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station5
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str5);
digitalWrite(st4,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st5,HIGH);
delay(t2);
digitalWrite(st5,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station5
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str5);
digitalWrite(st5,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station6
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str6);
digitalWrite(st5,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st6,HIGH);
delay(t2);
digitalWrite(st6,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station6
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str6);
digitalWrite(st6,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station1
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str1);
digitalWrite(st6,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st1,HIGH);
delay(t2);
digitalWrite(st1,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station1
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str1);
digitalWrite(st1,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //One cycle end
M5.Lcd.setCursor(0,0);
M5.Lcd.println("Arrived at the last station");
M5.Lcd.println("");
M5.Lcd.println(str13);
M5.Lcd.println(str14);
M5.Lcd.println(str15);
digitalWrite(st1,LOW);
}
void runCCW()
{
M5.Lcd.fillScreen(BLACK); //Now station1
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str1);
digitalWrite(st1,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station6
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str6);
digitalWrite(st1,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st6,HIGH);
delay(t2);
digitalWrite(st6,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station6
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str6);
digitalWrite(st6,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station5
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str5);
digitalWrite(st6,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st5,HIGH);
delay(t2);
digitalWrite(st5,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station5
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str5);
digitalWrite(st5,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station4
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str4);
digitalWrite(st5,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st4,HIGH);
delay(t2);
digitalWrite(st4,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station4
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str4);
digitalWrite(st4,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station3
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str3);
digitalWrite(st4,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st3,HIGH);
delay(t2);
digitalWrite(st3,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station3
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str3);
digitalWrite(st3,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station2
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str2);
digitalWrite(st3,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st2,HIGH);
delay(t2);
digitalWrite(st2,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station2
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str2);
digitalWrite(st2,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //Go for station1
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnext);
M5.Lcd.println(str1);
digitalWrite(st2,LOW);
for(int i=0;i<ct;i=i+1)
{
digitalWrite(st1,HIGH);
delay(t2);
digitalWrite(st1,LOW);
delay(t2);
}
delay(t3);
M5.Lcd.fillScreen(BLACK); //Now station1
M5.Lcd.setCursor(0,0);
M5.Lcd.println(strnow);
M5.Lcd.println(str1);
digitalWrite(st1,HIGH);
delay(t1);
M5.Lcd.fillScreen(BLACK); //One cycle end
M5.Lcd.setCursor(0,0);
M5.Lcd.println("Arrived at the last station");
M5.Lcd.println("");
M5.Lcd.println(str13);
M5.Lcd.println(str14);
M5.Lcd.println(str15);
digitalWrite(st1,LOW);
}
0 件のコメント:
コメントを投稿