Datorstyrd RC bil med två Arduinos (6 / 8 steg)

Steg 6: Datorprogram: att skapa GUI.



För programmet, skapa nya Java-program i vilket program du använder. Jag rekommenderar Eclipse.
Skapa en klass som utökar JPanel som kommer att användas som våra GUI. Det måste också genomföra ActionListener och KeyListener.

offentliga klassen GUI utökar JPanel genomför ActionListener, KeyListener {

}

I konstruktören för vår klass kommer vi att sätta upp layouten GUI. För att uppnå layouten ovan, kommer vi att använda en 3 av 4 rutnät. Observera att detta inte behöver definieras någonstans, vi berätta bara komponenter vad rutnät rymden att ockupera och nätet skapas därmed. Koden nedan är konstruktören för klassen GUI och innehåller våra GUI layout.

offentliga JButton bFront, bBack, bLeft, ljusa; Definiera knapparna

StyledDocument instructionsText; Detta används för instruktioner
offentliga JTextPane instruktioner; Används också för instruktioner

offentliga GUI() {

setLayout (nya GridBagLayout()); Ange layouten till Grid väska
this.setPreferredSize (nya Dimension(400,400)); //Set storleken på fönstret
GridBagConstraints c = nya GridBagConstraints();
c.Fill = GridBagConstraints.BOTH;
c.GridX = 0; Detta kommer att placera av instruktionerna
c.GridY = 0;

c.gridwidth = 4; Anvisningarna kommer att spänna över 4 brickor

Skapa texten instruktioner
StyledDocument instructionsText = ny DefaultStyledDocument();
Stil defaultStyle = instructionsText.getStyle(StyleContext.DEFAULT_STYLE);
StyleConstants.setAlignment (defaultStyle, StyleConstants.ALIGN_CENTER);

försök {
instructionsText.insertString (0, "styra bilen med hjälp av tangentbordet. \n förändring tangentbindningar genom att klicka på knapparna nedan.", null);
} fånga (BadLocationException e) {
e.printStackTrace();
}

lägga till texten i fönstret
instruktioner = nya JTextPane(instructionsText);
instructions.setFocusable(false);
lägga till fönstret i fönstret
Add(instructions,c);

Skapa framåt-knappen (samma för andra nedan)
bFront = ny JButton ("framåt-knappen:" + KeyEvent.getKeyText(frontKey));
bFront.setActionCommand("forward");
bFront.addActionListener(this);
bFront.setFocusable(false);

Ange position för framåt-knappen (samma för andra nedan)
c.gridwidth = 1;
c.GridX = 1;
c.GridY = 1;
Add(bFront,c);

bBack = ny JButton ("bakåt-knappen:" + KeyEvent.getKeyText(backKey));
bBack.setActionCommand("backward");
bBack.addActionListener(this);
bBack.setFocusable(false);

c.GridX = 1;
c.GridY = 4;
Add(bBack,c);

bLeft = nya JButton ("vänster för:" + KeyEvent.getKeyText(leftKey));
bLeft.setActionCommand("left");
bLeft.addActionListener(this);
bLeft.setFocusable(false);

c.GridX = 0;
c.GridY = 3;
Add(bLeft,c);

Ljusa = nya JButton ("Höger knapp:" + KeyEvent.getKeyText(rightKey));
bRight.setActionCommand("right");
bRight.addActionListener(this);
bRight.setFocusable(false);

c.GridX = 3;
c.GridY = 3;
Add(bRight,c);

setFocusable(true);
addKeyListener(this);

}

Med vår klass definitionen måste vi skapa den huvudsakliga metoden som kommer att köra och Visa våra GUI:

offentliga statisk void main (String [] args) {
TODO autogenererade metod stub

Skapa och Visa GUI
javax.swing.SwingUtilities.invokeLater (nya Runnable() {
public void run() {
createAndShowGUI();
}
});
}

privata statisk void createAndShowGUI() {
Skapa och ställa in fönstret.
JFrame ram = nya JFrame ("Arduino RC bil kontroller");

frame.setLocationRelativeTo(null);
Tala om för programmet att avsluta när det grafiska Gränssnittet är stängd
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

slutliga GUI gui = nya GUI(); skapa GUI
gui.setOpaque(true); Ställ in den på synliga
frame.setContentPane(gui); koppla den till Jframe

Visa fönstret.
Frame.Pack();
frame.setVisible(true);
}

Nästa vi måste lägga till funktionalitet när vi klickar på en knapp:

Om en klickar berätta program att lyssna efter den nästa nedtryckt
public void actionPerformed (ActionEvent e) {

IF(e.getActionCommand().equals("forward")) {
listenKey = 1;
} annat if(e.getActionCommand().equals("backward")) {
listenKey = 2;
} annat if(e.getActionCommand().equals("left")) {
listenKey = 3;
} annat if(e.getActionCommand().equals("right")) {
listenKey = 4;
}
}

Vi måste också hantera tangentbord pressar:

public void keyPressed (KeyEvent e) {
När du trycker på en tangent

om inte avlyssnar en nyckel ändra färgen på motsvarande knapp
och spara tillståndet för nyckeln
om (listenKey < = 0)
IF(e.getKeyCode() == frontKey) {
bFront.setBackground(Color.yellow);
frontKeyPressed = sant;
} annat if(e.getKeyCode() == backKey) {
bBack.setBackground(Color.yellow);
backKeyPressed = sant;
} annat if(e.getKeyCode() == leftKey) {
bLeft.setBackground(Color.yellow);
leftKeyPressed = sant;
} annat if(e.getKeyCode() == rightKey) {
bRight.setBackground(Color.yellow);
rightKeyPressed = sant;
}
}

public void keyReleased (KeyEvent e) {
När en tangent släpps

Om vi väntar för en nyckel
Switch(listenKey) {

Ställa in kontrollen för knappen bokningsformuläret
fall 1:
frontKey = e.getKeyCode();
bFront.setText ("framåt-knappen:" + KeyEvent.getKeyText(frontKey));
listenKey = 0;
bryta;

fall 2:

backKey = e.getKeyCode();
bBack.setText ("bakåt-knappen:" + KeyEvent.getKeyText(backKey));
listenKey = 0;
bryta;

fall 3:
leftKey = e.getKeyCode();
bLeft.setText ("vänster för:" + KeyEvent.getKeyText(leftKey));
listenKey = 0;
bryta;

fall 4:
rightKey = e.getKeyCode();
bRight.setText ("Höger knapp:" + KeyEvent.getKeyText(rightKey));
listenKey = 0;
bryta;

Annars återgå knappen till det normala
standard:
IF(e.getKeyCode() == frontKey) {
bFront.setBackground(null);
frontKeyPressed = false;
} annat if(e.getKeyCode() == backKey) {
bBack.setBackground(null);
backKeyPressed = false;
} annat if(e.getKeyCode() == leftKey) {
bLeft.setBackground(null);
leftKeyPressed = false;
} annat if(e.getKeyCode() == rightKey) {
bRight.setBackground(null);
rightKeyPressed = false;
}
bryta;

}
}

Hämta klassfilen hittills: https://dl.dropboxusercontent.com/u/63127140/tutor...

Se Steg
Relaterade Ämnen

Hur man gör en trådbunden Rc bil med en Arduino

Jag ska visa dig hur man gör en RC bil med en arduinoSteg 1: material2 Arduino unos (det är vad jag använde bara.)Hoppare ledningar och manliga till kvinnliga ledningar2 Arduino joysticks2 9v batterier1 9.6v laddningsbara RC bilbatteri1 tower Pro Ser...

Spåra din bil med en Arduino-baserad Lojack

Bilstölder är en verklig dra! Öka dina chanser att få tillbaka din bil genom att installera denna enkla Arduino-baserad tracker i bilen.Detta projekt är ganska enkel, och skulle vara ett bra projekt för nya Arduino programmerare letar efter något lit...

Kontroll Arduino RC bil med android telefon & 1Sheeld

Om du vill kontrollera RC bil med din android smartphone utan att använda Bluetooth-modul och programmering android ansökan, kan du använda 1Sheeld i stället för dem.I grund och botten består 1Sheeld av två delar. Den första delen är en sköld som är...

Arduino RC bil med FPV Camera

Detta Instructable beskriver en fjärrkontroll bil jag har satt ihop. Bilen har inga verkliga syftet - var det bara en utmaning, att se vad kunde göras med allmänt tillgänglig maskinvara. Det har följande funktioner:-4 x 4 rock crawler chassi-PC baser...

Autonoma Arduino bil med infraröd närhets-Sensor

Detta Instructable visar hur du ändrar en preloved RC bil så det kan styras med en Arduino. Sedan visar Instructable dig hur man gör RC kör en enkel figur 8 kod därifrån Instructable visar dig hur du lägger till en infraröd rörelsesensor så det kan i...

No.03 ratt köra R/C bil med Arduino, webbkamera och net. USB etc. Men detta är krypande och 4WS (4 hjulsstyrning)

denna bil No.03 använder liknande system som bil No.02, men olika chassi Crawler CR-01 tillämpas, som har tillval 2 servon system och som gör krabba-körning (4 hjul samma riktning) eller kort svängradie körning (fram och bakhjulen annan riktning) til...

Arduino RC bil med lång räckvidd och anpassade sändare.

Hej! Detta är min första instructable.I det ska jag visa dig hur man gör en RC bil med Arduino och den trådlösa modulen nrf24l01 +, eller hur du uppgraderar ett billigt 27 MHz RC bil.Den gamla RC bil, som från jag ta chassit och heli Controller, jag...

Fries'Car - vegetabilisk olja bil med Arduino

Vi för närvarande avslutar våra andra master examen i industriell ekonomi och vi tvingades därför utforma ett elektroniskt system som skulle behöva fungera med en Arduino kort.Som en av oss använder för att arbeta på bilar för hobby han föreslå oss e...

Snabba Controlled RC bil med (4 CH Motor Driver styrenhet + Arduino + Bluetooth)

Hej, eftersom detta är min första instructable här, jag hoppas du gillar det och Känn dig fri att fråga om något inte klart i den.För det första, jag började detta projekt efter jag ville styra 4 motorer som kräver relativt hög effekt (12Volts, 4 amp...

1. BM ARDUINO kontrollerad bil med HC-SR04

Med detta projekt vill jag visa dig vägen om hur du konverterar en RC bil in i en bil kontrolleras bil med Arduino Uno R3.Steg 1: Material som behövs: RC bil (med avskilda bakhjulet motorer)Arduino Uno R39V battarySladdarUltra Sonic sensor HC-SR04Str...

Bearbetning kontroller R/C bil med XBee moduler

detta instructable är en modifiering av min presentation till Bearbetning Chicago gemenskapen vid (EVL) elektroniska visualisering Laboratory, University of Illinois i Chicago den 1 okt 2012. I ämnetBearbetning bibliotek serienBearbetning och trådlös...

Hur man styr alla R/C bil med ett flygplan sändare!

Har du någonsin undrat om du använda din R/C flygplan sändare för att styra alla R/C bil också?Hur häftigt vore det att ha 6 eller fler kanaler för att styra din R/C bil, och även anpassa varje kanal enligt ditt val?Jag har längtat att göra något så...

Kontrollera en RC servomotor med en Arduino och två momentan växlar

namnet säger allt. Kontrollera en RC bil servomotor med en Arduino och några motstånd, hoppare ledningar och två taktil switchar. Jag gjorde detta den andra dagen jag fick min Arduino, så jag är ganska stolt över mig själv.Steg 1: Reservdelslista Oke...

Gest kontrollerade robotic bil med android ansökan

FYP - gest kontrollerade Robotic bil med Android ansökan. Fullständiga koden inklusive gest erkännande och bluetooth dataöverföring är tillgänglig. Människor som behöver någon form av hjälp angående detta projekt eller några andra projekt som (bildbe...

RGB LED Tutorial (med en Arduino) (RGBL)

Lysdioder är bra. Men med alla projekt man kommer till en punkt där blinkande inte räcker. För dessa fall RGB (röd, grön, blå) är LED svaret.Med en RGB LED du kommer att kunna producera någon färg lyser ditt hjärta önskar.På första använder en RGB LE...

Kontrollera en Raspberry Pi RC bil med ett tangentbord

i denna mellanliggande tutorial får du lära dig att driva en hackad RC bil med ett tangentbord med en modell B Raspberry Pi enhet med hjälp av Python. De viktigaste punkterna i denna tutorial är:• Hur du konfigurerar virtuella Pulse bredd modulering...

Fixa min garageport med en Arduino UNO

Se min github:https://github.com/glscantlen/instructions/Tree/ma...Den här mappen innehåller instruktioner framkallade från anteckningar under reparation av mitt garage dörröppnare. Jag har ett Geni 1/2HP skruv-enhet garage dörröppnare som misslyckat...

ARD-e: roboten med en Arduino som en hjärna

hur man skapar en öppen källkod Arduino kontrollerade robot för under $100.Förhoppningsvis efter att ha läst detta instructable du kommer att kunna ta det första steget in i robotteknik. ARD-e kostar ca $90 till 130 USD beroende på hur mycket extra e...

Styra EL Wire med en Arduino

i detta instructable jag visar dig hur man styr EL Wire med en Arduino.Vad du behöver:EL Wire och Inverter - jag rekommenderar http://ez-el.com/ez-el-wire/10ft-ez-el-wire-3v-inverter-kit/Arduino eller valfri micro controller som kan styra ett reläSPD...