2026年9月20日 (日)
GamePi1.54のスイッチ
GamePi1.54のスイッチがRaspberry PiのどのGPIOに
つながっているかを確認しました。全部で14個のスイッチがついています。
しかし、赤丸で印をつけた上矢印、下矢印はどのGPIOにつながっているのかわかりませんでした。
また、すべてのスイッチはプルアップされていないので、Raspberry PiのGPIO側でプルアップしないとなりません。
| No. |
スイッチ |
Pin番号 |
wPi |
BCM |
| 1. |
UP |
29 |
21 |
5 |
| 2. |
DOWN |
31 |
22 |
6 |
| 3. |
LEFT |
36 |
27 |
16 |
| 4. |
RIGHT |
33 |
23 |
13 |
| 5. |
X |
10 |
16 |
15 |
| 6. |
Y |
32 |
26 |
12 |
| 7. |
A |
40 |
29 |
21 |
| 8. |
B |
38 |
28 |
20 |
| 9. |
START |
37 |
25 |
26 |
| 10. |
SELECT |
35 |
24 |
19 |
| 11. |
TL |
16 |
4 |
23 |
| 12. |
TR |
8 |
15 |
14 |
下はwiringPiを使って各々のスイッチの状態を取り込んで表示するプログラムです。
スイッチが押されていないと”1”となり、押されると”0”になります。wiringPiのインストール
はこちらのページで書いています。
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#define UP 21
#define DOWN 22
#define LEFT 27
#define RIGHT 23
#define X_SW 16
#define Y_SW 26
#define A_SW 29
#define B_SW 28
#define START 25
#define SELECT 28
#define TL 4
#define TR 15
int main()
{
wiringPiSetup();
pinMode(UP, INPUT);
pinMode(DOWN, INPUT);
pinMode(RIGHT, INPUT);
pinMode(LEFT, INPUT);
pullUpDnControl(UP, PUD_UP);
pullUpDnControl(DOWN, PUD_UP);
pullUpDnControl(LEFT, PUD_UP);
pullUpDnControl(RIGHT, PUD_UP);
pinMode(X_SW, INPUT);
pinMode(Y_SW, INPUT);
pinMode(A_SW, INPUT);
pinMode(B_SW, INPUT);
pullUpDnControl(X_SW, PUD_UP);
pullUpDnControl(Y_SW, PUD_UP);
pullUpDnControl(A_SW, PUD_UP);
pullUpDnControl(B_SW, PUD_UP);
pinMode(START, INPUT);
pinMode(SELECT, INPUT);
pinMode(TL, INPUT);
pinMode(TR, INPUT);
pullUpDnControl(START, PUD_UP);
pullUpDnControl(SELECT, PUD_UP);
pullUpDnControl(TL, PUD_UP);
pullUpDnControl(TR, PUD_UP);
while(1){
printf("%d %d %d %d ",
digitalRead(UP),
digitalRead(DOWN),
digitalRead(LEFT),
digitalRead(RIGHT));
printf("%d %d %d %d ",
digitalRead(X_SW),
digitalRead(Y_SW),
digitalRead(A_SW),
digitalRead(B_SW));
printf("%d %d %d %d\n",
digitalRead(START),
digitalRead(SELECT),
digitalRead(TL),
digitalRead(TR));
delay (500);
}
}