2017年8月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

« 電子オルゴール & サーボ (Japanino & arduino) | トップページ | 「いやんぷい」(Japanino & arduino) »

2010年6月16日 (水)

「じゃんけんぽい」 (Japanino & arduino POV)

大人の科学の付録 Japanino POVキットで、じゃんけんをさせてみました。POVのハンドルを廻すたびに、グー、チョキ、パーがランダムに表示されます。

POV同士でじゃんけんさせると面白いかもしれません。

簡単なプログラムで、こういうお遊びが出来るのが、この付録のたのしいところですね。

Pov_janken

スケッチは下記の通りです。素人なのでみっともないコードですがそこはご容赦を。

大人の科学のサイトのサンプルスケッチでは表示があまりうまくいかなかったので、「なんでも作っちゃう、かも。」で公開されていた、 「ジャパニーノ P.O.Vライブラリ」を利用させていただきました。

//-----------------------------------------------------------------------------------
// No.9b POV Janken created 16 June 2010

// composed by skt48 Modelism hebdomadare

/* Employing Japanino POV library
   (JapaninoPOV.h and JapaninoPOV.cpp created by arms22)
   refer "http://arms22.blog91.fc2.com/blog-entry-349.html"
*/

#include <JapaninoPOV.h>

#define LEDPIN 7     // どのピンからLEDをつなぐか
#define SWPIN  6     // スイッチをつなぐピン
#define WIDTH  20    // 表示する幅

JapaninoPOV pov(LEDPIN,SWPIN);  //JapaninoPOV pov(LEDPIN);
 
byte bitmap[] = {    // ビットマップ(画像)の定義
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b10000000 //end
};

byte bitmap1[] = {
0b00000000,
0b01111000,
0b01111100,
0b01111100,
0b01111100,
0b01111100,
0b01111100,
0b01111100,
0b01111100,
0b01111000,
0b10000000 //end
};

byte bitmap2[] = {
0b00000000,
0b01110000,
0b01111000,
0b01111111,
0b01111000,
0b01111000,
0b01111111,
0b01111000,
0b01111000,
0b01110000,
0b10000000 //end
};

byte bitmap3[] = {
0b00000000,
0b01111110,
0b01111000,
0b01111111,
0b01111000,
0b01111111,
0b01111000,
0b01111111,
0b01111000,
0b01111110,
0b10000000 //end
};

unsigned char pos = 0;         // ビットマップ中の位置
unsigned long lastmillis = 0;  // 前回の時間
unsigned long interval = 1500; // 表示継続時間

void setup() { 
  pov.setWidth(WIDTH);
  pov.setFrameBuffer(bitmap,sizeof(bitmap));
  //pov.setFrameTime(60);
  //pov.setFrameTimeAutoDetect(true);
  //pov.setScrolling(true);
  pov.begin(); 
}

void loop() {
  if(digitalRead(SWPIN) == HIGH) choose();
  else {
    lastmillis = millis();
    while (millis() - lastmillis < interval) {
      pov.update();
    }
  }
}

void choose(){  // グーチョキパー選択
  pos = 0; 
  int rst = random(999) % 3 + 1;
  switch (rst) {
    case 1:
      while(bitmap1[++pos] != 0b10000000) {
        bitmap[pos] = bitmap1[pos];
      }
      break;
    case 2:
      while(bitmap2[++pos] != 0b10000000) {
        bitmap[pos] = bitmap2[pos];
      }
      break;
    case 3:
      while(bitmap3[++pos] != 0b10000000) {
        bitmap[pos] = bitmap3[pos];
      }
      break;
   }
}

//-----------------------------------------------------------------------------------

« 電子オルゴール & サーボ (Japanino & arduino) | トップページ | 「いやんぷい」(Japanino & arduino) »

コメント

コメントを書く

(ウェブ上には掲載しません)

« 電子オルゴール & サーボ (Japanino & arduino) | トップページ | 「いやんぷい」(Japanino & arduino) »