センサーとLEDとモーターが組み合わさったサンプル

 
//For hiraoka
//Sensor and LED
//and STEPMOTOR
//20090707

//Pin
int ledpin1 = 8;
int ledpin2 = 9;
int ledpin3 = 10;
int ledpin4 = 13;

int ST_X1=2;
int ST_X2=4;
int ST_Y1=3;
int ST_Y2=5;
int Pot=5;
int Switch=6;

//Value
int led1 = 0;
int led2 = 0;
int led3 = 0;
int led4 = 0;

int sensor1 = 0;
int sensor2 = 0;
int sensor3 = 0;
int sensor4 = 0;

int dly;
int Count=0;

void setup(){
pinMode(ledpin1,OUTPUT);
pinMode(ledpin2,OUTPUT);
pinMode(ledpin3,OUTPUT);
pinMode(ledpin4,OUTPUT);

pinMode(ST_X1, OUTPUT);
pinMode(ST_X2, OUTPUT);
pinMode(ST_Y1, OUTPUT);
pinMode(ST_Y2, OUTPUT);
pinMode(Switch,INPUT);

dly = analogRead(Pot)/4;
}

void loop(){
sensor1 = analogRead(0)/4;
sensor2 = analogRead(1)/4;
sensor3 = analogRead(2)/4;
sensor4 = analogRead(5)/4;

led1 = sensor1;
led2 = sensor2;
led3 = sensor3;

//preview
led4 = sensor4;
soft_pwm();

if(digitalRead(Switch)==1){
Count=Count+1;
MoveMotor(Count);

}
else{
StopMotor();
}

}

void soft_pwm(){
for(int Duty=255; Duty>1; Duty--){
if(Duty<=led1){
digitalWrite(ledpin1, HIGH);
}
else{
digitalWrite(ledpin1, LOW);
}
if(Duty<=led2){
digitalWrite(ledpin2, HIGH);
}
else{
digitalWrite(ledpin2, LOW);
}
if(Duty<=led3){
digitalWrite(ledpin3, HIGH);
}
else{
digitalWrite(ledpin3, LOW);
}
if(Duty<=led4){
digitalWrite(ledpin4, HIGH);
}
else{
digitalWrite(ledpin4, LOW);
}
}
digitalWrite(ledpin1,LOW);
digitalWrite(ledpin2,LOW);
digitalWrite(ledpin3,LOW);
digitalWrite(ledpin4,LOW);

}



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;
}
}

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


0 件のコメント:

コメントを投稿