2020年11月23日月曜日

M5Stack Challenge Wiper





//WiperFinalM5STACK
//by Kim Grossa
//How to use
//ButtonA wiper low
//ButtonB wiper stop
//ButtonC wiper high
//Thanks to 日記とか、工作記録とか
//Thanks to Pic World
//Thanks to VScodeでM5stackを遊ぶ


#include <M5Stack.h>

const int btnApin=39;
const int btnBpin=38;
const int btnCpin=37;

bool flagA=false;
bool flagB=false;
bool flagC=false;

int led1=16;
int t1=50;  //Low
int t2=10; //High
int t3=5000; //Stop

const double myHz =50;
const int mylevel=16;

String str11="Wiper";
String str12="by Kim Grossa";
String str13="BtnA Low";
String str14="BtnB Stop";
String str15="BtnC High";
String str16="Enjoy!";

static const int servoPin = 16;

static void buttonA_isr()
{
  flagA=true;
}

static void buttonB_isr()
{
  flagB=true;
}

static void buttonC_isr()
{
  flagC=true;
}

void setup() 
{
  M5.begin();
  M5.Power.begin();
  Serial.begin(115200);
  pinMode(led1,OUTPUT);
  ledcSetup(1,myHz,mylevel);
  ledcAttachPin(led1,1);

  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("");
  M5.Lcd.println(str16); 

  pinMode(btnApin,INPUT);
  pinMode(btnBpin,INPUT);
  pinMode(btnCpin,INPUT);

  attachInterrupt(digitalPinToInterrupt(btnApin),buttonA_isr,FALLING);
  attachInterrupt(digitalPinToInterrupt(btnBpin),buttonB_isr,FALLING);
  attachInterrupt(digitalPinToInterrupt(btnCpin),buttonC_isr,FALLING);

  delay(500);
}

void loop() 
{
  M5.update();

  if(flagA)
  {
    flagC=false;
    wipermove(t1); 
  }

  if(flagB)
  {
    flagA=false;
    flagC=false;
    flagB=false;
  }

  if(flagC) 
  { 
    flagA=false;  
    wipermove(t2);
  }

  delay(50);

}

int wipermove(int wtime)
  {
    for (int i=2300;i<=9000;i=i+100)
    {
      ledcWrite(1,i);
      delay(wtime);
    }
   
   for (int i=9000;i>2300;i=i-100)
   {
      ledcWrite(1,i);
      delay(wtime);
   }  
  }




 

0 件のコメント:

コメントを投稿