Automatisé en marbre peinture!!! (4 / 6 étapes)

Étape 4: codage

Notre code exécute les fonctions suivantes :

  1. Le robot a une position de départ fixe. Il se déplace de là pour attraper une bouteille de peinture à l’huile du support (ce qui est à côté d’elle), ouvre la pince, attrape la main sur la bouteille et resserre l’étau de la bouteille.
  2. De là, il se déplace à la position de la cuve de l’eau, ce qui est juste en dessous de la pince, se déplace jusqu’au bout à droite de la piscine de l’eau, ont aimé la bouteille une fois, se déplace vers le centre, serre, se déplace vers la butée et dépose une goutte de peinture.
  3. Puis il revient à sa position initiale
  4. Ensuite il revient de prendre une autre peinture de couleur
  5. Et présente des performances (2) encore une fois, mais ce temps gouttes seulement 2 gouttes de peinture à des points différents d’où il avait abandonné la peinture auparavant.

/ * Références : exemple de moteur de C.C de bouclier moteur Adafruit, appelé d
Programme d’exemple BitVoicer logiciel de commutation LED. Nous avons utilisé les objets de cet exemple juste pour l’instanciation * /

#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() ;

sampleTest booléen = false ;

le type de données Byte = 0 ;

void setup() {}

Serial.Begin(9600) ;

Serial.println ("Adafruit Motorshield v2 - test moteur DC!") ;

AFMS.begin() ;

myMotor4 -> setSpeed(150) ;

myMotor4 -> run(FORWARD) ;

mettre en marche le moteur

myMotor4 -> run(RELEASE) ;

myMotor2 -> setSpeed(150) ;

myMotor2 -> run(FORWARD) ;

mettre en marche le moteur

myMotor2 -> run(RELEASE) ;

bvSerial.setAnalogReference(BV_EXTERNAL) ;

bvSerial.setAudioInput(0) ;

Serial.Begin(9600) ;

}

void loop() {}

Si (sampleTest == true)

{

bvSerial.processAudio(46) ;

}

Si (bvSerial.engineRunning)

{

bvSerial.processAudio(46) ;

}

}

Sub serialEvent()

{

dataType = bvSerial.getData() ;

Si (dataType == BV_COMMAND)

sampleTest = bvSerial.cmdData ;

Si (dataType == BV_STATUS & & bvSerial.engineRunning == true)

bvSerial.startStopListening() ;

Si (dataType == BV_STR)

Func1() ;

}

Sub func1 () ///3 gouttes

{

Si (bvSerial.strData == « cinq »)

{

myMotor4 -> run(FORWARD) ; vient de ramasser de couleur

myMotor4 -> setSpeed(150) ;

Delay(3000) ;

myMotor4 -> setSpeed(0) ;

Delay(300) ;

myMotor2 -> Exécuter (BACKWARD); //opening la pince

myMotor2 -> setSpeed(150) ;

Delay(380) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (avec impatience); //closing la pince

myMotor2 -> setSpeed(150) ;

Delay(600) ;

myMotor2 -> setSpeed(0) ;

Delay(400) ;

myMotor3 -> run(BACKWARD) ; déplace la pince sur le dessus

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor4 -> run(BACKWARD) ;

myMotor4 -> setSpeed(150) ;

Delay(4000) ;

myMotor4 -> setSpeed(0) ;

Delay(300) ;

myMotor2 -> Exécuter (avec impatience); //squeezing la pince

myMotor2 -> setSpeed(200) ;

Delay(300) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (BACKWARD); //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 -> Exécuter (avec impatience); //squeezing la pince

myMotor2 -> setSpeed(150) ;

Delay(300) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (BACKWARD); //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 -> Exécuter (avec impatience); //squeezing la pince

myMotor2 -> setSpeed(150) ;

Delay(300) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (BACKWARD); //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 -> Exécuter (BACKWARD); //opening la pince

myMotor2 -> setSpeed(150) ;

Delay(400) ;

myMotor2 -> setSpeed(0) ;

Delay(400) ;

myMotor4 -> Exécuter (BACKWARD); //opening la pince

myMotor4 -> setSpeed(150) ;

Delay(4000) ;

myMotor4 -> setSpeed(0) ;

Delay(400) ;

Func2() ;

}

ElseIf (bvSerial.strData == « deux »)

{

two_drops() ;

}

d’autre

{

bvSerial.startStopListening() ;

bvSerial.sendToBV ("ERROR:" + bvSerial.strData) ;

bvSerial.startStopListening() ;

}

}

Sub func2 () ///2 gouttes

{

myMotor4 -> run(FORWARD) ; vient de ramasser de couleur

myMotor4 -> setSpeed(150) ;

Delay(4000) ;

myMotor4 -> setSpeed(0) ;

Delay(300) ;

myMotor2 -> Exécuter (BACKWARD); //opening la pince

myMotor2 -> setSpeed(150) ;

Delay(380) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (avec impatience); //closing la pince

myMotor2 -> setSpeed(150) ;

Delay(600) ;

myMotor2 -> setSpeed(0) ;

Delay(400) ;

myMotor3 -> run(BACKWARD) ; déplace la pince sur le dessus

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor4 -> run(BACKWARD) ;

myMotor4 -> setSpeed(150) ;

Delay(3500) ;

myMotor4 -> setSpeed(0) ;

Delay(300) ;

myMotor2 -> Exécuter (avec impatience); //squeezing la pince

myMotor2 -> setSpeed(150) ;

Delay(300) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (BACKWARD); //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) ; déplace la pince sur le dessus

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor3 -> run(BACKWARD) ; déplace la pince ci-dessous

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor3 -> run(FORWARD) ; déplace la pince sur le dessus

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor3 -> run(BACKWARD) ; déplace la pince ci-dessous

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor3 -> run(FORWARD) ; déplace la pince sur le dessus

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor3 -> run(BACKWARD) ; déplace la pince ci-dessous

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor4 -> run(FORWARD) ;

myMotor4 -> setSpeed(150) ;

Delay(1000) ;

myMotor4 -> setSpeed(0) ;

Delay(300) ;

myMotor2 -> Exécuter (avec impatience); //squeezing la pince

myMotor2 -> setSpeed(150) ;

Delay(300) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (BACKWARD); //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 -> Exécuter (BACKWARD); //opening la pince

myMotor2 -> setSpeed(150) ;

Delay(400) ;

myMotor2 -> setSpeed(0) ;

Delay(400) ;

myMotor4 -> run(BACKWARD) ;

myMotor4 -> setSpeed(150) ;

Delay(3000) ;

myMotor4 -> setSpeed(0) ;

Delay(400) ;

}

Sub two_drops()

{

myMotor4 -> run(FORWARD) ; vient de ramasser de couleur

myMotor4 -> setSpeed(150) ;

Delay(3000) ;

myMotor4 -> setSpeed(0) ;

Delay(300) ;

myMotor2 -> Exécuter (BACKWARD); //opening la pince

myMotor2 -> setSpeed(150) ;

Delay(380) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (avec impatience); //closing la pince

myMotor2 -> setSpeed(150) ;

Delay(600) ;

myMotor2 -> setSpeed(0) ;

Delay(400) ;

myMotor3 -> run(BACKWARD) ; déplace la pince sur le dessus

myMotor3 -> setSpeed(150) ;

Delay(600) ;

myMotor3 -> setSpeed(0) ;

Delay(300) ;

myMotor4 -> run(BACKWARD) ;

myMotor4 -> setSpeed(150) ;

Delay(3500) ;

myMotor4 -> setSpeed(0) ;

Delay(300) ;

myMotor2 -> Exécuter (avec impatience); //squeezing la pince

myMotor2 -> setSpeed(150) ;

Delay(300) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (BACKWARD); //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 -> Exécuter (avec impatience); //squeezing la pince

myMotor2 -> setSpeed(150) ;

Delay(300) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (BACKWARD); //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 -> Exécuter (BACKWARD); //opening la pince

myMotor2 -> setSpeed(150) ;

Delay(400) ;

myMotor2 -> setSpeed(0) ;

Delay(400) ;

myMotor4 -> run(BACKWARD) ;

myMotor4 -> setSpeed(150) ;

Delay(3000) ;

myMotor4 -> setSpeed(0) ;

Delay(400) ;

}

Sub brush()

{

myMotor4 -> run(BACKWARD) ;

myMotor4 -> setSpeed(150) ;

Delay(3000) ;

myMotor4 -> setSpeed(0) ;

Delay(400) ;

myMotor2 -> Exécuter (BACKWARD); //opening la pince

myMotor2 -> setSpeed(150) ;

Delay(380) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor2 -> Exécuter (avec impatience); //closing la pince

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 -> Exécuter (BACKWARD); //opening la pince

myMotor2 -> setSpeed(150) ;

Delay(380) ;

myMotor2 -> setSpeed(0) ;

Delay(200) ;

myMotor4 -> run(FORWARD) ;

myMotor4 -> setSpeed(150) ;

Delay(3000) ;

myMotor4 -> setSpeed(0) ;

Delay(400) ;

}

Articles Liés

L’eau en marbre peinture grandes choses !

L’eau en marbre peinture grandes choses !

Je suis sûr que vous avez vu tous ces peintures l'eau froide en marbre des ongles et des petites choses, mais j'ai voulu faire ce style de peinture sur les éléments plus gros. Quelque part sur internet, j'ai trouvé un blog qui dit au lieu de vernis à
K ' NEX marbre chaîne Lift/w instructions

K ' NEX marbre chaîne Lift/w instructions

avez vous jamais construit tout engins de marbre comme un gamin ? Avez-vous déjà vu des autres gens machines de marbre et j'ai vu que certains d'entre eux ont des ascenseurs (comme sur YouTube) ? Eh bien, moi aussi. Mais maintenant, il y a un moyen f
K ' NEX marbre Shooter

K ' NEX marbre Shooter

j'ai fait un semi automatique en marbre jeu de tir que je voulais partager. Il a une capacité d'environ 16 billes.Étape 1: Base La première étape est assez simple.Étape 2: Corps principal This is where it gets confusing.Étape 3: Mécanisme de tir Cett
Top 10 qualité Photo Editor app pour Android

Top 10 qualité Photo Editor app pour Android

Top 10 qualité Photo Editor App pour faire vos Photos parfait-Andro racineChaque fois que nous ne pouvons pas voyager avec un appareil photo et ordinateur portable. Et nous utilisons notre téléphone portable ou un téléphone intelligent pour la photog
Simple solide comme le roc Cantilever Bureau

Simple solide comme le roc Cantilever Bureau

avec nos enfants s'installe à l'étage, ma femme a finalement obtenu une chambre de son propre sur le principal niveau.  Elle avait besoin d'un bureau solide à l'appui de sa machine à coudre et surtout deux knitting machines - de ces choses de serrage
Age of Empires III : Canon lourd

Age of Empires III : Canon lourd

Hi faiseurs, c'est un Canon fait toute maison inspiré par mon bien-aimé série de AGE OF EMPIRES jeu PC. Il a été l'un de mon petit rêve d'exploiter un canon en temps réel plutôt que de commander certains dans le jeu, finalement j'ai fait mon vrai rêv
Les automates sur le thème oriental Coin Operated distributeur de marbre.

Les automates sur le thème oriental Coin Operated distributeur de marbre.

J'ai conçu et ce fait principalement à l'aide de carton & craftsticks. Objectif était d'utiliser le diamètre du nickel étant inséré dans la fente pour abaisser les fan de la femme orientale, sa tête baisser pour te saluer, supérieur a conduit les d'a
Psychique diseuse de bonne aventure - un automate qui lit l’esprit de Twitter

Psychique diseuse de bonne aventure - un automate qui lit l’esprit de Twitter

Creepy fairground attraction et App Twitter !Diseuse de bonne aventure la ruche d'esprit psychique est une attraction de type arcade des forains qui peut dire votre fortune. Encore mieux que que, bien que - c'est aussi une application Twitter connect
Faux marbre béton de vanité.

Faux marbre béton de vanité.

Quand nous avons vendu notre maison dans le Wisconsin et a déménagé en Californie il fallait laisser derrière le meuble que j'avais construit pour ma femme dans la salle de bain principale.  La vanité a hauteur de la table pour qu'elle pouvait s'asse
Chargeur automatique de poisson

Chargeur automatique de poisson

temps ajouter à ma paresse et une plus grande automatisation.  Je n'ai plus à nourrir les poissons plusieurs fois par jour... mais j'ai quand même juste rester là une montre d'eux.  Qu'est-ce à eux c'est tellement fascinant???Il s'agit d'un petit cha
Airsoft & Pellet fusils automatiques cible

Airsoft & Pellet fusils automatiques cible

au point de ce projet était de construire, uniquement avec des restes de mes tiroirs, un objectif motorisé à utiliser avec un airsoft ou un pistolet de pellet.Les pièces trouvées dans mon garage pour construire la cible sont :-1 vieux moteur d'essuie
Automatique d’Arduino DIY croissance boîte

Automatique d’Arduino DIY croissance boîte

J'ai toujours voulu faire un petit projet Arduino plus grand à partir de zéro.C'est pourquoi j'ai décidé de faire cette boîte de culture. C'est peut-être plus comme un ce que j'ai fait ''tourner '' au lieu d'une Instructable, mais je vais essayer de
Peintre d’oeufs automatique Knex

Peintre d’oeufs automatique Knex

Bonjour tout le monde,J'ai voulu faire un peintre oeufs automatique. Alors j'ai pensé que le matériau plus logique d'utiliser serait knex. Alors j'ai inventé cela. Je vais aussi vous montrer le processus dans lequel j'ai essayé de le concevoir. Il pe
BRICOLAGE peinture

BRICOLAGE peinture

faire votre propre peinture personnalisé est facile et produit des résultats intéressants. Peut-être qu'ils ne vendent pas la couleur exacte que vous recherchez, ou vous voulez juste pour une utilisation pour tous ces vieux presque vide bidons de pei