Skip to content

Instantly share code, notes, and snippets.

@RyoKosaka
Created October 30, 2024 13:08
Show Gist options
  • Save RyoKosaka/4a920a9ee144bb55830ad7aeed2e239e to your computer and use it in GitHub Desktop.
Save RyoKosaka/4a920a9ee144bb55830ad7aeed2e239e to your computer and use it in GitHub Desktop.
プロダクトデザイン応用実習サンプルコード - モーメンタリスイッチをオルタネイトスイッチとして扱い、さらにステッピングモーターを動かす
//プロダクトデザイン応用実習サンプルコード - モーメンタリスイッチをオルタネイトスイッチとして扱い、さらにステッピングモーターを動かす
#include <Stepper.h> //Stepperライブラリを使いますよという宣言
Stepper myStepper(2048, 8, 10, 9, 11); //2048はステッピングモーターの分解能(28BYJ-48の場合)
bool flag = false; //直前のセンサーの状態を記録しておくための変数
int threshold = 500; //閾値
int steps = 3072; //送るステップ数を格納する為の変数(3072は1回転半)
void setup() { //電源をつけた時に一回だけ行われる
Serial.begin(9600); //シリアルモニタを使いますという宣言
myStepper.setSpeed(18); //myStepperの速度を18に指定。
}
void loop() {
int sensorValue = analogRead(A0);//A0ピンで読んだ値に名前をつける
Serial.print(sensorValue);//シリアルモニタに値を表示
Serial.print(",");
Serial.println(flag);
//直前までセンサーに反応がなく、sensorValueが500以下になったとき
if (sensorValue < threshold && flag == false) {
flag = true; //flagをtrueに センサーが反応している状態の保存
steps = -1 * steps; //ボタンが押されるたびに正負を反転させる
myStepper.step(steps); //myStepperをstepsの値まで動かすという指定
}
//直前までセンサーに反応があり、sensorValueが550より大きくなったとき
if(sensorValue >= threshold + 50 && flag == true){
flag = false; //flagをfalseに センサーが反応していない状態の保存
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment