マトリョーシカ的日常

ワクワクばらまく明日のブログ。

M5stackでプッチ神父回路をつくった。ひたすら素数を数えるよ。


#M5stack プッチ神父回路をつくった。素数を数えるよ。

 以前、Arduinoでつくっていたプッチ神父回路をM5stackに移植した。ボタンを押すとひたすら素数を数え続けるすぐれものである。Arduinoでは7segLEDやボタンをつけないといけなかったが、M5stackはそんなことは必要ない。非常に簡単につくれる。

コード
#include <M5Stack.h>
// The setup() function runs once each time the micro-controller starts
  int sosu = 1;
  int j = 2;
void setup() {
  // init lcd, serial, not init sd card
  M5.begin(true, false, true);
  M5.Lcd.clear(BLACK);
  M5.Lcd.setTextColor(YELLOW);
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(65, 10);

  M5.Lcd.println("CALM DOWN...");
  delay(3000);
  M5.Lcd.println("COUNT PRIME NUMBERS TO KEEP YOUR COMPOSURE");
  delay(3000);
  M5.Lcd.println("PRIME NUMBERS ARE SOLITARY NUMBERS");
  delay(3000);
  M5.Lcd.println("THAT CAN ONLY BE DIVIDED BY I AND ITSELF...");
  delay(3000);
  M5.Lcd.println("THEY GIME ME STRENGTH...");
  delay(1000);
  
  
  M5.Lcd.setCursor(3, 185);
  M5.Lcd.println("-ENRICO PUCCI-");
  M5.Lcd.println("Press button B 700ms clear");
}
//-RGBcolor-from https://qiita.com/nnn_anoken/items/ea6b5e81623ba690343c-
uint16_t getColor(uint8_t red, uint8_t green, uint8_t blue){
  return ((red>>3)<<11) | ((green>>2)<<5) | (blue>>3);
}
void getSosu(){
  sosu=sosu+1;
  while(sosu!=j){
    while(sosu % j !=0){
      j=j+1;
    }
    if(sosu==j){
      j=2;
      break;
    }
    sosu=sosu+1;
    j=2;
  }
}
// Add the main program code into the continuous loop() function
void loop() {
  M5.Lcd.setTextSize(20);
  M5.Lcd.setTextColor(getColor(200,255,100));
  M5.update();

  // if want use Releasefor; suggest use Release in press event
  if (M5.BtnA.wasReleased()) {
  M5.Lcd.clear(0x0000);
  M5.Lcd.setCursor(0, 0);
  getSosu();
  M5.Lcd.print(sosu);
  } else if (M5.BtnB.wasReleased()) {
  } else if (M5.BtnC.wasReleased()) {
  } else if (M5.BtnB.wasReleasefor(700)) {
    M5.Lcd.clear(0x0000);
    j=2;
    sosu=1;
    M5.Lcd.setCursor(0, 0);
  }
}
色のRGB指定

 twitterでRGB指定できるよと教えてもらった。参考サイトは↓
https://qiita.com/nnn_anoken/items/ea6b5e81623ba690343c

uint16_t getColor(uint8_t red, uint8_t green, uint8_t blue){
  return ((red>>3)<<11) | ((green>>2)<<5) | (blue>>3);
}

こんな関数をつくり、あとで色の指定の時にgetColor(R,G,B);とすればOK。R,G,Bはそれぞれ0~255まで。

エンリコプッチとは

 ジョジョの第六部に出てくる悪役。素数を数えて落ちつく。