ToBe Automation - färg sorterare robot - introduktion (6 / 7 steg)
Steg 6: ToBe Automation - färg sorterare robot - Artibox programmering
Program för Artibox styrelsen
Header-fil att hålla poserna
//
ToBeAut_Robotics.h
//
//
Skapad av Tomas Rus på 01/06/16.
//
//
#ifndef ToBeAut_Robotics_h
#define ToBeAut_Robotics_h
#include
hårdkodad huvudsakliga poser
PROGMEM prog_uint16_t homepose [] = {5 492, 185, 893, 757, 512}; hemma
PROGMEM prog_uint16_t centrerad [] = {5, 213, 512, 512, 512, 256}; centrerad
PROGMEM prog_uint16_t abovecon [] = {5 690, 530, 744, 715, 512}; //above transportband
PROGMEM prog_uint16_t xabovecon [] = {5 690, 530, 744, 715, 200}; holded
PROGMEM prog_uint16_t undercam [] = {5, 175, 310, 971, 711, 200}; / / framför cam
PROGMEM prog_uint16_t pile1 [] = {5, 343, 543, 866, 729, 200}; //pile 1
PROGMEM prog_uint16_t xpile1 [] = {5, 343, 543, 866, 729, 512}; //pile 1 gripare öppen
PROGMEM prog_uint16_t pile2 [] = {5, 422, 724, 644, 599, 200}; högen 2
PROGMEM prog_uint16_t xpile2 [] = {5, 422, 724, 644, 599, 512}; högen 2 gripare öppen
PROGMEM prog_uint16_t dumpa [] = {5 353, 378, 268, 328, 200}; dump
PROGMEM prog_uint16_t xdump [] = {5 353, 378, 268, 328, 512}; dumpa gripare öppen
#endif / * ToBeAut_Robotics_h * /
Faktiska arduino program
//
ToBeAut_Robotics.cpp
//
//
Skapad av Tomas Rus på 01/06/16.
//
//
Huvudprogrammet för ArbotiX PhantomX Pincher
Klass - aut/0915
Författare: Tomas Rus, Benedikt Patricias, Christian Hejlesen
#include "ToBeEssentials.h" //hardcoded poser
#include
TOPPLUVA bibliotek
#include / /
#include //library AX12 servon
#include //library för flytta funktion och många fler
#include //small bibliotek för ledde drift, kan ersättas
BioloidController bioloid = BioloidController(1000000);
Globala variabler går här
LED13 ledgreen;
LED13 ledred;
int PshBut = 0; tryckknapp 1 pin-kod
int val = 0;
int fromPLC = 3; stift för input från PLC, om det ' ß en ruta
int readySeq = 18; PIN-kod för att skicka klar signal via relä till PLC
känna igen färgerna, färg 1 = blå, färg = 2 = grön, annat 0
int moveDelay = 1000; hastigheten på roboten i ms
int tryck;
int färg = 0;
int boxW = 0; Box väntar på transportbandet, inre lite
Ogiltiga inställningar)
{
pinMode (3, ingång);
pinMode (16, OUTPUT);
pinMode (17, OUTPUT);
pinMode (18, OUTPUT);
}
Ogiltig loop)
{
Delay(1000);
Move(homepose);
ledred.off(17);
ledgreen.on(16); signalizing klar med grön led
boxW = 0;
boxW = digitalRead(fromPLC);
Delay(1000);
om (boxW) {
ledgreen.off(16); signalizing driftstatus med röd led
ledred.on(17);
playSequence();
}
} / / Annullera loop slutet
void flytta (prog_uint16_t * Inn) //inherited från bioloid bibliotek
{
Delay(moveDelay); rekommenderade paus
bioloid.loadPose(Inn); läsa in Posen från blixt, i den nextPose buffert
bioloid.readPose(); läste i nuvarande servo positioner till curPose buffert
Delay(moveDelay);
bioloid.interpolateSetup(moveDelay); uppställning för interpolation från aktuellt -> nästa över 1/2 en sekund
samtidigt (bioloid.interpolating > 0)
{/ / gör detta medan vi inte har nått våra nya pose
bioloid.interpolateStep(); flytta servon, om det behövs.
Delay(3);
}
}
void playSequence() {
Delay(1000);
Move(abovecon);
Delay(1000);
Move(xabovecon);
/ * medan (tryck < 500) {//optional användning av tryckgivare
Tryck = analogRead(26);
Delay(200);
gripdon-= 30;
om (gripdon < 0) {
gripdon = 0;
}
ax12SetRegister2 (5, 30, gripdon);
} */
Delay(1000);
Move(undercam);
Delay(1000);
färg = getColor();
Växla (färg) {
ärende '1': //moving lådor till den första högen
Move(pile1);
Delay(1000);
Move(xpile1);
Delay(1000);
bryta;
ärende '2': //moving lådor att han andra högen
Move(pile2);
Delay(1000);
Move(xpile2);
Delay(1000);
bryta;
standard: //moving okända lådor att dumpa högen
Move(dump);
Delay(1000);
Move(xdump);
bryta;
}
Move(homepose);
}
int getColor()
{
TOPPLUVA TOPPLUVA;
pixY.init();
Delay(500);
int block;
int j;
int jag = 0;
int färg = 0;
medan (färg! = 1 || färg! = 2).
{
block = pixy.getBlocks();
om (block)
{
i ++;
göra detta (print) varje 20 ramar för att skriva ut varje
Frame skulle mosse ner Arduino
om (jag % 20 == 0)
{
Serial.println(Color);
färg = pixy.blocks[j].signature;
returnera färg;
}
}
}
}