ブログの説明
パソコンやアンドロイドなどの情報を収集しまとめているブログです。

記事内に張られている画像はクリックすると見やすいサイズの画像が表示されるようになっています。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
アクセスカウンター
検索フォーム
カレンダー
10 | 2017/11 | 12
- - - 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 - -

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

エアガン弾速計作成その2:いくつか測ってみる

エアガン用弾速計関連記事


とりあえず計測ができるようになったので、校正を兼ねてエアガンの初速をいくつか計測してみました。

今回計測したエアガンは以下の物です。
エアコッキングハンドガン
・SOCOM Mk23
・M1911A1

固定ブローバックガスガン
・センチメーターマスター(旧型のHOPUP比搭載モデル)
・ウィルソンスーバーグレード(旧型のHOPUP比搭載モデル)

ガスブローバックガスガン
・デザートイーグル50AE(黒・10インチじゃない普通のモデル)

次世代電動ガン
・SOPMOD M4

続きを読む

スポンサーサイト

エアガン弾速計作成その1:エアガン弾速計作成

エアガン用弾速計関連記事



エアガンの弾速を測ろうと製品を探してみたところ、思っていた以上に高価だったため、Arduinoやフォトトランジスタなどを使用して自作する事にしました。


パーツリスト

1kΩの抵抗
330Ωの抵抗
赤外線LED
フォトトランジスタ
計測管用樹脂パイプ
Arduino UNO


弾速計測管

弾速計測管は70mmの長さで作り、50mm間隔で穴をあけ、そこにフォトトランジスタ赤外線LEDを取り付けました。


回路

弾速計測管用の回路は以下のサイトのフォトリフレクターを参考に作成しました。
赤外線LEDとフォトトランジスタを向かい合わせに配置し、間を通過する物体を検出するようにしています。
赤外線LEDの電流制限抵抗に330Ωの抵抗を、フォトトランジスタのプルアップ抵抗に1kΩの抵抗を使用しました。


ソースコード

bool flontFlag = false;
bool rearFlag = false;

//時間格納変数(時間はマイクロ秒)
unsigned long timeFront = 0;
unsigned long timeRear = 0;

//ハードウェア仕様
#define BARREL_L 48.28//計測区間のバレルの長さ(ミリメートル)


void setup()
{
	Serial.begin(9600);
	attachInterrupt(0, front, RISING);
	attachInterrupt(1, rear, RISING);

}

void loop()
{
	unsigned long dTime = 0;//通過時間格納変数(マイクロ秒)
	double speed = 0;//(単位:m/s)

	if( flontFlag )
	{
		//Serial.println("Through front.");
		flontFlag = false;
	}
	if( rearFlag )
	{
		//Serial.println("Through rear.");
		dTime = timeRear - timeFront;

		//速度計算式
		//[m]/[s]
		//=[mm]/[ms]
		//=[mm]/([μs]/1000)

		speed = BARREL_L / ( (double)(dTime) / 1000.0 );

		Serial.print("Front: ");
		Serial.println(timeFront);
		Serial.print("Rear: ");
		Serial.println(timeRear);
		Serial.print("dTime: ");
		Serial.println(dTime);


		Serial.print("Speed: ");
		Serial.print(speed);
		Serial.println(" m/s");

		rearFlag = false;
	}


}


void front()
{
	flontFlag = true;
	timeFront = micros();
}
void rear()
{
	rearFlag = true;
	timeRear = micros();
}


動作画面

まだ、ユーザーインタフェースが無い為、動作はシリアル通信のみです。
右の動作画面は、マルイのエアーコッキングM1911と同社の次世代SOPMOD M4の弾速を計測した画像です。
次世代電動ガンは反動がある為、計測時にフォトトランジスタが抜けてしまい、変なデータが混じってますが大体ネットで出回っている通りの値が出ています。


今後の課題

今後以下の事をする予定です。
・アクリル板でケースを作成し、ケースを作成。
・Kosianを使い、AndroidとArduinoをBluetooth(SPP)で接続。
・Androidで集計用アプリを作成。


参考:http://www.mars.dti.ne.jp/~ogura/e_hobby/bbspeed.html

構造体クイックソートサンプル

構造体の要素を参照し、クイックソートするサンプルです。

#include <iostream>
using namespace std;

struct SData
{
	int ID;
	char name[128];
};

void q_sort(SData numbers[], int left, int right)
{
    int l_hold, r_hold;
	SData pivot;

    l_hold = left;
    r_hold = right;
    pivot = numbers[left];
    while (left < right)
    {
		while ((numbers[right].ID >= pivot.ID) && (left < right))
            right--;
        if (left != right)
        {
            numbers[left] = numbers[right];
            left++;
        }
        while ((numbers[left].ID <= pivot.ID) && (left < right))
            left++;
        if (left != right)
        {
            numbers[right] = numbers[left];
            right--;
        }
    }
    numbers[left] = pivot;
    pivot.ID = left;
    left = l_hold;
    right = r_hold;
    if (left < pivot.ID)
        q_sort(numbers, left, pivot.ID-1);
    if (right > pivot.ID)
        q_sort(numbers, pivot.ID+1, right);
}

int main()
{
	SData data[10];

	for( int i = 0 ; i < 10 ; i++ )
	{
		data[i].ID = 9-i;
	}

	q_sort( data , 0 , 9 );

	for( int i = 0 ; i < 10 ; i++ )
	{
		cout << data[i].ID << endl;
	}

	return 0;
}

JavaでPNGをJPGに変換するサンプル

Javaに付属のライブラリでPNGファイルをJPGに変換するサンプルです。
マルチスレッドで変換するようになっています。
IOがネックで速度が低下する場合があるので、スレッドは増やし過ぎないようにしてください。

続きを読む

古いFirefoxを共存させ、GMapToGPXを使う方法

GMapToGPXの使い方
先日久々にGMapToGPXを使おうとしたら全く使えませんでした。
試しに古いPCで最近更新してないXPのパソコンでGMapToGPXを使ってみると問題なく使えるようでした。
ということは、サイト側の問題ではなくPC側が原因のようです。
というわけで、古いFirefoxをWindows7のPCにインストールしてみたところ問題なく使えました!
ただ、古いFirefoxは使いにくい部分もある為、共存させる方法を調べてみたところあっさり見つかりました。

続きを読む

最新トラックバック
ブロとも申請フォーム
QLOOKアクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。