AI要約
ボタンを押すたびに1回だけサーボを動かす処理を実装します。SG-90サーボとモーメンタリ型タクトスイッチをArduinoに接続し、ボタンを押した瞬間だけサーボを1回動かします。現在と直前の押下状態を比較することがポイントです。
やること
スイッチを押したら1回だけサーボが動く装置を作ります。わざわざ記事にするか迷いましたが、機構として大事なので一応残しておきます。

コード
サーボは「SG-90」を使用します。基本的な動かし方は過去の記事を参考に。
今回のタクトスイッチはモーメンタリタイプです。モーメンタリ(意味:瞬間)はバネ機構になっていて、押している間だけONになる。オルタネート(意味:自己保持)はONとOFFのどちらも安定点になっていて、どちらの切り替えでも力を加えるタイプ。
D2→タクトスイッチ→GNDと配線。D3をサーボの信号線に割り当てました。
「押した瞬間に1回だけ何かする」は、現在の押下状態と1フレーム前の押下状態を比較して、「(現在=True) and (過去=False)」のときに発動させればOKです。
if (pushed && !lastPushed)以下、全コード
#include <Servo.h>
Servo servo;
bool pushed = false;
bool lastPushed = false;
void setup() {
// タクトスイッチをプルアップ
pinMode(2, INPUT_PULLUP);
// サーボの初期化
servo.attach(3, 500, 2500);
servo.write(0);
}
void loop() {
// 現在の押下状態
pushed = (digitalRead(2) == LOW);
// False → True に変わった瞬間だけ動作
if (pushed && !lastPushed) {
servo.write(30);
delay(500);
servo.write(0);
}
// 状態を保管
lastPushed = pushed;
}押した瞬間に1回だけ動いていますね。
おわりに
実はこれで自作キーボード関連のツールを作りたいんですよね~(2回目)
引っぱってすみませんでした。今度こそ、次回をお楽しみに ( ˘ω˘ ) ネテマテ



