.. note:: こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。 **参加する理由は?** - **エキスパートサポート**:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。 - **学び&共有**:ヒントやチュートリアルを交換してスキルを向上させましょう。 - **独占的なプレビュー**:新製品の発表や先行プレビューに早期アクセスしましょう。 - **特別割引**:最新製品の独占割引をお楽しみください。 - **祭りのプロモーションとギフト**:ギフトや祝日のプロモーションに参加しましょう。 👉 私たちと一緒に探索し、創造する準備はできていますか?[|link_sf_facebook|]をクリックして今すぐ参加しましょう! 3.1.13 ゲーム– 10秒 ======================= 前書き ------------------- それから、あなたの集中力に挑戦できるゲームデバイスを作ろう。傾斜スイッチをスティックにつないで、魔法の棒を作る。棒を振ると、4桁のセグメントディスプレイがカウントを開始し、もう一度振るとカウントを停止する。表示されたカウントを10.00に保つことに成功した場合、あなたが勝つ。友達とゲームをプレイして、タイムウィザードが誰かを確認できる。 部品 ---------------- .. image:: ../img/list_GAME_10_Second.png :align: center 回路図 ------------------------ ============ ======== ======== === T-Board Name physical wiringPi BCM GPIO17 Pin 11 0 17 GPIO27 Pin 13 2 27 GPIO22 Pin 15 3 22 SPIMOSI Pin 19 12 10 GPIO18 Pin 12 1 18 GPIO23 Pin 16 4 23 GPIO24 Pin 18 5 24 GPIO26 Pin 37 25 26 ============ ======== ======== === .. image:: ../img/Schematic_three_one13.png :align: center 実験手順 --------------------------------- ステップ1: 回路を作る。 .. image:: ../img/image277.png :width: 800 ステップ2: コードのフォルダーに入る。 .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/c/3.1.13/ ステップ3: コードをコンパイルする。 .. raw:: html .. code-block:: gcc 3.1.13_GAME_10Second.c -lwiringPi ステップ4: EXEファイルを実行する。 .. raw:: html .. code-block:: sudo ./a.out 棒を振ると、4桁のセグメントディスプレイがカウントを開始し、もう一度振るとカウントを停止する。 表示されたカウントを 10.00 に保つことに成功した場合、あなたが勝つ。 もう一度振って、ゲームの次のラウンドを開始する。 **コードの説明** .. code-block:: c void stateChange(){     if (gameState == 0){         counter = 0;         delay(1000);         ualarm(10000,10000);      }else{         alarm(0);         delay(1000);     }     gameState = (gameState + 1)%2; } ゲームは二つのモードに分けられている: ``gameState = 0`` は「開始」モードであり、このモードでは、時間を計測してセグメントディスプレイに表示し、傾斜スイッチを振って「表示」モードに入る。 ``GameState = 1`` は「表示」モードであり、タイミングを停止し、セグメントディスプレイに時間を表示する。傾斜スイッチを再度振ると、タイマーがリセットされ、ゲームが再起動する。 .. code-block:: c void loop(){     int currentState =0;     int lastState=0;     while(1){         display();         currentState=digitalRead(sensorPin);         if((currentState==0)&&(lastState==1)){             stateChange();         }         lastState=currentState;     } } ``Loop()`` が主な関数である。最初に、4ビットセグメントディスプレイに時間が表示され、 傾斜スイッチの値が読み取られる。傾斜スイッチの状態が変更された場合、 ``stateChange()`` が呼び出される。