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