Geautomatiseerde marmeren schilderij!!! (4 / 6 stap)

Stap 4: codering

Onze code voert de volgende functies:

  1. 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.
  2. 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.
  3. Het gaat dan terug naar haar aanvankelijke standpunt
  4. Daarna komt het terug te nemen van een andere kleur verf
  5. 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);

}

Gerelateerde Artikelen

Faux marmeren vloeren

Faux marmeren vloeren

FAUX MARMEREN vloerIk schilderde over de 30-jarige 12 x 12 tegels, toegepast met lijm over beton. Geen marmering technieken die ik heb gevonden zijn moeilijk. Doen van een grote vloer zou te hard aan te pakken met mijn artritis en fibromyalgie. Het k
3D Laser gesneden ingelijst schilderij

3D Laser gesneden ingelijst schilderij

Hallo weer allemaal!!!Zoals beloofd in mijn eerste Instructable "Laser gesneden Fine Art" is het tijd om te delen van mijn nieuw idee. Ik kon niet wachten hiervoor men.Ik hou echt van laser scharen, en ik ben altijd op zoek naar andere manieren
Hoe maak je een marmeren ontwerp op uw nagels.

Hoe maak je een marmeren ontwerp op uw nagels.

Het creëren van een marmeren ontwerp op uw nagels is langdurige en cool om naar te kijken. Schilderij nagels met gewoon het penseel kunnen vervelen, maar kunnend doen in water is veel meer vermakelijk en intrigerend. Hier zijn de materialen die u nod
Muur opknoping marmeren display

Muur opknoping marmeren display

Als u houdt van de knikkers maar dat haat kunt u uw favorieten weergevenDit is voor jouStap 1: 1. grijpen elke soort hout dat 1x4scrap is of nietZorg ervoor dat het 1 in.thick4 inch Wideen opdat 3 ft langGrijpen verschillende eye schroef in haken2 of
Water marmeren verf grote dingen!

Water marmeren verf grote dingen!

Ik weet zeker dat je hebt gezien alle die koud water marmeren lakken van nagels en kleine dingen, maar ik wilde doen van deze stijl van schilderen op grotere objecten. Ergens op het internet vond ik een blog die genoemd met Spray Paint in plaats van
Geautomatiseerde broeikasgassen

Geautomatiseerde broeikasgassen

We besloten om het ontwerp van een serre als onderwerp voor onze elektronische project. Het doel was om het regelen van de temperatuur in de serre Bedankt een lamp, een servomotor te openen van een venster en een PC-ventilator. We wilden om een vrij
Schilderij Tacoma Grill Surround

Schilderij Tacoma Grill Surround

Dus ik willen heb om dit te doen voor een tijdje nu, zag ik sommige u buis, sommige draden van de besprekingsgroep gelezen en dacht dat ik het een schot zou geven! Ik heb sommige problemen met het vinden van een duidelijk schrijven voor wat ik wilde,
Geautomatiseerd Wheelo--Santa's Shop 2016

Geautomatiseerd Wheelo--Santa's Shop 2016

Je ooit moe zijn van uw Wheelo met de hand te bedienen? Ik weet dat ik dat deed, zodat ik het proces met behulp van een servomotor te verhogen en verlagen van het wiel, een ping ultrasone transducer te detecteren locatie en een Arduino voor het beher
Somabot - een geautomatiseerde Barman (Intel IOT)

Somabot - een geautomatiseerde Barman (Intel IOT)

Somabot is een geautomatiseerde barman. Selecteer in de ingrediënten en en de drankjes zijn toegankelijk vanaf elke mobiel of desktop browser klaar om cocktails voor u maken. Ik heb een NFC-chip op de linksboven, bijgevoegd, zodat de controle-interfa
Stof schilderij Tutorial

Stof schilderij Tutorial

In deze tutorial laten we u hoe met land chique verf stof projecten met een beetje kleur aanpassen. Als u liever kijken naar een video, hebben we ook een video tutorial beschikbaar in de allerlaatste stap.Alle verf producten gebruikt in deze tutorial
Kwaad Fondant boom stomp marmeren Cake

Kwaad Fondant boom stomp marmeren Cake

Dit was mijn eerste keer een marmeren cake maken, en inderdaad ook het maken van fondant. Toch hou ik een uitdaging. Vrij veel de enige tools die ik had waren: een cake tin, deegroller, schaar, een penseel en bestek. Ik heb niet eens schalen, of beke
Geautomatiseerde zonne-aangedreven horizontale Blind Controller

Geautomatiseerde zonne-aangedreven horizontale Blind Controller

Ik begon dit project, omdat we sommige horizontale jaloezieën gelegen in een hoog raam over de belangrijkste deur naar ons huis hebben. Dit venster gezichten zuiden en hier in Colorado, dat betekent veel zon. Het zou leuk om te hebben dat zonlicht sh
Geautomatiseerde Instructable Views en favorieten Checker

Geautomatiseerde Instructable Views en favorieten Checker

Als een gebruiker Instructables dacht ergens ik van het hebben van een eenvoudige automatische tool waarmee u de standpunten en favorieten uit mijn Instrucatbles van Instructables.com site kunt controleren zonder dat ik eigenlijk op zoek naar de toep
Marmeren Vortex reparatie / Upgrade

Marmeren Vortex reparatie / Upgrade

Onze afkomstig Maui Makers (Ja op het eiland Maui, HI) heeft deze marmer Vortex (eigenlijk een demonstratie van hoe een zwaartekracht goed werkt). Friezen zijn rolde rond en dan vallen de zwaartekracht goed. Dit toont aan hoe planeten baan een ster.