「Arduino Mega 2560 LESSON:11 メンブレンスイッチ」の版間の差分

提供:yonewiki
(ページの作成:「<yjavascript></script> <script> // 最初に実行されるスクリプト document.addEventListener('DOMContentLoaded', () => { const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { mutation.addedNodes.forEach((node) => { if (node.tagName === 'SCRIPT' &@@& node.textContent) { // JavaScriptコードを変換 const originalCode = node.textContent;…」)
 
編集の要約なし
 
(同じ利用者による、間の4版が非表示)
66行目: 66行目:


== '''概要''' ==
== '''概要''' ==
 メンブレンスイッチを接続するレッスンです。
 完成図は
[[ファイル:Mega2560 L11 01 完成図.jpg|380px||none|完成図]]
 コードは以下のようなモノ
<freescript></script><div class="hljs-wrap"><pre data-label="Arduino Code" class="pre-wrap">
<code class="cpp">//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);
  }
}
</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">
<freescript></script><div class="hljs-wrap"><pre data-label="Arduino Code" class="pre-wrap">
<code class="cpp"> 
<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>
</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時点における最新版

Arduino Mega 2560に戻る。

概要

 メンブレンスイッチを接続するレッスンです。


 完成図は

完成図


 コードは以下のようなモノ

//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図は以下のとおり

PCB図


 3DPreview図は以下のとおり

3DPreview図

 

Arduino Mega 2560に戻る。