AUTONOMA plast skräp DISPOSALDRONE-TRASH-BOT (4 / 5 steg)
Steg 4: Kod del
#include
#define utrigger 13 / / Arduino pin13 knutna till trigger pin på ultrasonic sensor.
#define uecho 12 / / Arduino pin12 knutna till echo pin på ultrasonic sensor.
#define umaxdistance 250 / / maximalt avstånd vi vill skicka ping (i centimeter). Maximal sensorn avståndet är dimensionerade för 400-500cm.
#define rightmotorinput1 3 //defining 11 stift till motor logic1 i H-Bridge
#define rightmotorinput2 4 //defining 10 stift till motor logic2 i H-Bridge
#define leftmotorinput1 5 //defining 9 stift till motor logic3 i H-Bridge
#define leftmotorinput2 6 //defining 8 pin till motor logic4 i H-Bridge
#define updownmotorinput1 7 //defining 8 pin till motor logic4 i H-Bridge
#define updownmotorinput2 6
NewPing sonar (utrigger, uecho, umaxdistance);
int inByte; variabel för att lagra värdet läsa
int enb = 2;
void setup()
{/ / Starta serieport på 9600 bps:
Serial.BEGIN(9200);
tag (!. Serial)
{; / / wait för seriell port att ansluta. Behövs för Leonardo endast
}
pinMode(rightmotorinput1,OUTPUT);
pinMode(rightmotorinput2,OUTPUT);
pinMode(leftmotorinput1,OUTPUT);
pinMode(leftmotorinput2,OUTPUT);
pinMode(updownmotorinput1,OUTPUT);
pinMode(updownmotorinput2,OUTPUT);
pinMode(enb,INPUT);
}
void loop()
{
Delay(500);
digitalWrite(enb,HIGH);
unsigned int oss = sonar.ping(); Skicka ping, ping tid i mikrosekunder (oss) att få.
Serial.Print ("Ping:"); skriver ut data i mellan ""
Serial.Print(US / US_ROUNDTRIP_CM); Konvertera ping tid till avståndet i cm och utskriftsresultatet (0 = utanför förutbestämd distans intervall)
Serial.println("cm");
om (Serial.available() > 0)
{
inByte = Serial.read();
Switch (inByte)
{
fallet "r": / / om seriell print r bot rör sig rätt.
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,HIGH);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
bryta;
fallet "l": / / om seriell print l bot flyttar vänster.
digitalWrite(rightmotorinput1,HIGH);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,LOW);
digitalWrite(leftmotorinput2,HIGH);
bryta;
fallet "f": / / om seriell print f bot rör sig framåt.
digitalWrite(rightmotorinput1,HIGH);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
bryta;
fallet "b": / / om seriell print b bot flyttar revers.
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,HIGH);
digitalWrite(leftmotorinput1,LOW);
digitalWrite(leftmotorinput2,HIGH);
bryta;
fall skulle ": / / om seriell print b bot flyttar revers.
digitalWrite(updownmotorinput1,HIGH);
digitalWrite(updownmotorinput2,LOW);
Delay(1000);
digitalWrite(updownmotorinput1,LOW);
digitalWrite(updownmotorinput2,LOW);
inByte = "0";
bryta;
fallet "u": / / om seriell print b bot flyttar revers.
digitalWrite(updownmotorinput1,LOW);
digitalWrite(updownmotorinput2,HIGH);
Delay(1000);
digitalWrite(updownmotorinput1,LOW);
digitalWrite(updownmotorinput2,LOW);
inByte = "0";
bryta;
't i mål ":
digitalWrite(rightmotorinput1,HIGH);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
bryta;
fallet ": / / om seriell print b bot flyttar revers. Al:
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,LOW);
digitalWrite(leftmotorinput2,LOW);
bryta;
ärende '2': / / om seriell print b bot flyttar revers.
om (oss/US_ROUNDTRIP_CM < 20 & & oss/US_ROUNDTRIP_CM! = 0) / / kontrollera avståndet om avstånd mindre än 5cm och inte lika med noll
{
Serial.println("IOF");
digitalWrite(rightmotorinput1,LOW);
digitalWrite(leftmotorinput2,LOW);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,LOW);
om (Serial.available()==1)
{
inByte = Serial.read();
IF(inByte=='s')
{
gå till al;
}
}
Delay(1000);
digitalWrite(rightmotorinput2,HIGH);
digitalWrite(rightmotorinput1,LOW);
digitalWrite(leftmotorinput2,HIGH);
digitalWrite(leftmotorinput1,LOW);
om (Serial.available()==1)
{
inByte = Serial.read();
IF(inByte=='s')
{
gå till al;
}
}
Delay(2000);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
om (Serial.available()==1)
{
inByte = Serial.read();
IF(inByte=='s')
{
gå till al;
}
}
Delay(2000);
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,HIGH);
om (Serial.available()==1)
{
inByte = Serial.read();
IF(inByte=='s')
{
gå till al;
}
}
Delay(1000);
}
annat
{
Serial.println("else");
digitalWrite(rightmotorinput1,HIGH);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,HIGH);
digitalWrite(leftmotorinput2,LOW);
}
bryta;
}
} /*
Delay(1000);
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,LOW);
digitalWrite(leftmotorinput1,LOW);
digitalWrite(leftmotorinput2,LOW);
digitalWrite(rightmotorinput1,LOW);
digitalWrite(rightmotorinput2,LOW);
*/
}