So-net無料ブログ作成
検索選択

スカイメモSTを修理する(7) [スカイメモST Arduino]

恥ずかしながら、なんとかモーターを回せるスケッチを書いてアップしたところ、親切にも、yosshi様から、簡潔なスケッチの書き方を教えていただきました。その道の先輩の教えはありがたいものです。早速、void loopを以下のように書き換えました。

void loop(){

int a; int b; int c; int d;


L6470_busydelay(50); //busyフラグがHIGHになってから、指定ミリ秒待つ。
L6470_run(1,223);//指定方向に連続回転

while (digitalRead(2) == HIGH) { //2番ピンとつながってるスイッチがonになったら下記を実行

L6470_run(1,4500);

int a=1;}

while (digitalRead(3) == HIGH) { //3番ピンとつながってるスイッチがonになったら下記を実行

L6470_run(1,450);

int b=1;}



while (digitalRead(4) == HIGH)
{//4番ピンとつながってるスイッチがonになったら下記を実行
delay(50);
L6470_hardstop();
L6470_busydelay(50);
}
if (digitalRead(4) == LOW){
delay(50);

L6470_hardstop();//HradStop_急停止
L6470_run(1,223);//恒星時運転連続回転
}




while (digitalRead(5) == HIGH) {//5番ピンとつながってるスイッチがonになったら下記を実行

L6470_run(0,450);

int c=1;}

while (digitalRead(6) == HIGH) { //6番ピンとつながってるスイッチがonになったら下記を実行

L6470_run(0,4500);

int d=1;}

}

順調に作動しています(^-^)。

nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

yosshi

当方2軸駆動用のスケッチを書きました。
知人に運用依頼したところ(小型赤道儀を所有していないので)木星を500倍以上拡大追尾して若干の不具合がありました。
*赤経追尾速度若干不安定。
*赤緯応答速度が遅い。
udo20さんでもテスト運用して頂けないでしょうか?
LANケーブル8回線でぎりぎりです。
RS232cで9回線。当方両方使用しています。

void loop(){

int sample=1;//1倍、2倍、10倍用
double rpm =1325;//ステップ用
int muki =1;//正転、逆転用向き変更

//0.963月用係数。トグロswで月恒星切替。14番確認していません。アナログをデジタル使用
if (digitalRead(14) == HIGH){ rpm =1290; }//月
if (digitalRead(14) == LOW){ rpm =1325; }//恒星

//指定方向に連続回転恒星用ステップ
L6470_run(1,rpm);

//2倍速信号3回路ロータリswで1倍、2倍、max切替。1倍速配線なしとする。
if (digitalRead(7) == HIGH){ sample=2; }

//MAX倍速信号今回10倍速
if (digitalRead(2) == HIGH){ sample=10; }

//一度押すと1倍速で赤経-0.7正転、2・max倍速で逆転
while (digitalRead(5) == HIGH){
if (digitalRead(7) == HIGH || digitalRead(2) == HIGH){
muki=0;
}
L6470_run(muki,(sample-0.3)*rpm);
delay(10);//swのチャタリングを防ぐため必須
if (digitalRead(5) == LOW){
L6470_hardstop();
}
}

//一度押すと1倍速赤経1.2正転、2倍速で2.2、10倍速で10.2
while (digitalRead(4) == HIGH){
L6470_run(1,(sample+0.2)*rpm);
delay(10);
if (digitalRead(4) == LOW){
L6470_hardstop();
}
}

//経緯正転1.0倍速(2倍速、10倍速)
while (digitalRead(3) == HIGH){
L6470_run2(1,sample*rpm);
delay(10);
if (digitalRead(3) == LOW){
L6470_hardstop2();
}
}

//経緯逆転1.0倍速
while (digitalRead(6) == HIGH){
L6470_run2(0,sample*rpm);
delay(10);
if (digitalRead(6) == LOW){
L6470_hardstop2();
}
}
}

by yosshi (2015-05-26 11:27) 

yosshi

訂正します。

//2倍速信号3回路ロータリswで1倍、2倍、max切替。1倍速配線なしとする。
 3回路→1回路3接点
です。
by yosshi (2015-05-28 07:01) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0