Stap 4: codering
Onze code voert de volgende functies:
- De robot heeft een vast uitgangspositie. Hij beweegt vandaar naar grijpen een fles van olieverf uit de stand (die ernaast), opent de grijper, vangsten van de greep van de fles en scherpt de grip van de fles.
- Vanaf hier, het wordt verplaatst naar de positie van het bad het water, dat is rechts onder de grijper, verplaatst naar het meest rechtse einde van het zwembad water, perst de fles eenmaal, wordt verplaatst naar het centrum, knijpt, wordt verplaatst naar de meest linkse positie en druppels van een andere druppel verf.
- Het gaat dan terug naar haar aanvankelijke standpunt
- Daarna komt het terug te nemen van een andere kleur verf
- En voert (2) opnieuw, maar dit tijd daalt slechts 2 druppels van verf op punten anders dan waar het eerder de verf was gedaald.
/ * Verwijzingen: Adafruit motor Shield gelijkstroommotor voorbeeld genaamd MotorTest
BitVoicer voorbeeld softwareprogramma voor schakelen LED's. We gebruikten de objecten uit dit voorbeeld alleen voor instantiëren * /
#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();
Boole sampleTest = false;
dataType byte = 0;
VOID Setup {}
Serial.begin(9600);
Serial.println ("Adafruit Motorshield v2 - DC Motor test!");
AFMS.begin();
myMotor4 -> setSpeed(150);
myMotor4 -> run(FORWARD);
inschakelen motor
myMotor4 -> run(RELEASE);
myMotor2 -> setSpeed(150);
myMotor2 -> run(FORWARD);
inschakelen motor
myMotor2 -> run(RELEASE);
bvSerial.setAnalogReference(BV_EXTERNAL);
bvSerial.setAudioInput(0);
Serial.begin(9600);
}
void loop {}
Als (sampleTest == true)
{
bvSerial.processAudio(46);
}
Als (bvSerial.engineRunning)
{
bvSerial.processAudio(46);
}
}
VOID serialEvent()
{
dataType = bvSerial.getData();
Als (dataType == BV_COMMAND)
sampleTest = bvSerial.cmdData;
Als (dataType == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening();
Als (dataType == BV_STR)
func1();
}
VOID func1 () ///3 druppels
{
Als (bvSerial.strData == "vijf")
{
myMotor4 -> run(FORWARD); gaat om het halen van kleur
myMotor4 -> setSpeed(150);
delay(3000);
myMotor4 -> setSpeed(0);
delay(300);
myMotor2 -> uitvoeren (achterwaarts); //opening de grijper
myMotor2 -> setSpeed(150);
delay(380);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (in voorwaartse richting); //closing de grijper
myMotor2 -> setSpeed(150);
delay(600);
myMotor2 -> setSpeed(0);
delay(400);
myMotor3 -> run(BACKWARD); beweegt de grijper op bovenkant
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
delay(4000);
myMotor4 -> setSpeed(0);
delay(300);
myMotor2 -> uitvoeren (in voorwaartse richting); //squeezing de grijper
myMotor2 -> setSpeed(200);
delay(300);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (achterwaarts); //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 -> uitvoeren (in voorwaartse richting); //squeezing de grijper
myMotor2 -> setSpeed(150);
delay(300);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (achterwaarts); //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 -> uitvoeren (in voorwaartse richting); //squeezing de grijper
myMotor2 -> setSpeed(150);
delay(300);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (achterwaarts); //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 -> uitvoeren (achterwaarts); //opening de grijper
myMotor2 -> setSpeed(150);
delay(400);
myMotor2 -> setSpeed(0);
delay(400);
myMotor4 -> uitvoeren (achterwaarts); //opening de grijper
myMotor4 -> setSpeed(150);
delay(4000);
myMotor4 -> setSpeed(0);
delay(400);
func2();
}
else if (bvSerial.strData == "two")
{
two_drops();
}
anders
{
bvSerial.startStopListening();
bvSerial.sendToBV ("fout:" + bvSerial.strData);
bvSerial.startStopListening();
}
}
VOID func2 () ///2 druppels
{
myMotor4 -> run(FORWARD); gaat om het halen van kleur
myMotor4 -> setSpeed(150);
delay(4000);
myMotor4 -> setSpeed(0);
delay(300);
myMotor2 -> uitvoeren (achterwaarts); //opening de grijper
myMotor2 -> setSpeed(150);
delay(380);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (in voorwaartse richting); //closing de grijper
myMotor2 -> setSpeed(150);
delay(600);
myMotor2 -> setSpeed(0);
delay(400);
myMotor3 -> run(BACKWARD); beweegt de grijper op bovenkant
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
delay(3500);
myMotor4 -> setSpeed(0);
delay(300);
myMotor2 -> uitvoeren (in voorwaartse richting); //squeezing de grijper
myMotor2 -> setSpeed(150);
delay(300);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (achterwaarts); //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); beweegt de grijper op bovenkant
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor3 -> run(BACKWARD); beweegt de grijper op hieronder
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor3 -> run(FORWARD); beweegt de grijper op bovenkant
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor3 -> run(BACKWARD); beweegt de grijper op hieronder
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor3 -> run(FORWARD); beweegt de grijper op bovenkant
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor3 -> run(BACKWARD); beweegt de grijper op hieronder
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
delay(1000);
myMotor4 -> setSpeed(0);
delay(300);
myMotor2 -> uitvoeren (in voorwaartse richting); //squeezing de grijper
myMotor2 -> setSpeed(150);
delay(300);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (achterwaarts); //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 -> uitvoeren (achterwaarts); //opening de grijper
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); gaat om het halen van kleur
myMotor4 -> setSpeed(150);
delay(3000);
myMotor4 -> setSpeed(0);
delay(300);
myMotor2 -> uitvoeren (achterwaarts); //opening de grijper
myMotor2 -> setSpeed(150);
delay(380);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (in voorwaartse richting); //closing de grijper
myMotor2 -> setSpeed(150);
delay(600);
myMotor2 -> setSpeed(0);
delay(400);
myMotor3 -> run(BACKWARD); beweegt de grijper op bovenkant
myMotor3 -> setSpeed(150);
delay(600);
myMotor3 -> setSpeed(0);
delay(300);
myMotor4 -> run(BACKWARD);
myMotor4 -> setSpeed(150);
delay(3500);
myMotor4 -> setSpeed(0);
delay(300);
myMotor2 -> uitvoeren (in voorwaartse richting); //squeezing de grijper
myMotor2 -> setSpeed(150);
delay(300);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (achterwaarts); //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 -> uitvoeren (in voorwaartse richting); //squeezing de grijper
myMotor2 -> setSpeed(150);
delay(300);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (achterwaarts); //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 -> uitvoeren (achterwaarts); //opening de grijper
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 -> uitvoeren (achterwaarts); //opening de grijper
myMotor2 -> setSpeed(150);
delay(380);
myMotor2 -> setSpeed(0);
delay(200);
myMotor2 -> uitvoeren (in voorwaartse richting); //closing de grijper
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 -> uitvoeren (achterwaarts); //opening de grijper
myMotor2 -> setSpeed(150);
delay(380);
myMotor2 -> setSpeed(0);
delay(200);
myMotor4 -> run(FORWARD);
myMotor4 -> setSpeed(150);
delay(3000);
myMotor4 -> setSpeed(0);
delay(400);
}