Bearbetning kontroller R/C bil med XBee moduler (13 / 14 steg)
Steg 13: Bearbetning GUI
Jag designade theProcessing GUI för att användas med specifik modell på R/C bil, 1/16 skalenlig modell av Ford Mustang Shelby 2010.
Jag skapade en bakgrunden bild av tog bilden ovanifrån av R/C bil sedan manipulerade bilden i Photoshop, så jag har exakt samma modell av bilen i bearbetning GUI windows.
Tre par framhjulen, skapade jag för högersväng, sväng till vänster och kör rakt.
Jag skapade också på knappikonen för hastighet kontroller av fordonet.
Jag ingår bearbetning GUI till vanlig ursprungliga bearbetning koden från "Wireless Robotics plattform: billigt R/C fordon + Arduino + XBee + behandling" av nootropicdesign.com.
Höger hjul kontroller
Flytta markören över högra hjulet vända "Rätt". Framhjulen visas i höger-turn riktning.
Vänster hjul kontroller
Flytta markören över vänstra hjulet vända "Vänster". Framhjulen visas i vänster-sväng riktning.
Fart kontroller
Hastigheten varierar från 1 (långsam) till 6 (snabb), när markören är placerad över numrera, numret markeras i vitt. Bilen gå "Framåt" med denna hastighet.
När flyttar markören över R, bil drag i "Omvänd" med en hastighet av 3.
Flytta markören över N, gör bilen "Stopp" rörliga.
Processing skiss förklara
//
För att kommunicera mellan bearbetning (dator, bärbar dator) och Arduino baudhastighet måste vara samma.
import seriell bibliotek som ska användas i behandling
import processing.serial.*;
Seriell port;
void setup() {
Ställa in porten
String XBeePort = Serial.list() [0];
Ange baudvärde till 9600 bps
Port = ny följetong (denna, XBeePort, 9600);
Ställa in skärmen för utdata.
storlek (400, 596);
Tilldela variabel kallas hastighet att vara 0 (noll)
hastighet = 0;
Anropa metoden (funktion) controlGUI() för att visa grafik användargränssnitt till
Visa GUI på bearbetning skyltfönster
controlGUI();
}
void draw() {
//Displays bakgrundsbild (ShelbyGT2010Background.png)
Background(carImage);
Anropa metoden (funktion) speedButtons() om du vill uppdatera bilderna av knappar ändras enligt den användarindata
speedButtons();
Anropa metoden updateFrontWheel (mouseX, mouseY) att uppdatera
bilden av framhjulen om muspekaren flyttas
updateFrontWheel (mouseX, mouseY);
Metod att reflesh fönstret GUI när det sker en förändring i kommandot.
directionButtons();
Testkörning
testRun();
}
serialEvents() - övervaka input från
den seriella comm. porten
void serialEvent(Serial p)
{
int input = p.read();
lastInput = ingång;
}
/ =============================
/ / Knappen klass
// =============================
klass knappen
{
int x, y;
int w, h;
färg basecolor, highlightcolor; färg currentcolor;
booleska över = false;
Boolean tryckte = false;
void pressed() {
om (pressad) {
CurrentImage =. }
annars om (över) {
CurrentImage = rullen. }
annat {
CurrentImage = bas;
}
}
void over() {
om (overRect (x, y, w, h)) {
över = sant; }
annat {
över = false;
}
}
void display() {
bild (currentimage, x, y);
}
}
// =============================
ImageButtons klasser
// =============================
klassen ImageButtons utökar knappen
{
PImage bas;
PImage rullen.
PImage ner;
PImage currentimage;
ImageButtons (int ix, iy int, int iw, int ih,
PImage ibase, PImage iroll,
PImage idown) {
x = ix. bild ursprung X
y = iy; bild ursprung Y
w = iw; bildens bredd
h = ih; bildens höjd
bas = ibase; bas-image
rulle = iroll; rulle eller över bilden
ned = idown; ner eller valda bild
CurrentImage = bas;
}
void update()
{
over();
Pressed();
om (pressad) {
CurrentImage =.
} else om (över) {
CurrentImage = rullen.
} annat {
CurrentImage = bas;
}
}
void over()
{
om (overRect (x, y, w, h)) {
över = sant;
} annat {
över = false;
}
}
void display()
{
bild (currentimage, x, y);
}
}
Vi behövde minst tre bilder
att använda som en ikon-base, rulle, och ner
i ImageButtons() metoden.
int buttonX = 34.
int buttonY = 34.
...
void controlGUI() {
carImage = loadImage ()
"ShelbyGT2010Background.png");
valda =
loadImage("gearSelected.png");
turnSelected =
loadImage("turnSelected.png");
en
oneImage = loadImage("one.png");
oneOver = loadImage("oneOver.png");
oneButton = ny ImageButtons (108, 258,
buttonX, buttonY,
oneOver, oneImage,
markerad).
/ / Dessa sista tre variabler är platshållaren för bilderna.
två
twoImage = loadImage("two.png");
twoOver = loadImage("twoOver.png");
...
}