Automatiserad marmor målning! (4 / 6 steg)
Steg 4: kodning
Vår kod utför följande funktioner:
- Den robotic har en fast utgångspunkt. Det flyttar därifrån till hugg efter en flaska oljefärg från stativet (som är bredvid det), öppnar gripdon, fångar tag i flaskan och stramar klorna på flaskan.
- Från här, den flyttas till positionen för badkaret av bevattna, som är nedanför gripdon, flyttar till längst till höger efter vatten poolen, kramar flaskan en gång, flyttar till centrum, kramar, flyttas till den vänstra placeringen och droppar en annan droppe färg.
- Det går sedan tillbaka till utgångsläget
- Nästa kommer det tillbaka till ta en annan färg färg
- Och utför (2) igen, men denna tid droppar bara 2 droppar färg vid punkter skiljer sig från där det hade tappat färgen tidigare.
/ * Referenser: Adafruit motor sköld likströmsmotor exempel kallas MotorTest
BitVoicer programvara exempel program för att byta LED. Vi använde objekt från detta exempel bara för instansiering * /
#include < Wire.h >
#include < Adafruit_MotorShield.h >
#include "utility/Adafruit_PWMServoDriver.h"
#include < BitVoicer11.h >
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor * myMotor1 = AFMS.getMotor(1);
Adafruit_DCMotor * myMotor2 = AFMS.getMotor(2);
Adafruit_DCMotor * myMotor3 = AFMS.getMotor(3);
Adafruit_DCMotor * myMotor4 = AFMS.getMotor(4);
BitVoicerSerial bvSerial = BitVoicerSerial();
booleska sampleTest = false;
Datatypen byte = 0;
void setup() {
Serial.BEGIN(9600);
Serial.println ("Adafruit Motorshield v2 - DC Motor test!");
AFMS.begin();
myMotor4 -> setSpeed(150);
myMotor4 -> run(FORWARD);
slå på motor
myMotor4 -> run(RELEASE);
myMotor2 -> setSpeed(150);
myMotor2 -> run(FORWARD);
slå på motor
myMotor2 -> run(RELEASE);
bvSerial.setAnalogReference(BV_EXTERNAL);
bvSerial.setAudioInput(0);
Serial.BEGIN(9600);
}
void loop() {
om (sampleTest == true)
{
bvSerial.processAudio(46);
}
om (bvSerial.engineRunning)
{
bvSerial.processAudio(46);
}
}
void serialEvent()
{
Datatypen = bvSerial.getData();
om (datatyp == BV_COMMAND)
sampleTest = bvSerial.cmdData;
om (datatyp == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening();
om (datatyp == BV_STR)
func1();
}
void func1 () ///3 droppar
{
om (bvSerial.strData == "fem")
{
myMotor4 -> run(FORWARD); kommer att plocka upp färg
myMotor4 -> setSpeed(150);
Delay(3000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (bakåt); //opening gripdon
myMotor2 -> setSpeed(150);
Delay(380);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (framåt); //closing gripdon
myMotor2 -> setSpeed(150);
Delay(600);
myMotor2 -> setSpeed(0);
Delay(400);
myMotor3 -> run(BACKWARD); rör sig i handtaget på toppen
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(4000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (framåt); //squeezing gripdon
myMotor2 -> setSpeed(200);
Delay(300);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (bakåt); //Unsqueezing
myMotor2 -> setSpeed(250);
Delay(50);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(1000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (framåt); //squeezing gripdon
myMotor2 -> setSpeed(150);
Delay(300);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (bakåt); //Unsqueezing
myMotor2 -> setSpeed(150);
Delay(50);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(1000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (framåt); //squeezing gripdon
myMotor2 -> setSpeed(150);
Delay(300);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (bakåt); //Unsqueezing
myMotor2 -> setSpeed(150);
Delay(50);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(2000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor3 -> run(FORWARD);
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (bakåt); //opening gripdon
myMotor2 -> setSpeed(150);
Delay(400);
myMotor2 -> setSpeed(0);
Delay(400);
myMotor4 -> springa (bakåt); //opening gripdon
myMotor4 -> setSpeed(150);
Delay(4000);
myMotor4 -> setSpeed(0);
Delay(400);
func2();
}
annat if (bvSerial.strData == "två")
{
two_drops();
}
annat
{
bvSerial.startStopListening();
bvSerial.sendToBV ("fel:" + bvSerial.strData);
bvSerial.startStopListening();
}
}
void func2 () ///2 droppar
{
myMotor4 -> run(FORWARD); kommer att plocka upp färg
myMotor4 -> setSpeed(150);
Delay(4000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (bakåt); //opening gripdon
myMotor2 -> setSpeed(150);
Delay(380);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (framåt); //closing gripdon
myMotor2 -> setSpeed(150);
Delay(600);
myMotor2 -> setSpeed(0);
Delay(400);
myMotor3 -> run(BACKWARD); rör sig i handtaget på toppen
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(3500);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (framåt); //squeezing gripdon
myMotor2 -> setSpeed(150);
Delay(300);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (bakåt); //Unsqueezing
myMotor2 -> setSpeed(150);
Delay(50);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(1000);
myMotor4 -> setSpeed(0);
Delay(400);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(2000);
myMotor4 -> setSpeed(0);
Delay(400);
myMotor3 -> run(FORWARD); rör sig i handtaget på toppen
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor3 -> run(BACKWARD); rör sig i handtaget på nedan
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor3 -> run(FORWARD); rör sig i handtaget på toppen
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor3 -> run(BACKWARD); rör sig i handtaget på nedan
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor3 -> run(FORWARD); rör sig i handtaget på toppen
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor3 -> run(BACKWARD); rör sig i handtaget på nedan
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(1000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (framåt); //squeezing gripdon
myMotor2 -> setSpeed(150);
Delay(300);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (bakåt); //Unsqueezing
myMotor2 -> setSpeed(150);
Delay(50);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(2500);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor3 -> run(FORWARD);
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (bakåt); //opening gripdon
myMotor2 -> setSpeed(150);
Delay(400);
myMotor2 -> setSpeed(0);
Delay(400);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(3000);
myMotor4 -> setSpeed(0);
Delay(400);
}
void two_drops()
{
myMotor4 -> run(FORWARD); kommer att plocka upp färg
myMotor4 -> setSpeed(150);
Delay(3000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (bakåt); //opening gripdon
myMotor2 -> setSpeed(150);
Delay(380);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (framåt); //closing gripdon
myMotor2 -> setSpeed(150);
Delay(600);
myMotor2 -> setSpeed(0);
Delay(400);
myMotor3 -> run(BACKWARD); rör sig i handtaget på toppen
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(3500);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (framåt); //squeezing gripdon
myMotor2 -> setSpeed(150);
Delay(300);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (bakåt); //Unsqueezing
myMotor2 -> setSpeed(150);
Delay(50);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(1500);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (framåt); //squeezing gripdon
myMotor2 -> setSpeed(150);
Delay(300);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (bakåt); //Unsqueezing
myMotor2 -> setSpeed(150);
Delay(50);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(2000);
myMotor4 -> setSpeed(0);
Delay(300);
myMotor3 -> run(FORWARD);
myMotor3 -> setSpeed(150);
Delay(600);
myMotor3 -> setSpeed(0);
Delay(300);
myMotor2 -> springa (bakåt); //opening gripdon
myMotor2 -> setSpeed(150);
Delay(400);
myMotor2 -> setSpeed(0);
Delay(400);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(3000);
myMotor4 -> setSpeed(0);
Delay(400);
}
void brush()
{
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(3000);
myMotor4 -> setSpeed(0);
Delay(400);
myMotor2 -> springa (bakåt); //opening gripdon
myMotor2 -> setSpeed(150);
Delay(380);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor2 -> springa (framåt); //closing gripdon
myMotor2 -> setSpeed(150);
Delay(600);
myMotor2 -> setSpeed(0);
Delay(400);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(3000);
myMotor4 -> setSpeed(0);
Delay(400);
myMotor1 -> run(BACKWARD);
myMotor1 -> setSpeed(150);
Delay(600);
myMotor1 -> setSpeed(0);
Delay(400);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(1000);
myMotor4 -> setSpeed(0);
Delay(400);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(2000);
myMotor4 -> setSpeed(0);
Delay(400);
myMotor1 -> run(FORWARD);
myMotor1 -> setSpeed(150);
Delay(600);
myMotor1 -> setSpeed(0);
Delay(400);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
Delay(4000);
myMotor4 -> setSpeed(0);
Delay(400);
myMotor2 -> springa (bakåt); //opening gripdon
myMotor2 -> setSpeed(150);
Delay(380);
myMotor2 -> setSpeed(0);
Delay(200);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
Delay(3000);
myMotor4 -> setSpeed(0);
Delay(400);
}