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);
   }  
  }




 

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;

    }

    

  }



  

  

2020年11月3日火曜日

Arduino試験板2




 
//WiperFinal
//How to use
//SW1 On SW2 On rotates quickly works well
//SW1 On SW2 Off rotates slowly doesn't works properly
//SW1 Off stop works well

//Wiper
#include <VarSpeedServo.h>
VarSpeedServo myservo;

void setup() 
{
  //Wiper
  pinMode(10,INPUT);
  pinMode(11,INPUT);
  myservo.attach(9);
}

void loop() 
{  
  //Wiper
  if((digitalRead(10))&&(!digitalRead(11)))
  {
    slow();   
  }

  if((digitalRead(10))&&(digitalRead(11)))
  {
    fast();   
  }  
}

void slow()
{
 myservo.write(20,50,true);
 myservo.write(130,50,true);  
}

void fast()
{
  myservo.write(20,180,true);
  myservo.write(130,180,true);  
}

//LotteryFinal
//How to use
//PB1 on rotates
//PB2 on stop
//PB1 re-on not work push the reset button(Arduino)

//Lottery
#include <AccelStepper.h>
AccelStepper stepper=AccelStepper(8,5,7,6,8);

int val1=0;
int old_val1=0;
int state1=0;
int val2=0;
int old_val2=0;
int state2=0;

void setup() 
  //Lottery 
  pinMode(3,INPUT);
  pinMode(4,INPUT);
  stepper.setMaxSpeed(1000);
}

void loop() 
  //Lottery
  val1=digitalRead(3);
  if((val1)&&(!old_val1))
  {
    state1=1-state1;
  }
  old_val1=val1;

  if(state1)
  {
    stepper.setSpeed(1000);
    stepper.runSpeed();
  }

  val2=digitalRead(4);
  if((val2)&&(!old_val2))
  {
    state2=1-state2;
  }
  old_val2=val2;

  if(state2)
  {
    stepper.stop();
    stepper.runToPosition(); 
  } 
}





2020年10月25日日曜日

Arduino試験板




 


//Shanghai Subway
//How to use
//Start Push the red leftside button
//Stop Power off tha power swich

 void setup() {
  pinMode(2, INPUT);
  pinMode(3, INPUT);  //not use
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT); 
}

void loop() {
  if(digitalRead(2))
  {
    run();
  }
}
  
void run() {
  //step1
  digitalWrite(5, HIGH);   
  delay(1000); 
  digitalWrite(5, LOW); 
  
  digitalWrite(6, HIGH);   
  delay(300);
  digitalWrite(6, LOW);   
  delay(300);
  digitalWrite(6, HIGH);   
  delay(300);
  digitalWrite(6, LOW);   
  delay(300); 
  
  //step2                     
  digitalWrite(6, HIGH);    
  delay(1000);
  digitalWrite(6, LOW); 

  digitalWrite(7, HIGH);   
  delay(300);
  digitalWrite(7, LOW);   
  delay(300);
  digitalWrite(7, HIGH);   
  delay(300);
  digitalWrite(7, LOW);   
  delay(300); 
  
  //step3                        
  digitalWrite(7, HIGH);    
  delay(1000);
  digitalWrite(7, LOW);   

  digitalWrite(8, HIGH);   
  delay(300);
  digitalWrite(8, LOW);   
  delay(300);
  digitalWrite(8, HIGH);   
  delay(300);
  digitalWrite(8, LOW);   
  delay(300); 

  //step4                        
  digitalWrite(8, HIGH);    
  delay(1000);
  digitalWrite(8, LOW);
                       
  digitalWrite(9, HIGH);   
  delay(300);
  digitalWrite(9, LOW);   
  delay(300);
  digitalWrite(9, HIGH);   
  delay(300);
  digitalWrite(9, LOW);   
  delay(300); 

  //step5                        
  digitalWrite(9, HIGH);    
  delay(1000);
  digitalWrite(9, LOW);

  digitalWrite(10, HIGH);   
  delay(300);
  digitalWrite(10, LOW);   
  delay(300);
  digitalWrite(10, HIGH);   
  delay(300);
  digitalWrite(10, LOW);   
  delay(300); 

  //step6                        
  digitalWrite(10, HIGH);    
  delay(1000);
  digitalWrite(10, LOW);

  digitalWrite(9, HIGH);   
  delay(300);
  digitalWrite(9, LOW);   
  delay(300);
  digitalWrite(9, HIGH);   
  delay(300);
  digitalWrite(9, LOW);   
  delay(300); 

  //step7                       
  digitalWrite(9, HIGH);    
  delay(1000);
  digitalWrite(9, LOW);

  digitalWrite(8, HIGH);   
  delay(300);
  digitalWrite(8, LOW);   
  delay(300);
  digitalWrite(8, HIGH);   
  delay(300);
  digitalWrite(8, LOW);   
  delay(300); 

  //step8                        
  digitalWrite(8, HIGH);    
  delay(1000);
  digitalWrite(8, LOW);

  digitalWrite(7, HIGH);   
  delay(300);
  digitalWrite(7, LOW);   
  delay(300);
  digitalWrite(7, HIGH);   
  delay(300);
  digitalWrite(7, LOW);   
  delay(300); 

  //step9                        
  digitalWrite(7, HIGH);    
  delay(1000);
  digitalWrite(7, LOW);

  digitalWrite(6, HIGH);   
  delay(300);
  digitalWrite(6, LOW);   
  delay(300);
  digitalWrite(6, HIGH);   
  delay(300);
  digitalWrite(6, LOW);   
  delay(300); 

  //step10                        
  digitalWrite(6, HIGH);    
  delay(1000);
  digitalWrite(6, LOW);

  digitalWrite(5, HIGH);   
  delay(300);
  digitalWrite(5, LOW);   
  delay(300);
  digitalWrite(5, HIGH);   
  delay(300);
  digitalWrite(5, LOW);   
  delay(300); 

  //step11                       
  digitalWrite(5, HIGH);    
  delay(1000);
  digitalWrite(5, LOW);
}





  

3路4路試験板








 

2020年8月10日月曜日

PLC Trainer7 Crossroads

Arrived from China

Arrived from China

Arrived from China

Arrived from China

Arrived from China

First Floor

Bottome

Back

Front side

Right side

Back side

Left side

Bottom side

Top side

Open cover

Connect powr line

Power on

All red

Lamp check

Documents

Documents

Documents

Documents

Open Draw case