1
Други роботи / сервото ме базика
« -: Август 15, 2012, 04:00:48 pm »
Код: [Маркирай кода]
#include <Servo.h>
Servo miniServo;
int speed1Pin = 10;
int speed2Pin = 9;
int speed2APin = 4;
int speed2BPin = 5;
int speed1APin = 6;
int speed1BPin = 7;
int sensePin = 0;
int sensevalue = 0;
int distance = 400;
int servoPin = 11;
int read0 = 0;
int read180 = 0;
void setup ()
{
miniServo.attach(servoPin);
pinMode(speed1Pin,OUTPUT);
pinMode(speed2Pin,OUTPUT);
pinMode(speed1APin,OUTPUT);
pinMode(speed1BPin,OUTPUT);
pinMode(speed2APin,OUTPUT);
pinMode(speed2BPin,OUTPUT);
delay(5000);
runitslowly ();
}
void loop ()
{
miniServo.write(90);
sensevalue = analogRead(sensePin);
if (sensevalue < distance)
{
runitfast ();
}
miniServo.write(90);
if (sensevalue > distance)
{
stopit ();
delay(1000);
findroad ();
if (read0 > read180)
{
avoiditright ();
}
else
{
avoiditleft ();
}
}
}
void avoiditleft ()
{
analogWrite(speed2Pin,250);
digitalWrite(speed2APin,HIGH);
digitalWrite(speed2BPin,LOW);
analogWrite(speed1Pin,250);
digitalWrite(speed1APin,LOW);
digitalWrite(speed1BPin,HIGH);
delay(1500);
analogWrite(speed1Pin,0);
digitalWrite(speed1APin,LOW);
digitalWrite(speed1BPin,LOW);
analogWrite(speed2Pin,250);
digitalWrite(speed2APin,LOW);
digitalWrite(speed2BPin,HIGH);
}
void avoiditright ()
{
analogWrite(speed2Pin,250);
digitalWrite(speed2APin,HIGH);
digitalWrite(speed2BPin,LOW);
analogWrite(speed1Pin,250);
digitalWrite(speed1APin,HIGH);
digitalWrite(speed1BPin,LOW);
delay(1500);
analogWrite(speed1Pin,0);
digitalWrite(speed1APin,LOW);
digitalWrite(speed1BPin,LOW);
analogWrite(speed2Pin,250);
digitalWrite(speed2APin,LOW);
digitalWrite(speed2BPin,HIGH);
}
void runitslowly ()
{
for (int i = 100;i<250;i++)
{
analogWrite(speed2Pin,i);
digitalWrite(speed2APin,LOW);
digitalWrite(speed2BPin,HIGH);
delay(15);
}
}
void stopit ()
{
analogWrite(speed2Pin,0);
digitalWrite(speed2APin,LOW);
digitalWrite(speed2BPin,LOW);
//pausebreak
analogWrite(speed1Pin,0);
digitalWrite(speed1APin,LOW);
digitalWrite(speed1BPin,LOW);
}
void runitfast ()
{
analogWrite(speed2Pin,250);
digitalWrite(speed2APin,LOW);
digitalWrite(speed2BPin,HIGH);
}
void findroad ()
{
delay(500);
miniServo.write(0);
read0 = analogRead(sensePin);
delay(1000);
miniServo.write(180);
read180 = analogRead(sensePin);
delay(1000);
miniServo.write(90);
}