hamako/ 6月 13, 2019/ 開発/ 0 comments

みんコレ!様よりご依頼があり、クイズ大会用の早押しボタンを作成しております。
みんコレ!は、お医者さん数人で立ち上げた医師国家試験の解答速報サイトの会社さんです。

お医者さん集団がなぜクイズ大会の早押しボタンを!?
と疑問に思われるかもしれませんが、お話を聞いていると、お医者さんはクイズ大会が好きな人が多いとのこと。
なるほど、もともと知識を探求するのが好きという前提があって、そういう方々が自然とお医者さんになるのかもしれませんね。

設計概要

SchooMyを使用していきます。
小型化を問われるもの、外装を量産するほどの規模の製品を除き、弊社ではこのような汎用基板を使った製品を提案させていただいております。

これであれば、必要なのはSchooMy代のみになってきて設計費がかからないのでおすすめです。
今回もまずは試作1台、今後も数十台くらいが出るくらいの規模感なので、SchooMyを使用いたしました。

当記事を参考にSchooMyで早押し機を作ってみたい場合は、下記公式ページからSchooMyをお買い求めの上、開発環境設定方法などをお読みいただき、ご自身のPCに開発環境を構築してください。

早押しクイズ参加者2人Ver

当記事では2人参加Verのソースを公開します。
実際のミンコレ様の製品は5人参加Verとなります。
そちらの製品についてはミンコレ様からの販売となりますので、リリースをお待ちください。

IN_AとIN_Bにスイッチコネクタン、OUT_AとOUT_BにLEDコネクタンが繋がっています。
今回はPCからクイズスタートの信号を送るので、シリアル通信基板(書き込み機)を介してPCに繋ぎます。

実際の動作動画

早押しボタン プログラムソースコード

#define ON LOW
#define OFF HIGH
#define buttonPin1 19
#define buttonPin2 15
#define ledPin1 5
#define ledPin2 10

int keyboardin;
boolean quizstate = OFF;

void setup() {
  Serial.begin(9600);
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  digitalWrite(ledPin1, OFF);
  digitalWrite(ledPin2, OFF);
}

void loop() {
  keyboardin = Serial.read();
  if (keyboardin == 's'){
    quizstate = ON;
    digitalWrite(ledPin1, OFF);
    digitalWrite(ledPin2, OFF);
  }

  if(digitalRead(buttonPin1) == LOW && quizstate == ON){
    Serial.println("1ON");
    digitalWrite(ledPin1, ON);
    quizstate = OFF;
  } else if(digitalRead(buttonPin2) == LOW && quizstate == ON) {
    Serial.println("2ON");
    digitalWrite(ledPin2, ON);
    quizstate = OFF;
  } else {
    Serial.println("OFF");
  }
}

実際の使用に際して

さすがにPCに群がって早押しクイズをするわけにはいかないので、適宜延長してください。
PC⇔書き込み機の延長はUSB-Aタイプの延長ケーブルを、コネクタンの延長はMicro USBの延長ケーブルをご利用ください。

Share this Post

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*