#define SW_SELECT 7
#define SW_LED_TEST 8
#define SW_ENGIN 9
#define SW_ACC 10
#define LED_ENGIN 11
#define LED_ACC 12
/*
const byte PIN_MAT_IN_0 = 12;
const byte PIN_MAT_IN_1 = 13;
const byte PIN_MAT_IN_2 = 14;
const byte PIN_MAT_IN_3 = 15;
const byte PIN_MAT_OUT_0 = 16;
const byte PIN_MAT_OUT_1 = 17;
const byte PIN_MAT_OUT_2 = 18;
const byte PIN_MAT_OUT_3 = 19;
*/
/*
* マトリクススイッチ設定
*/
/*
const byte COLS = 4; // マトリクススイッチ列数
const byte ROWS = 4; // マトリクススイッチ行数
const byte outPins[ROWS] = { // マトリクススイッチ行PIN設定
PIN_MAT_OUT_0,
PIN_MAT_OUT_1,
PIN_MAT_OUT_2,
PIN_MAT_OUT_3
};
const byte inPins[COLS] = { // マトリクススイッチ列PIN設定
PIN_MAT_IN_0,
PIN_MAT_IN_1,
PIN_MAT_IN_2,
PIN_MAT_IN_3
};
#define SW_MATRIX_IN1 12
#define SW_MATRIX_IN2 13
#define SW_MATRIX_IN3 14
#define SW_MATRIX_IN4 15
#define SW_MATRIX_OUT1 16
#define SW_MATRIX_OUT2 17
#define SW_MATRIX_OUT3 18
#define SW_MATRIX_OUT4 19
*/
/*
* ジョイスティック
*
* 複数のスイッチボックスを接続する場合は値が重複しないように変更する。
*/
const byte joystick1HidReportId = 0x04; // ジョイスティック1 Hid Report Id
//const byte joystick2HidReportId = 0x05; // ジョイスティック2 Hid Report Id
/*
* キー
*
* Push,Releaseを行うキー設定
*
* 例えば「s」キーを登録すると
* 1.ボタンを押したときにキーボードの「s」キーをPush
* 2.ボタンを押した状態を保持すると「s」キーのPush状態を保持
* 3.ボタンを離すとキーボードの「s」キーをRelease
* という動作になり、エンジンスタートで使用することができる。
* 他に「esc」キーを登録すると走行画面からexitできる。
*
* キーは複数登録でき、「ctrl」「alt」「delete」の3つを登録すると
* 3つのキーが同時に押すことになる。
*
* キー1つの場合
* const byte key0[] {'s'};
* 複数キー同時押しの場合
* const byte key0[] {KEY_RIGHT_CTRL, KEY_LEFT_ALT, KEY_DELETE};
*
* 16種類のキーを登録可能
*/
/*
byte key0[] {'s'}; // キー番号1番
byte key1[] {'i'}; // キー番号2番
byte key2[] {KEY_LEFT_ALT,'['}; // キー番号3番
byte key3[] {KEY_LEFT_ALT,']'}; // キー番号4番
byte key4[] {KEY_ESC}; // キー番号5番
byte key5[] {KEY_ESC}; // キー番号6番
byte key6[] {KEY_ESC}; // キー番号7番
byte key7[] {KEY_ESC}; // キー番号8番
byte key8[] {KEY_ESC}; // キー番号9番
byte key9[] {KEY_ESC}; // キー番号10番
byte key10[] {KEY_ESC}; // キー番号11番
byte key11[] {KEY_ESC}; // キー番号12番
byte key12[] {KEY_ESC}; // キー番号13番
byte key13[] {KEY_ESC}; // キー番号14番
byte key14[] {KEY_ESC}; // キー番号15番
byte key15[] {KEY_ESC}; // キー番号16番
*/
int test = 0;
const int KEYIN[] = {13,14,15,16}; //
const int KEYOUT[] = {17,18,19,20}; //
//
unsigned long previousMillis = 0; //
const long interval = 10; //
int columnNum=0; //
int sw[4][4]={0}; //
void setup() {
pinMode(SW_SELECT, INPUT_PULLUP);
pinMode(SW_LED_TEST, INPUT_PULLUP);
pinMode(SW_ENGIN, INPUT);
pinMode(SW_ACC, INPUT);
pinMode(LED_ENGIN, OUTPUT);
pinMode(LED_ACC, OUTPUT);
for(int i=0; i<=3; i++){ //
pinMode(KEYIN[i],INPUT); //
pinMode(KEYOUT[i],OUTPUT); //
digitalWrite(KEYOUT[i], LOW); //
} //
Serial.begin(9600); //
while (!Serial); // 準備が終わるのを待つ
Serial.println("プログラム開始"); // シリアル通信でメッセージをPCに送信
}
void loop() {
unsigned long currentMillis = millis(); //
//
if(currentMillis - previousMillis >= interval) { //
previousMillis = currentMillis; //
digitalWrite(KEYOUT[columnNum], HIGH); //
for(int rowNum=0; rowNum<=3; rowNum++){ //
sw[columnNum][rowNum]=digitalRead(KEYIN[rowNum]); //
delay(10); //
} //
digitalWrite(KEYOUT[columnNum], LOW); //
columnNum++; //
columnNum &=3; //
} //
if(columnNum==3){
for(int i=0; i<=3; i++){
for(int j=0; j<=3; j++){
Serial.print(sw[i][j]);
}
Serial.println();
}
Serial.println();
Serial.println();
delay(500);
}
/*
if(digitalRead(SW_ENGIN) == HIGH){
Serial.print("[SW_EN]HIGH");
}else {
Serial.print("[SW_EN]LOW");
}
*/
if(digitalRead(SW_ENGIN) == HIGH){
//Serial.print("[LED_EN]HIGH");
digitalWrite(LED_ENGIN, LOW);
}else {
//Serial.print("[LED_EN]LOW");
digitalWrite(LED_ENGIN, HIGH);
}
/*
if(digitalRead(SW_ACC) == HIGH){
Serial.print(" [SW_ACC]HIGH");
}else {
Serial.print(" [SW_ACC]LOW");
}
*/
if(digitalRead(SW_ACC) == HIGH){
//Serial.println("[LED_ACC]HIGH");
digitalWrite(LED_ACC, LOW);
}else {
//Serial.println("[LED_ACC]LOW");
digitalWrite(LED_ACC, HIGH);
}
//delay(10);
}