dポイントプレゼントキャンペーン実施中!

先日arduino unoを手に入れてサーボを動かすスケッチを作成しました。

#include <VarSpeedServo.h>

VarSpeedServo myservo; // インスタンス作成

void setup() {
pinMode(2,INPUT) ; //スイッチに接続ピンをデジタル入力に設定
myservo.attach(9); // サーボのピンを9番に接続
}
void loop() {
if (digitalRead(2) == HIGH) { //スイッチの状態を調べる
myservo.write(110, 15, true); //110度まで速度15で移動。動きが完了するまで待つ。

myservo.write(70, 15, true); // 70度まで速度15で移動。動きが完了するまで待つ

myservo.write(100, 15, true); //100度まで速度15で移動。動きが完了するまで待つ。

myservo.write(80, 10, true); // 80度まで速度10で移動。動きが完了するまで待つ

myservo.write(90, 15, true); //90度まで速度15で移動。動きが完了するまで待つ。

myservo.write(80, 15, true); // 80度まで速度15で移動。動きが完了するまで待つ

myservo.write(120, 10, true); //120度まで速度10で移動。動きが完了するまで待つ。

myservo.write(85, 13, true); // 85度まで速度13で移動。動きが完了するまで待つ

myservo.write(100, 15, true); //100度まで速度15で移動。動きが完了するまで待つ。

myservo.write(90, 15, true); // 90度まで速度15で移動。動きが完了するまで待つ

myservo.write(110, 10, true); //110度まで速度10で移動。動きが完了するまで待つ。

myservo.write(80, 15, true); // 80度まで速度15で移動。動きが完了するまで待つ

} else {
myservo.write(90, 30, true); //90度まで速度30で移動。動きが完了するまで待つ。

}
}

このスケッチは9番ピンにサーボの信号を接続、2番ピンに入力スイッチを設け、電源投入後2番ピンに入力があるまではサーボが90度の位置で待機し、入力があったらサーボが「if」の次行からelseの前の行までの通り動作を繰り返すというもので、ネットでいろんなサンプルを参考に作りました。
一応スイッチにも反応して正常に動作はしています。
ただ、これだとループで「if」の行へ来ないとスイッチの状態を調べられませんよね?
当然途中で2番ピンへの入力を切ってもプログラムが「if」の行へ来ないとサーボが90度の位置へ移動しません。
そこで「if」以下の行間に

   if (digitalRead(2) == HIGH) { //スイッチの状態を調べる
myservo.write(110, 15, true); //110度まで速度15で移動。動きが完了するまで待つ。
   if (digitalRead(2) == HIGH) { //スイッチの状態を調べる
myservo.write(70, 15, true); // 70度まで速度15で移動。動きが完了するまで待つ
   if (digitalRead(2) == HIGH) { //スイッチの状態を調べる
myservo.write(100, 15, true); //100度まで速度15で移動。動きが完了するまで待つ。
   if (digitalRead(2) == HIGH) { //スイッチの状態を調べる
myservo.write(80, 10, true); // 80度まで速度10で移動。動きが完了するまで待つ

このように    if (digitalRead(2) == HIGH) {
を入れてみたのですがそれだとエラーが出てコンパイル出来ませんでした。
単に私がスケッチの勉強不足でスケッチのルールを分かってないだけなのだと思うのですが・・・
PICマイコンで割り込みの代わりに入力待ちをこまめに入れて簡易的な割り込み風の処理をやるという手法がありますが、それと似たようなことをやりたいのです。
もちろんちゃんとした割り込みが簡単にできるのであればそちらの方法を教えてください。

よろしくお願いします。

A 回答 (1件)

>入れてみたのですがそれだとエラーが出てコンパイル出来ませんでした。



どういうエラーですか?
書かれた方法の通りだと
{が閉じてないようですが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!