Stap 14: Arduino Sketch & landbouwindustrie code
Hier volgen de Arduino schets en verwerking Source Code (zowel Arduino schets en verwerking zijn in hetzelfde zipbestand hieronder):
Als u van deze schets gebruikmaakt, stel de Baud-Rate van uw XBee volgens uw XBee setup.
VOID Setup {}
...
wijzigen van de Baud-Rate volgens uw XBee, plaatste ik mijn XBee tot 115200.
Serial.begin(115200);
...
}
=== Arduino Sketch
Taal: Arduino
RobotArmControl.pde
//
door Sam Thongrong Feb 26, 2012
Rev.02
controle opdrachten array:
{GripOut, GripIn, WristUp, WristDown, ElbowUp, ElbowDown,
ShoulderUp, shoulderDown, BaseCW, BaseCCW, LightOn, LightOff, Stop};
int bepaalt [13] = {0x47, 0x67, 0x57, 0x77, 0x45, 0x65,
0x53, 0x73, 0x42, 0x62, 0x4c, 0x6c, 0x58};
Base
int baseEnablePin = 3;
int basePin1 = 16;
int basePin2 = 17;
Schouder
int shoulderEnablePin = 14;
int shoulderPin1 = 2;
int shoulderPin2 = 4;
Elleboog
int elbowEnablePin = 6;
int elbowPin1 = 7;
int elbowPin2 = 15;
Pols
int wristEnablePin = 11;
int wristPin1 = 8;
int wristPin2 = 12;
Grip
int gripEnablePin = 10;
int gripPin1 = 9;
int gripPin2 = 5;
int ledPin = 13;
set een variabele op te slaan van de byte verzonden vanaf de seriële poort
int incomingByte;
VOID Setup {}
licht LED instellen
pinMode (ledPin, OUTPUT);
digitalWrite (ledPin, laag);
de SN754410-pinnen als uitgang instellen
pinMode (basePin1, OUTPUT);
pinMode (basePin2, OUTPUT);
pinMode (baseEnablePin, OUTPUT);
pinMode (shoulderPin1, OUTPUT);
pinMode (shoulderPin2, OUTPUT);
pinMode (shoulderEnablePin, OUTPUT);
pinMode (elbowPin1, OUTPUT);
pinMode (elbowPin2, OUTPUT);
pinMode (elbowEnablePin, OUTPUT);
pinMode (wristPin1, OUTPUT);
pinMode (wristPin2, OUTPUT);
pinMode (wristEnablePin, OUTPUT);
pinMode (gripPin1, OUTPUT);
pinMode (gripPin2, OUTPUT);
pinMode (gripEnablePin, OUTPUT);
beginnen met het verzenden van gegevens op 115200 baud-rate
Ik stel mijn Xbee Baud-Rate 115200 bps,
wijzigen van de Baud-Rate volgens uw XBee
Serial.begin(115200);
}
void loop {}
Controleer of er iets in de seriële buffer is
Als (Serial.available() > 0) {}
Lees de byte en sla het in onze variabele
de byte verzonden is eigenlijk een ASCII-waarde
incomingByte = Serial.read();
Opmerking de bovenste behuizing van elke letter!
elke letter wordt een motor anders.
=== Grip
Grip in
Als (incomingByte == controls[0]) {}
gripIn();
}
Greep uit
Als (incomingByte == controls[1]) {}
gripOut();
}
Pols
Als (incomingByte == controls[2]) {}
digitalWrite (wristPin1, laag);
digitalWrite (wristPin2, hoge);
wristUp();
}
Als (incomingByte == controls[3]) {}
wristDown();
}
=== Elleboog
Elleboog omhoog
Als (incomingByte == controls[4]) {}
elbowUp();
}
Elleboog naar beneden
Als (incomingByte == controls[5]) {}
elbowDown();
}
=== Schouder
Schouder omhoog
Als (incomingByte == controls[6]) {}
shoulderUp();
}
Schouders omlaag
Als (incomingByte == controls[7]) {}
shoulderDown();
}
=== Base
Base rechts
Als (incomingByte == controls[8]) {}
baseRight();
}
Base links
Als (incomingByte == controls[9]) {}
baseLeft();
}
Licht op
Als (incomingByte == controls[10]) {}
digitalWrite (ledPin, hoge);
}
Licht uit
Als (incomingByte == controls[11]) {}
digitalWrite (ledPin, laag);
}
Als een O wordt verzonden maken zijn zeker de motoren uitgeschakeld
Als (incomingByte == controls[12]) {}
allStop();
}
delay(100);
}
}
ongeldig gripIn() {}
digitalWrite (gripEnablePin, hoge);
digitalWrite (gripPin1, laag);
digitalWrite (gripPin2, hoge);
}
ongeldig gripOut() {}
digitalWrite (gripEnablePin, hoge);
digitalWrite (gripPin2, laag);
digitalWrite (gripPin1, hoge);
}
ongeldig wristUp() {}
digitalWrite (wristEnablePin, hoge);
digitalWrite (wristPin1, laag);
digitalWrite (wristPin2, hoge);
}
ongeldig wristDown() {}
digitalWrite (wristEnablePin, hoge);
digitalWrite (wristPin2, laag);
digitalWrite (wristPin1, hoge);
}
ongeldig elbowUp() {}
digitalWrite (elbowEnablePin, hoge);
digitalWrite (elbowPin1, laag);
digitalWrite (elbowPin2, hoge);
}
ongeldig elbowDown() {}
digitalWrite (elbowEnablePin, hoge);
digitalWrite (elbowPin2, laag);
digitalWrite (elbowPin1, hoge);
}
ongeldig shoulderUp() {}
digitalWrite (shoulderEnablePin, hoge);
digitalWrite (shoulderPin1, laag);
digitalWrite (shoulderPin2, hoge);
}
ongeldig shoulderDown() {}
digitalWrite (shoulderEnablePin, hoge);
digitalWrite (shoulderPin2, laag);
digitalWrite (shoulderPin1, hoge);
}
ongeldig baseRight() {}
digitalWrite (baseEnablePin, hoge);
digitalWrite (basePin1, laag);
digitalWrite (basePin2, hoge);
}
ongeldig baseLeft() {}
digitalWrite (baseEnablePin, hoge);
digitalWrite (basePin2, laag);
digitalWrite (basePin1, hoge);
}
ongeldig allStop() {}
digitalWrite (baseEnablePin, laag);
digitalWrite (basePin1, laag);
digitalWrite (basePin2, laag);
digitalWrite (shoulderEnablePin, laag);
digitalWrite (shoulderPin1, laag);
digitalWrite (shoulderPin2, laag);
digitalWrite (elbowEnablePin, laag);
digitalWrite (elbowPin1, laag);
digitalWrite (elbowPin2, laag);
digitalWrite (wristEnablePin, laag);
digitalWrite (wristPin1, laag);
digitalWrite (wristPin2, laag);
digitalWrite (gripEnablePin, laag);
digitalWrite (gripPin1, laag);
digitalWrite (gripPin2, laag);
}
=== Arduino einde
Hier volgt de broncode voor verwerking. You'ill de achtergrond afbeeldingsbestand nodig, en alle knoppen beeld bestanden om te zien deze bedieningsknoppen op het scherm.
En alle achtergrond en knoppen advertentie er in de map met de naam gegevens zijn worden verstrekt. U zult moeten hebben deze map bevindt zich in dezelfde map van de Processing code (RobotArmControl.pde)
Taal: verwerking
RobotArmControl.pde
door Sam Thongrong Feb 26, 2012
laden van de seriële library voor verwerking
importeren van processing.serial.*;
instantie van de seriële klasse
Seriële poort;
controle opdrachten array:
GripOut, GripIn, WristUp, WristDown, ElbowUp, ElbowDown,
ShoulderUp, shoulderDown, BaseCW, BaseCCW, LightOn, LightOff, Stop
int [] besturingselementen = nieuwe int [] {}
0x47, 0x67, 0x57, 0x77, 0x45, 0x65,
0x53, 0x73, 0x42, 0x62, 0x4c, 0x6c, 0x58};
De knoop van het beeld.
Laden van afbeeldingen en het gebruik van hen om een knop te maken.
ImageButtons GripIn;
ImageButtons GripOut;
ImageButtons WristUp;
ImageButtons WristDown;
ImageButtons ElbowUp;
ImageButtons ElbowDown;
ImageButtons ShoulderUp;
ImageButtons ShoulderDown;
ImageButtons BaseCW;
ImageButtons BaseCCW;
ImageButtons LightOn;
ImageButtons LightOff;
ImageButtons Pause;
achtergrond
PImage bg;
het lettertype instellen
PFont myFont;
VOID controlGUI()
{
BG = loadImage("background.jpg");
Background(BG);
int buttonSize = 44;
PImage geselecteerd = loadImage("controlSel.png");
Grip In
PImage gripInImage = loadImage("controlIn.png");
PImage gripInOver = loadImage("controlInOver.png");
GripIn = nieuwe ImageButtons (30, 83, buttonSize, buttonSize,
gripInImage, gripInOver, geselecteerd);
Greep uit
PImage gripOutImage = loadImage("controlOut.png");
PImage gripOutOver = loadImage("controlOutOver.png");
GripOut = nieuwe ImageButtons (78, 83, buttonSize, buttonSize,
gripOutImage, gripOutOver, geselecteerd);
Pols omhoog
PImage wristUpImage = loadImage("controlUp.png");
PImage wristUpOver = loadImage("controlUpOver.png");
WristUp = nieuwe ImageButtons (150, 36, buttonSize, buttonSize,
wristUpImage, wristUpOver, geselecteerd);
Pols naar beneden
PImage wristDownImage = loadImage("controlDown.png");
PImage wristDownOver = loadImage("controlDownOver.png");
WristDown = nieuwe ImageButtons (198, 36, buttonSize, buttonSize,
wristDownImage, wristDownOver, geselecteerd);
Elleboog omhoog
PImage elbowUpImage = loadImage("controlUp.png");
PImage elbowUpOver = loadImage("controlUpOver.png");
ElbowUp = nieuwe ImageButtons (258, 83, buttonSize, buttonSize,
elbowUpImage, elbowUpOver, geselecteerd);
Elleboog naar beneden
PImage elbowDownImage = loadImage("controlDown.png");
PImage elbowDownOver = loadImage("controlDownOver.png");
ElbowDown = nieuwe ImageButtons (306, 83, buttonSize, buttonSize,
elbowDownImage, elbowDownOver, geselecteerd);
Schouder omhoog
PImage shoulderUpImage = loadImage("controlUp.png");
PImage shoulderUpOver = loadImage("controlUpOver.png");
ShoulderUp = nieuwe ImageButtons (208, 160, buttonSize, buttonSize,
shoulderUpImage, shoulderUpOver, geselecteerd);
Schouders omlaag
PImage shoulderDownImage = loadImage("controlDown.png");
PImage shoulderDownOver = loadImage("controlDownOver.png");
ShoulderDown = nieuwe ImageButtons (256, 160, buttonSize, buttonSize,
shoulderDownImage, shoulderDownOver, geselecteerd);
Base CW
PImage baseCWImage = loadImage("controlCW.png");
PImage baseCWOver = loadImage("controlCWOver.png");
BaseCW = nieuwe ImageButtons (130, 234, buttonSize, buttonSize,
baseCWImage, baseCWOver, geselecteerd);
Base CCW
PImage baseCCWImage = loadImage("controlCCW.png");
PImage baseCCWOver = loadImage("controlCCWOver.png");
BaseCCW = nieuwe ImageButtons (178, 234, buttonSize, buttonSize,
baseCCWImage, baseCCWOver, geselecteerd);
Licht op
PImage lightOnImage = loadImage("LightOn.png");
PImage lightOnOver = loadImage("LightOnOver.png");
LightOn = nieuwe ImageButtons (30, 184, buttonSize, buttonSize,
lightOnImage, lightOnOver, geselecteerd);
Licht uit
PImage lightOffImage = loadImage("LightOff.png");
PImage lightOffOver = loadImage("LightOffOver.png");
LightOff = nieuwe ImageButtons (78, 184, buttonSize, buttonSize,
lightOffImage, lightOffOver, geselecteerd);
}
VOID Setup {}
Een lijst van alle beschikbare seriële poorten in het paneel ' uitvoer '.
U zult moeten kiezen van de poort die de Arduino board is
aangesloten op uit deze lijst. De eerste poort in de lijst is
poort #0 en de derde poort in de lijst is poort #2.
println(Serial.List());
Open de poort waarop de Arduino board is aangesloten
(in dit geval #0)
Zorg ervoor dat de poort op dezelfde snelheid die Arduino is openen
met behulp van (112500bps)
poort = nieuwe Serial (dit, Serial.list() [1], 112500);
Op venster PC, gebruik "Uitgaande" van het bluetooth-apparaat
Deze keer voor XBee
poort = nieuwe Serial (dit, "COM30", 115200);
de grootte van het scherm van het programma
grootte (145, 455);
grootte (400, 300);
Smooth();
test ellips
ellipseMode(RADIUS);
textFont (createFont ("Verdana", 14));
controlGUI();
}
ongeldig updateDisplay() {}
GripIn.update();
GripIn.display();
GripOut.update();
GripOut.display();
WristUp.update();
WristUp.display();
WristDown.update();
WristDown.display();
ElbowUp.update();
ElbowUp.display();
ElbowDown.update();
ElbowDown.display();
ShoulderUp.update();
ShoulderUp.display();
ShoulderDown.update();
ShoulderDown.display();
BaseCW.update();
BaseCW.display();
BaseCCW.update();
BaseCCW.display();
LightOn.update();
LightOn.display();
LightOff.update();
LightOff.display();
}
Opdrachten verzenden
ongeldig sendCommands() {}
Grip
if(GripIn.pressed) {}
Port.write(Controls[0]);
println ("greep In:" + (char)controls[0]);
}
if(GripOut.pressed) {}
Port.write(Controls[1]);
println ("greep uit:" + (char)controls[1]);
}
Als (mouseX > 30 & & mouseX < 129 & &
mouseY > 51 & & mouseY < 79) {}
Port.write(Controls[12]);
println ("Greep Stop!" + (char)controls[12]);
}
Pols
if(WristUp.pressed) {}
Port.write(Controls[2]);
println ("pols omhoog:" + (char)controls[2]);
}
if(WristDown.pressed) {}
Port.write(Controls[3]);
println ("pols naar beneden:" + (char)controls[3]);
}
Als (mouseX > 148 & & mouseX < 248 & &
mouseY > 5 & & mouseY < 33) {}
Port.write(Controls[12]);
println ("Pols Stop!" + (char)controls[12]);
}
Elleboog
if(ElbowUp.pressed) {}
Port.write(Controls[4]);
println ("elleboog omhoog:" + (char)controls[4]);
}
if(ElbowDown.pressed) {}
Port.write(Controls[5]);
println ("elleboog naar beneden:" + (char)controls[5]);
}
Als (mouseX > 258 & & mouseX < 358 & &
mouseY > 51 & & mouseY < 79) {}
Port.write(Controls[12]);
println ("Elleboog Stop!" + (char)controls[12]);
}
Schouder
if(ShoulderUp.pressed) {}
Port.write(Controls[6]);
println ("schouder omhoog:" + (char)controls[6]);
}
if(ShoulderDown.pressed) {}
Port.write(Controls[7]);
println ("schouder naar beneden:" + (char)controls[7]);
}
Als (mouseX > 208 & & mouseX < 308 & &
mouseY > 130 & & mouseY < 158) {}
Port.write(Controls[12]);
println ("Schouder Stop!" + (char)controls[12]);
}
Base
if(BaseCW.pressed) {}
Port.write(Controls[8]);
println ("Base draaien CW:" + (char)controls[8]);
}
if(BaseCCW.pressed) {}
Port.write(Controls[9]);
println ("Base draaien CCW:" + (char)controls[9]);
}
Als (mouseX > 130 & & mouseX < 230 & &
mouseY > 202 & & mouseY < 230) {}
Port.write(Controls[12]);
println ("Basis Stop!" + (char)controls[12]);
}
Licht
if(LightOn.pressed) {}
Port.write(Controls[10]);
println ("Light On:" + (char)controls[10]);
}
if(LightOff.pressed) {}
Port.write(Controls[11]);
println ("licht uit:" + (char)controls[11]);
}
}
VOID draw()
{
updateDisplay();
sendCommands();
}
Knop & ImageButtons klassen
klasse knop
{
int x, y;
int w, h;
kleur basecolor, highlightcolor;
kleur currentcolor;
Boole-waarde meer dan = false;
Boolean ingedrukt = false;
ongeldig pressed() {}
Als (over & & mousePressed) {}
ingedrukt = true;
} else {}
ingedrukt = false;
}
}
Booleaanse overRect (int x, int y, int breedte, int hoogte) {}
Als (mouseX > = x & & mouseX < = x + breedte & &
mouseY > = y & & mouseY < = y + hoogte) {}
return true;
} else {}
return false;
}
}
}
klasse ImageButtons breidt knop
{
PImage basis;
PImage roll;
PImage
PImage currentimage;
ImageButtons (int ix, int iy, int iw, int ih,
PImage ibase, PImage iroll, PImage idown)
{
x = ix;
y = iy;
w = iw;
h = ih;
basis = ibase;
Roll = iroll;
omlaag = idown;
currentimage = base;
}
VOID update()
{
over();
pressed();
if(pressed) {}
currentimage = beneden;
} else if (over) {}
currentimage = rol;
} else {}
currentimage = base;
}
}
VOID over()
{
Als (overRect (x, y, w, h)) {}
meer dan = true;
} else {}
meer dan = false;
}
}
VOID display)
{
afbeelding (currentimage, x, y);
}
}
Einde van de verwerking
Om te controleren de motor van de robotarm, verplaatst u de cursor naar de gewenste knop en klik op.
Om te stoppen operatie gewoon Verplaats de cursor naar elk etiket. Robot zal stoppen.
Verplaats de cursor naar de knoppen vereist te exploiteren meerdere motoren tegelijk, en klikt u op deze knoppen klikken.
Maar sleep cursor pass niet over de labels, die leiden de operatie tot zal te stoppen
Geniet van!