Windows 10

Windows 10を公開日の7月29にいれて入れてみました。
スタートメニューが復活して自分的にはそれだけでWin 8 から乗換える価値あり(笑)

使用記は折々書いていきます。

見てくれはこんな感じ
Windows 10 スクリーンショット

インターネットの回線スピード

コワーキングスペースの回線速度がすごく遅く感じたので回線スピード測定して自宅と比較してみた。

使ったのは BNRスピードテスト というサイト。

コワーキングスペース
3.08Mbps
コワーキングスペース 回線速度

自宅
49.85Mbps
自宅 回線スピード

なんと16倍の差が……
自分はほぼインターネットに接続しての作業だから、このスピードはちょっと? となってしまう。

Microsoft BizSpark

Microsoft BizSparkとは

「開発に必要な開発ツールやクラウド環境、技術サポートを 3 年間無償で提供するプログラム。Visual Studio Ultimate with MSDN や Microsoft Azure が含まれており、起業に必要な IT 環境を無償で構築できます。設立 5 年未満のスタートアップ、もしくは法人化を目指す起業家が対象です。」

となっています。
https://www.microsoft.com/ja-jp/ventures/BizSpark.aspx

自分はまったく知らなかったのですが、ヨカラボ天神の知り合いに教えてもらいました。

「とりあえずフリーランスでホームページがあれば大丈夫ですよ。」
とのことだったので、申請してみました。

そしたらまず、以下のメールが

お世話になっております。
マイクロソフト BizSpark お問い合わせ窓口で す。

この度はMicrosoft BizSparkにお申し込みいただき誠にありがとうございます。

以下の点についてご確認の上、一週間以内にご連絡をお願い いたします。

・御社のソフトウェアベースの製品およびサービスの開発に おいて、BizSpark でご提供する弊社ソフトウェアをどう活かしていただけるのか、具体的な弊社ソフトウェア名等を交えて詳しくご説明 いただけ ますでしょうか。

さぁ困った、具体例とか考えていないし、文章考えるの苦手だし と思いながらとりあえず以下の返事をしてみた。

弊社では、マイクロコンピューターを使ってセンサー等からの入力やモーター、アクチュエーターへの出力したりするFA系のシステムを構築していま す。

現在Visual Studio 2010 Express Edition(VC++) でパソコンのアプリケーションを作成してUSB経由でのマイクロコンピューターと接続しての制御は既に実現していますので、
これをIoTとして進化させてInternet経由でのデータ収集やコントロールを実現する装置の開発販売を考えて おります。
その開発としてAzure と Visual Studio での開発・テストを行いたいと思い、今回申し込みさせていただきました。

よろしくお願いします。

駄目かなと思っていたら、審査通過のメールが届きました、ホッ。

うっっ、これで Office 2013 と Visual Studio が使える。あと Azure も。
ありがたいことです。

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版はこちら

CQ出版社 西沢昭 著 「Z80上級プログラミング」と言う本

懐かしい本をオークションで入手しました。

CQ出版社 西沢昭 著 「Z80上級プログラミング」

もう25年以上前、自分がFAの仕事をメインでやっていた頃
機械の制御はZ80をCPUに使ったマイコンボードとアセンブラ言語が主流でした。

当時すでにC言語での記述も一部にはありましたが、
プログラム領域のメモリサイズが16kB程度だったので、
プログラムサイズがC言語で書くと大きくなりすぎて現実的では有りませんでした。

この本は当時自分のバイブル的な本でした。
幾度かの引越しと制御系から離れていた性もあって、無くなっていました。

3年ほど前に、組込み制御の業務に戻り、当然言語もC言語だったのですが、
入力信号のフィルタリング処理に3度一致というフィルタリングとしてはしょぼいプログラムにびっくりしました。
自動車関連企業の最大手の会社がです。

ただ、制御系から離れていたので、自分が使っていたフィルタリングの処理をはっきりとは覚えていませんでした。
ネットでこの本を見かけたとき、「あっ、この本に確か入力フィルタリングに関しての記述があった」と思い、
タイミング良く、ヤフオクに出品されていたので直ぐに落札した次第です。

この本で解説してあるフィルタリングと3度一致の処理に関しては改めて記事を書きます。

「Z80上級プログラミング」

電子回路シミュレータ 123D Circuits に回路を登録

少し前に 電子回路シミュレータ 123D Circuits が遅くて使い物にならないと言う記事を書きましたが今日使ってみたらそこまで遅くありませんでした。

Web経由なので回線やサーバーの混み具合が影響しているのでしょうか。

さて話は変わりますが、来る2015/08/01(土)15:00 ~ 18:00 に ヨカラボ天神 にて
共同で 「基礎から説明 Arduino活用勉強会」を開催します。

この勉強会で使用する予定の Arduino の簡単な回路を
123D Circuits に登録しました。
LチカとSWの入力によるLEDのOn/Off、それとUnoArdusim サーボ編と同じ簡単なサーボ回路です。

ここの 123D Circuits のページ に置いています。

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シミュレータ UnoArdusim サーボ編 No.1

以前このブログで紹介した Arduino Simulator 「UnoArdusim」でサーボモーターを動かしてみました。

サーボモーターを 0度→90度→180度→90度→0度 の繰り返し動作をさせる単純なプログラムです。

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
//***********************************************************
// サーボモーターを動かすプログラム No.1
// 博多電子工作室 2015/07/25
//***********************************************************
#include <Servo.h>  //サーボモーター用ライブラリを読み込み
Servo myservo; //サーボ用のオブジェクトを作成
int val; //サーボの角度を格納するための変数
void setup()
{
	myservo.attach(9); //デジタル9番ピンをサーボの角度命令出力ピンとして設定
}
void loop()
{
	val = 0;
	myservo.write(val); //サーボを動かす(0度)
	delay(1000);
	val = 90;
	myservo.write(val); //サーボを動かす(90度)
	delay(1000);
	val = 180;
	myservo.write(val); //サーボを動かす(180度)
	delay(1000);
	val = 90;
	myservo.write(val); //サーボを動かす(90度)
	delay(1000);
}

これが今回動かすプログラムです。
サーボモーターを動かすので「サーボモーター用ライブラリ」を読み込んでいます。

UnoArdusimを起動します。
「File」メニューの「Load INO or PDE Prog…」で上記のプログラムを読み込むかまたは
「コードエリア」をダブルクリックしたら表示される
「View/Edit Program」ウインドウにプログラムをコピペで貼り付けて「Adpt」ボタンを押してください。

「モジュールエリア」の「サーボ」のところに 9 と入力します。
これで「サーボ」がArduinoの 入出力9 に接続されたことになります。

これで「実行」ボタン(緑の下矢印のボタン)を押すと「サーボ」が動き出します。
プログラムを停止するときは「ストップ」ボタン(中にSTOPと書いてある赤いボタン)を押してください。
プログラム中の
delay(1000);
が停止時間の設定です、この数字を大きくしたり小さくしたりして動きの変化を確認してください。
なお、単位は mS となっています。
1000 は 1000mS で 1秒となります。

UnoArdusim メイン画面

UnoArdusim View/Edit ウィンドウ

UnoArdusimはステップ送りとかブレークポイントの設定とかプログラムのデバック機能も有していますがこれらに関しては別の機会に説明します。