![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
先日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マイコンで割り込みの代わりに入力待ちをこまめに入れて簡易的な割り込み風の処理をやるという手法がありますが、それと似たようなことをやりたいのです。
もちろんちゃんとした割り込みが簡単にできるのであればそちらの方法を教えてください。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 時間を語るなら、(複数の時間の正体)を知る必要が有る。 1 2023/02/16 22:14
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- 物理学 光速度に近い速度で移動しても、時間や時計の動きが遅くなる?等は、あり得ない。 3 2022/09/24 00:47
- 物理学 特殊相対性理論を、完全否定に成功~ガンマの数式は、成立しない。 2 2023/03/08 19:30
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- システム パソコンの共有フォルダ移動について教えてください。 2 2022/04/07 10:14
- 物理学 【物理】電車内で飛行する虫 11 2023/04/12 14:55
- PHP phpでcookieがうまく保存されない 2 2023/08/02 16:40
- ルーター・ネットワーク機器 Wifi速度低下で困ってます。 5 2023/01/23 10:19
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Premiere Proについて教えてく...
-
Google ColaboでGUI作成
-
Python... 環境設定 初心者です...
-
Fortran の定数表現について
-
Arduinoに関する質問
-
ITパスポートの勉強をしていま...
-
オブジェクト指向プログラミン...
-
pythonで複数画像からgifを作る...
-
Webプログラムってネイティブア...
-
401エラードキュメントを401.ht...
-
pythonの画像の貼り付けについて
-
バッチファイルが保存されてい...
-
ImageMagickでgif画像の一部が...
-
そのまま使っただけなのに・・...
-
プログラミングサイトについて。
-
sublimit textっていうエディタ...
-
Pythonでターミナルに文字を出...
-
https://paiza.jp/challenges/5...
-
Google Colabでimport soxが出...
-
Python - Excel で Webからデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
奇数・偶数の区別をプログラミング
-
write downとfill outの違いを...
-
最大値と最小値の間を循環する変数
-
シリアル通信プログラミングで...
-
micropython コードについて
-
数字の右側にゼロを付加する
-
fortranのwrite文コメント有無...
-
Fortaranの質問
-
Fortran 出力形式
-
OpenSSLのSSL_write()をタイム...
-
C言語について。
-
複数のランダムクイズの表示が...
-
最大値、最小値の求め方
-
私は、もっと早くお祝いメッセ...
-
HTMLの値の渡し方について質問...
-
ACCESSのレポートの表示...
-
フォームのtextareaにnl2brを使...
-
SELECTボックスの内容を動的に...
-
遷移先のURLにパラメータを表示...
-
aspxでIFみたいなことがしたい
おすすめ情報