フォト
サイト内検索
ココログ最強検索 by 暴想
2026年6月
  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        
無料ブログはココログ

最近のトラックバック

にほんブログ村

  • にほんブログ村

« PiFaceでLEDの点滅(Lチカ)を速くしたり遅くしたり | トップページ | PiFaceでキーボード入力すると各LEDが点滅するプログラムを作ってみた »

2013年9月 9日 (月)

PiFaceでクイズの早押しボタンのプログラムを作ってみた

またまた、単純なプログラムを作ってみましたが今回も楽しかったので本ブログに載せることにしました。
今回は、PiFaceでクイズの早押しボタンのプログラムを作ってみました。
PiFaceに載っているスイッチを早押しするとそれに対応したLEDが点滅(Lチカ)すると言うものです。
ピンポンと音まで出れば本格的なのでしょうがさすがにそこまでは私の技術では困難でした。
ボタン3つ(スイッチS1~S3)を回答者用に1つ(S4)をLED点滅のリセットとプログラム終了用としました。
プログラムを組んでみましたが、早押し部分にはボタンを押すと3つのif文によりLEDの点滅する関数に飛ぶと言うものです。
厳密には同時に押した場合、プログラムの作動上もっとも近いif文に当たったボタンのLEDが点滅すると言うことで必ずしもプログラム上は公平ではないのですが、ものすごい早さで検出するので実際の実用面では問題がないものと思われます。これは、ゲームなどのボタン操作でもおそらく同じ様なことが行われているものと推測されます。
さて、作ったプログラムを動作させてみてボタンの待ち受け時にCPUの使用量モニタで確認するとCPUの使用量が何と8割を越えてしまいます。実際、他のプログラムではボタンの待ち受けだけでこんなCPUの使用量となることはないでしょうから良いプログラムとは言えないかもしれません。
ファイル名「q_button.c」とし、gccによるコンパイルは、
$ gcc -L/usr/local/lib/ -lpiface-1.0 -o q_button q_button.c
で行いました。
以下はソースです。
/*クイズ早押しボタンです*/
#include <libpiface-1.0/pfio.h>
/*ファイルは/usr/local/include/libpiface-1.0/pfio.hにあります*/
void tennmetu(int led);/*led番で点滅する関数プロトタイプ(引数led、戻り値なし)*/
int main(void)
{
    int led=0;/*変数ledを宣言*/
        pfio_init();/*私には何のための関数か不明*/
 while(1) {/*ボタン待ち受け無限ループです*/
                if(pfio_digital_read(0)==1)tennmetu(2);/*スイッチS1が押されていれば関数tennmetu()に2を入れて実行*/
                if(pfio_digital_read(1)==1)tennmetu(3);/*スイッチS2が押されていれば関数tennmetu()に3を入れて実行*/
                if(pfio_digital_read(2)==1)tennmetu(4);/*スイッチS3が押されていれば関数tennmetu()に4を入れて実行*/
                if(pfio_digital_read(3)==1)break;/*スイッチS4が押されていれば無限ループを終了でプログラム終了*/
 }
       pfio_deinit();/*私には何のための関数か不明*/
}
void tennmetu(int led)
{
 while(1) {/*Lチカのための無限ループです*/
               pfio_digital_write(led, 1);/*LEDのled番を点灯*/
               usleep(50000);/*50000マイクロ秒間続ける*/
               pfio_digital_write(led, 0);/*LEDのled番を消灯(滅)*/
               usleep(100000);/*100000マイクロ秒間続ける*/
                if(pfio_digital_read(3)==1)break;/*スイッチS4が押されていれば無限ループを終了で点滅リセット*/
        }
        usleep(500000);/*スイッチS4の長押しでプログラム終了にならないよう時間を置く*/
}

« PiFaceでLEDの点滅(Lチカ)を速くしたり遅くしたり | トップページ | PiFaceでキーボード入力すると各LEDが点滅するプログラムを作ってみた »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

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

トラックバック


この記事へのトラックバック一覧です: PiFaceでクイズの早押しボタンのプログラムを作ってみた:

« PiFaceでLEDの点滅(Lチカ)を速くしたり遅くしたり | トップページ | PiFaceでキーボード入力すると各LEDが点滅するプログラムを作ってみた »