【背景】 「(右手が忙しいので,)足でEnterキーを入力したい.」という依頼があり,製作した.これ以上詳しく理由を聞くことはなかった・・・(お察し下さい). 【ハードウェア】 レーシングゲーム用コントローラのペダルに,マイクロスイッチを取り付けた.アクセルペダルやブレーキペダルを踏むと,それぞれのマイクロスイッチが押される.マイクロスイッチはプルアップで接続されている. 【動作】 アクセルペダルを踏むとEnterが入力され,ブレーキペダルを踏むと下にスクロールする.

Dependencies:   USBDevice TextLCD mbed

Committer:
_muki
Date:
Tue Jun 12 05:06:30 2012 +0000
Revision:
0:7fda85a1ff8e
ver.1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
_muki 0:7fda85a1ff8e 1 #include "mbed.h"
_muki 0:7fda85a1ff8e 2 #include "USBMouseKeyboard.h"
_muki 0:7fda85a1ff8e 3 #include "TextLCD.h"
_muki 0:7fda85a1ff8e 4
_muki 0:7fda85a1ff8e 5 USBMouseKeyboard pedal;
_muki 0:7fda85a1ff8e 6
_muki 0:7fda85a1ff8e 7 TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d0-d3
_muki 0:7fda85a1ff8e 8
_muki 0:7fda85a1ff8e 9 DigitalOut a_led(LED1);
_muki 0:7fda85a1ff8e 10 DigitalOut b_led(LED2);
_muki 0:7fda85a1ff8e 11
_muki 0:7fda85a1ff8e 12 DigitalOut powerA(p13);
_muki 0:7fda85a1ff8e 13 DigitalOut powerB(p14);
_muki 0:7fda85a1ff8e 14
_muki 0:7fda85a1ff8e 15 /*
_muki 0:7fda85a1ff8e 16 InterruptIn Accel(p12);
_muki 0:7fda85a1ff8e 17 InterruptIn Brake(p29);
_muki 0:7fda85a1ff8e 18 */
_muki 0:7fda85a1ff8e 19
_muki 0:7fda85a1ff8e 20 DigitalIn Accel(p9);
_muki 0:7fda85a1ff8e 21 DigitalIn Brake(p18);
_muki 0:7fda85a1ff8e 22
_muki 0:7fda85a1ff8e 23 int accel_flag; // push?
_muki 0:7fda85a1ff8e 24 int brake_flag; // push?
_muki 0:7fda85a1ff8e 25
_muki 0:7fda85a1ff8e 26 /*
_muki 0:7fda85a1ff8e 27 void Afall(){
_muki 0:7fda85a1ff8e 28 accel_flag = 0;
_muki 0:7fda85a1ff8e 29 wait(0.1);
_muki 0:7fda85a1ff8e 30 }
_muki 0:7fda85a1ff8e 31 void Arise(){
_muki 0:7fda85a1ff8e 32 accel_flag++;
_muki 0:7fda85a1ff8e 33 wait(0.1);
_muki 0:7fda85a1ff8e 34 }
_muki 0:7fda85a1ff8e 35 void Bfall(){
_muki 0:7fda85a1ff8e 36 brake_flag = 0;
_muki 0:7fda85a1ff8e 37 wait(0.1);
_muki 0:7fda85a1ff8e 38
_muki 0:7fda85a1ff8e 39 }
_muki 0:7fda85a1ff8e 40 void Brise(){
_muki 0:7fda85a1ff8e 41 brake_flag++;
_muki 0:7fda85a1ff8e 42 wait(0.1);
_muki 0:7fda85a1ff8e 43 }
_muki 0:7fda85a1ff8e 44 */
_muki 0:7fda85a1ff8e 45
_muki 0:7fda85a1ff8e 46
_muki 0:7fda85a1ff8e 47 int main(void) {
_muki 0:7fda85a1ff8e 48 int i=0;
_muki 0:7fda85a1ff8e 49
_muki 0:7fda85a1ff8e 50 /* debug */
_muki 0:7fda85a1ff8e 51 a_led = 1;
_muki 0:7fda85a1ff8e 52 b_led = 1;
_muki 0:7fda85a1ff8e 53 lcd.printf("hello\n");
_muki 0:7fda85a1ff8e 54
_muki 0:7fda85a1ff8e 55
_muki 0:7fda85a1ff8e 56 /* Initialize */
_muki 0:7fda85a1ff8e 57 powerA = 1;
_muki 0:7fda85a1ff8e 58 powerB = 1;
_muki 0:7fda85a1ff8e 59
_muki 0:7fda85a1ff8e 60 accel_flag = 0;
_muki 0:7fda85a1ff8e 61 brake_flag = 0;
_muki 0:7fda85a1ff8e 62
_muki 0:7fda85a1ff8e 63
_muki 0:7fda85a1ff8e 64 /* main Loop */
_muki 0:7fda85a1ff8e 65 while (1) {
_muki 0:7fda85a1ff8e 66 /* debug */
_muki 0:7fda85a1ff8e 67 a_led = accel_flag;
_muki 0:7fda85a1ff8e 68 b_led = brake_flag;
_muki 0:7fda85a1ff8e 69
_muki 0:7fda85a1ff8e 70
_muki 0:7fda85a1ff8e 71 /* sensing */
_muki 0:7fda85a1ff8e 72 if(Accel > 0.5){
_muki 0:7fda85a1ff8e 73 accel_flag = 1;
_muki 0:7fda85a1ff8e 74 }else{
_muki 0:7fda85a1ff8e 75 accel_flag = 0;
_muki 0:7fda85a1ff8e 76 }
_muki 0:7fda85a1ff8e 77 if(Brake > 0.5){
_muki 0:7fda85a1ff8e 78 brake_flag = 1;
_muki 0:7fda85a1ff8e 79 }else{
_muki 0:7fda85a1ff8e 80 brake_flag = 0;
_muki 0:7fda85a1ff8e 81 }
_muki 0:7fda85a1ff8e 82
_muki 0:7fda85a1ff8e 83
_muki 0:7fda85a1ff8e 84 /* keyboard input */
_muki 0:7fda85a1ff8e 85 if(i > 10){
_muki 0:7fda85a1ff8e 86 lcd.cls();
_muki 0:7fda85a1ff8e 87 if(accel_flag > 0){
_muki 0:7fda85a1ff8e 88 lcd.locate(0,0); lcd.printf("A:%d",accel_flag);
_muki 0:7fda85a1ff8e 89 pedal.printf("\n");
_muki 0:7fda85a1ff8e 90 }
_muki 0:7fda85a1ff8e 91
_muki 0:7fda85a1ff8e 92 if(brake_flag > 0){
_muki 0:7fda85a1ff8e 93 //pedal.keyCode('', KEY_CTRL);
_muki 0:7fda85a1ff8e 94 lcd.locate(0,1); lcd.printf("B:%d",brake_flag);
_muki 0:7fda85a1ff8e 95 pedal.scroll(127); // -128 ~ 127
_muki 0:7fda85a1ff8e 96 }
_muki 0:7fda85a1ff8e 97 i = 0;
_muki 0:7fda85a1ff8e 98 }
_muki 0:7fda85a1ff8e 99
_muki 0:7fda85a1ff8e 100 i++;
_muki 0:7fda85a1ff8e 101 wait(0.1);
_muki 0:7fda85a1ff8e 102 }
_muki 0:7fda85a1ff8e 103
_muki 0:7fda85a1ff8e 104 return 0;
_muki 0:7fda85a1ff8e 105 /* Accel.fall(&Afall);
_muki 0:7fda85a1ff8e 106 Accel.rise(&Arise);
_muki 0:7fda85a1ff8e 107 Brake.fall(&Bfall);
_muki 0:7fda85a1ff8e 108 Brake.rise(&Brise);
_muki 0:7fda85a1ff8e 109 */
_muki 0:7fda85a1ff8e 110
_muki 0:7fda85a1ff8e 111
_muki 0:7fda85a1ff8e 112 }