
【背景】 「(右手が忙しいので,)足でEnterキーを入力したい.」という依頼があり,製作した.これ以上詳しく理由を聞くことはなかった・・・(お察し下さい). 【ハードウェア】 レーシングゲーム用コントローラのペダルに,マイクロスイッチを取り付けた.アクセルペダルやブレーキペダルを踏むと,それぞれのマイクロスイッチが押される.マイクロスイッチはプルアップで接続されている. 【動作】 アクセルペダルを踏むとEnterが入力され,ブレーキペダルを踏むと下にスクロールする.
Dependencies: USBDevice TextLCD mbed
main.cpp@0:7fda85a1ff8e, 2012-06-12 (annotated)
- Committer:
- _muki
- Date:
- Tue Jun 12 05:06:30 2012 +0000
- Revision:
- 0:7fda85a1ff8e
ver.1.0
Who changed what in which revision?
User | Revision | Line number | New 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 | } |