2020年11月23日月曜日

M5Stack Challenge ShanghaiSubway







 //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 件のコメント:

コメントを投稿