ひらおかさんのプログラムサンプル3

 
//For Hiraoka
//ShockSensor & Solenoid & Motor
//2009.7.21

//PinAssign
int SOLENOID=11;
int SWITCH=12;
int SHOCK=14;
//StepMotorPin
int ST_X1=2;
int ST_X2=4;
int ST_Y1=3;
int ST_Y2=5;
//Tsumami
int Pot=5;

//Value
#define MAX 100
int rythm_cnt=0;
int rythm[MAX];
int dly;
int MotorCnt;

//Setup
void setup(){
pinMode(SOLENOID,OUTPUT);
pinMode(SHOCK,INPUT);
pinMode(SWITCH,INPUT);
pinMode(ST_X1, OUTPUT);
pinMode(ST_X2, OUTPUT);
pinMode(ST_Y1, OUTPUT);
pinMode(ST_Y2, OUTPUT);
pinMode(ledPin, OUTPUT);

for(int i=0; i<MAX; i++){
rythm[i]=0;
}
}

//Loop
void loop(){
rythm_cnt++;
if(rythm_cnt>=MAX) rythm_cnt=0;
if(digitalRead(SHOCK)==1){
rythm[rythm_cnt]=1;
}

dly=50;
for(int i=0; i<dly; i++){
delay(1);
if(digitalRead(SWITCH)==1) {
for(int j=0; j<MAX; j++){
rythm[j]=0;
rythm_cnt=0;
}
}
if(rythm[rythm_cnt]==0){
MotorCnt++;
MoveMotor(MotorCnt);
}
}

if(rythm[rythm_cnt]==1){
digitalWrite(SOLENOID,HIGH);
}
else{
digitalWrite(SOLENOID,LOW);
MotorCnt++;
MoveMotor(MotorCnt);

}
}


//MoveMotor
void MoveMotor(int stp){
int s;
s=stp%8;

switch(s){
case 0:
digitalWrite(ST_X1, HIGH);
digitalWrite(ST_X2, LOW);
digitalWrite(ST_Y1, LOW);
digitalWrite(ST_Y2, LOW);
dly = analogRead(Pot)/4;
delay(dly);
break;

case 1:
digitalWrite(ST_X1, HIGH);
digitalWrite(ST_X2, HIGH);
digitalWrite(ST_Y1, LOW);
digitalWrite(ST_Y2, LOW);
dly = analogRead(Pot)/4;
delay(dly);
break;

case 2:
digitalWrite(ST_X1, LOW);
digitalWrite(ST_X2, HIGH);
digitalWrite(ST_Y1, LOW);
digitalWrite(ST_Y2, LOW);
dly = analogRead(Pot)/4;
delay(dly);
break;

case 3:
digitalWrite(ST_X1, LOW);
digitalWrite(ST_X2, HIGH);
digitalWrite(ST_Y1, HIGH);
digitalWrite(ST_Y2, LOW);
dly = analogRead(Pot)/4;
delay(dly);
break;

case 4:
digitalWrite(ST_X1, LOW);
digitalWrite(ST_X2, LOW);
digitalWrite(ST_Y1, HIGH);
digitalWrite(ST_Y2, LOW);
dly = analogRead(Pot)/4;
delay(dly);
break;

case 5:
digitalWrite(ST_X1, LOW);
digitalWrite(ST_X2, LOW);
digitalWrite(ST_Y1, HIGH);
digitalWrite(ST_Y2, HIGH);
dly = analogRead(Pot)/4;
delay(dly);
break;

case 6:
digitalWrite(ST_X1, LOW);
digitalWrite(ST_X2, LOW);
digitalWrite(ST_Y1, LOW);
digitalWrite(ST_Y2, HIGH);
dly = analogRead(Pot)/4;
delay(dly);
break;

case 7:
digitalWrite(ST_X1, HIGH);
digitalWrite(ST_X2, LOW);
digitalWrite(ST_Y1, LOW);
digitalWrite(ST_Y2, HIGH);
dly = analogRead(Pot)/4;
delay(dly);
break;
}
}

//StopMotor
void StopMotor(){
digitalWrite(ST_X1, LOW);
digitalWrite(ST_X2, LOW);
digitalWrite(ST_Y1, LOW);
digitalWrite(ST_Y2, LOW);
}


サーボモーターが4つ、スイッチが4つ、リセットスイッチが1つ。

 
//For Monma
//Servo*4 and Switch*4 and ResetSwitch*1
//2009.7.17

//Pin
//DIGITAL PIN (8,9,10,11)
int Servo_pin[4]={8,9,10,11};

//ANALOG IN PIN (0, 1, 2, 3)
int Switch_pin[4]={14,15,16,17};
//ANALOG IN PIN (5)
int ResetSwitch_pin = 19;

//ServoSpeed
int Speed_val[4]={50,50,50,50};



//Value
signed int Servo_val[4]={
0,0,0,0};
int MaxCnt=2000;

//Init
void setup(){
for(int i=0; i<4; i++){
pinMode(Servo_pin[i],OUTPUT);
pinMode(Switch_pin[i],INPUT);
Servo_val[i]=90;
}
pinMode(ResetSwitch_pin,INPUT);
}

//Loop
void loop(){
for(int i=0; i<1; i++){
if(digitalRead(Switch_pin[i])){
Servo_val[i]+=Speed_val[i];
if(Servo_val[i]>MaxCnt)Servo_val[i]=MaxCnt;
}
else{
if(digitalRead(ResetSwitch_pin)==1) Servo_val[i]=90;
}
}
Control_Servo4();
}


void Control_Servo4(){
//Control Servo 4
for(int i=0; i<4; i++){
digitalWrite(Servo_pin[i],HIGH);
}
for(int i=0; i<4; i++){
delayMicroseconds(Servo_val[i]+500/4);
}
for(int i=0; i<4; i++){
digitalWrite(Servo_pin[i],LOW);
}
for(int i=0; i<4; i++){
delayMicroseconds((10000-(Servo_val[i]+500))/4);
}
delayMicroseconds(10000);
}

タミヤのパーツ


ユニバーサルギアボックス


工作ロボ&クラフト


山形駅前のシバタモデルにありました。「楽しい工作シリーズ」

アルミの板の素材



アルミの板は、NCマシン(いつもブーンという機械)で削れます。
アクリルのように、板をカットして、折り曲げることでいろんな形にできます。

削りやすくできているアルミが、「A5052」です。「快削アルミ」ともいいます。
ホームセンターで売っているアルミの板だと、粘りっこいアルミになっていて、削りにくいです。ロボット系を考えている人は、アルミはA5052にしないと加工がやりにくいです。
オリジナルマインドで買えます

ベアリングなどの動かす系の部品



オリジナルマインド

回転するものを作りたいときに、きちんとベアリングを入れてあるかどうかが、キーポイントになります。外から見えなくて地味だけど、しっかり作りたい人はいれておいて間違いないです。

ベアリングで、板に軸を固定する方法が紹介されていて、固定方法を考えるのに参考になります

Arduino関係の購入先


スイッチサイエンス

Arduinoをはじめ、使いやすくできているいろんな部品の大元は、Sparkfunという海外のお店です。もともと学生が始めた電子回路の情報サイトがお店になりました。詳細はこちら

LEDいろいろ




LEDは、秋月電子で買うのが安いです。大量に欲しいときも、だいたい大丈夫です。
最近、テープ状のLEDを扱ってくれてるので、LEDで手軽に広めに明るくしたいところなどは便利です。

最近は、千石電商がLED向けに、放熱基板を売ってくれてます。手軽にLED照明を作りたい人は千石電商の基板がいいと思います。通販では扱ってないのかな??

その他で、ものすごく明るいLEDが欲しかったりすると、「パワーLED」って呼ばれるものがあります。


これは、ストロベリーリナックスがいいです。
乾電池でパワーLEDをつけられる部品が出ました!


ほかに、パワーLED関係は、オーディオQも多種類あつかっていていいです。オーディオなのにLEDなのはナゾです。。