「UnoArduSim」カテゴリーアーカイブ

Arduino シミュレーター「UnoArduSim」の紹介

Arduinoシミュレータ UnoArdusim サーボ編 No.4

今回は、アナログ入力の値でサーボの位置を指示するプログラムです。
アナログ入力A3にスライド式のボリュームを接続して、出力ピン9に接続したサーボをコントロールします。

Arduinoのアナログ入力の分解能は10bitなので 0V~5Vの信号が 0~1023の数値として取り込まれます。
この0~1023をサーボのコントロール信号0~180に変換してサーボをコントロールします。
これは アナログ入力値/5.67で計算できます。

以下がプログラムと UnoArdusim の設定(赤で囲んだ部分)です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//***********************************************************
// サーボモーターを動かすプログラム No.6
// 博多電子工作室 2015/07/27
//***********************************************************
#include <Servo.h>  //サーボモーター用ライブラリを読み込み
Servo myservo; 		//サーボ用のオブジェクトを作成
int val; 			//サーボの角度を格納するための変数
int analogPin = 3;	// アナログ入力にPin A3を使う
 
void setup()
{
	myservo.attach(9); //デジタル9番ピンをサーボの角度命令出力ピンとして設定
}
void loop()
{
	val = analogRead(analogPin);    //アナログピンを読み取る;
	myservo.write(val/5.67); 		//アナログ入力値 0~1023を 0~180に変換してサーボをまわす。
	delay(100);						// 100msのウェイト
}

アナログ入力によるサーボの制御

123D Circuit版はこちら

Arduinoシミュレータ UnoArdusim サーボ編 No.3

昨日の続きで Aruduinoによるサーボモータ駆動です。
最初に昨日の
「0度→から180度まで10度刻みで動かして、180度まで行ったら0度に戻す」プログラムの別バージョンです。
昨日のプログラムではMAXの180度を調べて0に戻していましたが
今回のプログラムは判定処理を入れずに実現しています。
昨日のプログラムとは全然違っていますが、制御の内容としては同じになります。
このように、ある動作をさせるプログラムは1つではないことを頭に入れておいてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//***********************************************************
// サーボモーターを動かすプログラム No.3
// 博多電子工作室 2015/07/26
//***********************************************************
#include <Servo.h>	//サーボモーター用ライブラリを読み込み
Servo myservo;		//サーボ用のオブジェクトを作成
int val;			//サーボの角度を格納するための変数
void setup()
{
	myservo.attach(9); //デジタル9番ピンをサーボの角度命令出力ピンとして設定
	val = 0;
}
void loop()
{
	myservo.write(val); //サーボを動かす
	delay(1000);		//1秒停止
	val = (val+10)%190 ;
}

次に昨日の宿題プログラムの例です。

例その1
このプログラムでは角度の変数が190以上であれば-10ずつ角度の指定値を減らすようにしています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//***********************************************************
// サーボモーターを動かすプログラム No.4
// 博多電子工作室 2015/07/26
//***********************************************************
#include <Servo.h>	//サーボモーター用ライブラリを読み込み
Servo myservo;		//サーボ用のオブジェクトを作成
int val;			//サーボの角度を格納するための変数
void setup()
{
	myservo.attach(9); //デジタル9番ピンをサーボの角度命令出力ピンとして設定
	val = 0;
}
void loop()
{
	if(val >= 190){
		myservo.write(360 - val); //サーボを動かす
	} else {
		myservo.write(val); //サーボを動かす
	}	
 
	delay(1000);		//1秒停止
	val = (val+10)%360 ;
}

例その2
このプログラムでは角度の変数と方向の変数を使っています。
例その1に比べるとプログラムが長くなっています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//***********************************************************
// サーボモーターを動かすプログラム No.5
// 博多電子工作室 2015/07/26
//***********************************************************
#include <Servo.h>	//サーボモーター用ライブラリを読み込み
Servo myservo;		//サーボ用のオブジェクトを作成
int val;			//サーボの角度を格納するための変数
int dir;			//サーボの回転方向を格納するための変数
void setup()
{
	myservo.attach(9); //デジタル9番ピンをサーボの角度命令出力ピンとして設定
	val = 0;
	dir = 0;
}
void loop()
{
	myservo.write(val); //サーボを動かす
	delay(1000);		//1秒停止
	if(dir == 0){
		if(val >= 180){		//サーボの位置が180度なら回転方向を反転して位置を10度戻す
			val -= 10;
			dir = 1;
		} else {			//それ以外であれ10度進める
			val += 10;
		}
	} else {
		if(val <= 0){		//サーボの位置が0度なら回転方向を反転して位置を10度進める
			val += 10;
			dir = 0;
		} else {			//それ以外であれ10度戻す
			val -= 10;
		}
	}
}

今回の3本のプログラム、ご理解いただけましたでしょうか。
次回は、スライド式ボリュームの値によってサーボモーターの位置を決めるプログラムの説明を行います。

Arduinoシミュレータ UnoArdusim サーボ編 No.2

前回のサーボ編 No.はサーボモーターを 0度→90度→180度→90度→0度 の繰り返し動作をさせる単純なプログラムでしたが、
今回は0度→から180度まで10度刻みで動かして、180度まで行ったら0度に戻すというプログラムです。

UnoArdusimのデバイスの設定は サーボ編 No.1 と同じです。

今回のプログラムは以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//***********************************************************
// サーボモーターを動かすプログラム No.2
// 博多電子工作室 2015/07/25
//***********************************************************
#include <Servo.h>	//サーボモーター用ライブラリを読み込み
Servo myservo;		//サーボ用のオブジェクトを作成
int val;			//サーボの角度を格納するための変数
void setup()
{
	myservo.attach(9); //デジタル9番ピンをサーボの角度命令出力ピンとして設定
	val = 0;
}
void loop()
{
	myservo.write(val); //サーボを動かす
	delay(1000);		//1秒停止
	if(val >= 180)		//サーボの位置が180度なら次の位置を0度にセット
		val = 0;
	} else {			//それ以外であれ10度進める
		val += 10;
	}
}

どうですか、ちゃんと動きましたか?

次回はこのプログラムを基に、
180度まで行ったら0度に戻るのではなく、逆方向に10度刻みで動くプログラムを組みます。

これ、宿題にしましょうか。
みなさん、自分なりに考えてみてください。

Arduino UNO シミュレーター

Arduino用のシミュレーターで面白そうなのを見つけましたので紹介します。
「UnoArdusim」と言うソフトです。
Arduino UNO専用となります。

Arduino UNO シミュレーター
Arduino UNO シミュレーター

左のプログラム部分にスケッチを読み込んで 「RUN」すると
右の Arduino UNOボードでその動きを確認できます。
Arduino IDEのサンプルプログラムの 「Blink」を読み込んで「RUN」すると
LEDが点滅します。

まだ使い込んではいませんが、今後少しずつ使い方をUPして行く予定です。
「UnoArdusim」でググっても日本語のページは出て来ません。

ダウンロードは
UnoArduSim 公式ページから出来ます。
ダウンロード画面のファイル名の部分をクリックしてもダウンロード出来ません。
右の矢印ボタンをクリックしてください。

UnoArduSim公式ページ
UnoArduSim公式ページ

ちなみに Windows用 しかありません。