「Arduino Mega 2560 LESSON:11 メンブレンスイッチ」の版間の差分
編集の要約なし |
編集の要約なし |
||
| (同じ利用者による、間の2版が非表示) | |||
| 67行目: | 67行目: | ||
== '''概要''' == | == '''概要''' == | ||
メンブレンスイッチを接続するレッスンです。 | メンブレンスイッチを接続するレッスンです。 | ||
完成図は | |||
[[ファイル:Mega2560 L11 01 完成図.jpg|380px||none|完成図]] | |||
コードは以下のようなモノ | |||
<freescript></script><div class="hljs-wrap"><pre data-label="Arduino Code" class="pre-wrap"> | <freescript></script><div class="hljs-wrap"><pre data-label="Arduino Code" class="pre-wrap"> | ||
| 110行目: | 118行目: | ||
} | } | ||
</code></pre></div><script></freescript> | </code></pre></div><script></freescript> | ||
*"Keypad.h" | |||
[[Arduino Mega 2560 LESSON:11 メンブレンスイッチ Keypad.h]] | |||
*"Keypad.cpp" | |||
[[Arduino Mega 2560 LESSON:11 メンブレンスイッチ Keypad.cpp]] | |||
*"utility/Key.h" | |||
[[Arduino Mega 2560 LESSON:11 メンブレンスイッチ Key.h]] | |||
*"utility/Key.cpp" | |||
[[Arduino Mega 2560 LESSON:11 メンブレンスイッチ Key.cpp]] | |||
自分でスイッチを使ってメンブレンスイッチの仕組みを利用した2x2のマトリックスを勉強用に作ってみました2x2だと信号線の節約には全くなっていませんが、勉強用ということでやってみました。 | |||
回路図は以下の通り | |||
[[ファイル:Mega2560 L11 02 回路図.png|380px||none|回路図]] | |||
完成図は以下の通り | |||
コードは以下のとおり | |||
<freescript></script><div class="hljs-wrap"><pre data-label="Arduino Code" class="pre-wrap"> | |||
<code class="cpp">const byte rowPins[2] = {6, 7}; | |||
const byte colPins[2] = {2, 3}; | |||
void setup() { | |||
Serial.begin(9600); | |||
// 外付けプルアップ抵抗を使用するためINPUT | |||
for (byte r = 0; r < 2; r++) { | |||
pinMode(rowPins[r], INPUT); | |||
} | |||
// 列は最初は高インピーダンス | |||
for (byte c = 0; c < 2; c++) { | |||
pinMode(colPins[c], INPUT); | |||
} | |||
} | |||
void loop() { | |||
for (byte c = 0; c < 2; c++) { | |||
// 調査対象の列をLOWにする | |||
digitalWrite(colPins[c], LOW); | |||
pinMode(colPins[c], OUTPUT); | |||
// 2つの行を確認する | |||
for (byte r = 0; r < 2; r++) { | |||
if (digitalRead(rowPins[r]) == LOW) { | |||
byte sw = r * 2 + c + 1; | |||
Serial.print("SW"); | |||
Serial.println(sw); | |||
} | |||
} | |||
// 列を高インピーダンスに戻す | |||
pinMode(colPins[c], INPUT); | |||
} | |||
delay(200); | |||
} | |||
</code></pre></div><script></freescript> | |||
PCB図は以下のとおり | |||
[[ファイル:Mega2560 L11 03 PCB図.png|380px||none|PCB図]] | |||
3DPreview図は以下のとおり | |||
[[ファイル:Mega2560 L11 04 3DPreview図.png|380px||none|3DPreview図]] | |||
[[Arduino Mega 2560]]に戻る。 | [[Arduino Mega 2560]]に戻る。 | ||
2026年10月16日 (金) 00:30時点における最新版
概要
メンブレンスイッチを接続するレッスンです。
完成図は
コードは以下のようなモノ
//www.elegoo.com
//2016.12.9
/* @file CustomKeypad.pde
|| @version 1.0
|| @author Alexander Brevig
|| @contact alexanderbrevig@gmail.com
||
|| @description
|| | Demonstrates changing the keypad size and key values.
|| #
*/
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {5, 4, 3, 2}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
}
- "Keypad.h"
Arduino Mega 2560 LESSON:11 メンブレンスイッチ Keypad.h
- "Keypad.cpp"
Arduino Mega 2560 LESSON:11 メンブレンスイッチ Keypad.cpp
- "utility/Key.h"
Arduino Mega 2560 LESSON:11 メンブレンスイッチ Key.h
- "utility/Key.cpp"
Arduino Mega 2560 LESSON:11 メンブレンスイッチ Key.cpp
自分でスイッチを使ってメンブレンスイッチの仕組みを利用した2x2のマトリックスを勉強用に作ってみました2x2だと信号線の節約には全くなっていませんが、勉強用ということでやってみました。
回路図は以下の通り
完成図は以下の通り
コードは以下のとおり
const byte rowPins[2] = {6, 7};
const byte colPins[2] = {2, 3};
void setup() {
Serial.begin(9600);
// 外付けプルアップ抵抗を使用するためINPUT
for (byte r = 0; r < 2; r++) {
pinMode(rowPins[r], INPUT);
}
// 列は最初は高インピーダンス
for (byte c = 0; c < 2; c++) {
pinMode(colPins[c], INPUT);
}
}
void loop() {
for (byte c = 0; c < 2; c++) {
// 調査対象の列をLOWにする
digitalWrite(colPins[c], LOW);
pinMode(colPins[c], OUTPUT);
// 2つの行を確認する
for (byte r = 0; r < 2; r++) {
if (digitalRead(rowPins[r]) == LOW) {
byte sw = r * 2 + c + 1;
Serial.print("SW");
Serial.println(sw);
}
}
// 列を高インピーダンスに戻す
pinMode(colPins[c], INPUT);
}
delay(200);
}
PCB図は以下のとおり
3DPreview図は以下のとおり