2020年11月23日月曜日
M5Stack Challenge Wiper
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);
}
M5Stack Challenge Lottery
//Lottery Final M5STACK
//by Kim Grossa
//How to use
//1 Press the A button
//2 Five leds start to light on and ligtt off
//3 Long press the A button again
//4 One led is on at random
//Thanks to ymoriblog
#include <M5Stack.h>
int GreenLed=3;
int YellowLed=16;
int RedLed=17;
int BlueLed=2;
int WhiteLed=5;
int t1=50;
int val1=0;
int oldval1=0;
int state1=-1;
long number=0;
String str11="Lottery";
String str12="by Kim Grossa";
String str13="Press btnC";
String str14="Rotation starts";
String str15="Long press btnC ";
String str16="Rotation stops";
String str17="Enjoy!";
void setup()
{
M5.begin();
M5.Power.begin();
pinMode(GreenLed,OUTPUT);
pinMode(YellowLed,OUTPUT);
pinMode(RedLed,OUTPUT);
pinMode(BlueLed,OUTPUT);
pinMode(WhiteLed,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("");
M5.Lcd.println(str13);
M5.Lcd.println(str14);
M5.Lcd.println(str15);
M5.Lcd.println(str16);
M5.Lcd.println("");
M5.Lcd.println(str17);
digitalWrite(GreenLed,LOW);
digitalWrite(YellowLed,LOW);
digitalWrite(RedLed,LOW);
digitalWrite(BlueLed,LOW);
digitalWrite(WhiteLed,LOW);
}
void loop()
{
M5.update();
if((M5.BtnC.wasPressed())&&(!oldval1))
{
if(state1==1)
{
state1=0;
}
else
{
state1=1;
}
delay(10);
oldval1=val1;
number =random(1,6);
}
if(state1==1)
{
startrotate();
}
else if(state1==-1)
{
alloff();
}
else
{
bingo();
}
}
void startrotate()
{
digitalWrite(GreenLed,HIGH);
delay(t1);
digitalWrite(GreenLed,LOW);
delay(t1);
digitalWrite(YellowLed,HIGH);
delay(t1);
digitalWrite(YellowLed,LOW);
delay(t1);
digitalWrite(RedLed,HIGH);
delay(t1);
digitalWrite(RedLed,LOW);
delay(t1);
digitalWrite(BlueLed,HIGH);
delay(t1);
digitalWrite(BlueLed,LOW);
delay(t1);
digitalWrite(WhiteLed,HIGH);
delay(t1);
digitalWrite(WhiteLed,LOW);
delay(t1);
}
void alloff()
{
digitalWrite(GreenLed,LOW);
digitalWrite(YellowLed,LOW);
digitalWrite(RedLed,LOW);
digitalWrite(BlueLed,LOW);
digitalWrite(WhiteLed,LOW);
}
void bingo()
{
switch(number)
{
case 1:
digitalWrite(GreenLed,HIGH);
break;
case 2:
digitalWrite(YellowLed,HIGH);
break;
case 3:
digitalWrite(RedLed,HIGH);
break;
case 4:
digitalWrite(BlueLed,HIGH);
break;
case 5:
digitalWrite(WhiteLed,HIGH);
break;
}
}