2020年11月23日月曜日

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;

    }

    

  }



  

  

0 件のコメント:

コメントを投稿