Computer gestuurde RC auto met twee Arduinos (6 / 8 stap)

Stap 6: Computerprogramma: creëren van de GUI.


Voor het computerprogramma, een nieuwe Java-toepassing te maken in welke toepassing die u gebruikt. Ik beveel de Eclipse.
Eerst een klasse maken die zich uitstrekt van JPanel die zal worden gebruikt als onze GUI. Het moet ook ActionListener en KeyListener uit te voeren.

 public class GUI extends JPanel implements ActionListener, KeyListener { } 

In de constructor van onze klasse zullen we het opzetten van de lay-out van de GUI. Met het oog op de indeling hierboven, zullen we gebruiken een raster van 3 door 4. Merk op dat dit niet hoeft te worden gedefinieerd overal, we gewoon vertellen de onderdelen welke raster ruimte te bezetten en het raster dienovereenkomstig wordt gemaakt. De onderstaande code is de constructor voor de GUI-klasse en de lay-out van onze GUI bevat.

 public JButton bFront, bBack, bLeft, bRight; //Define the buttons StyledDocument instructionsText; //This is used for the instructions public JTextPane instructions; //Also used for instructions public GUI() { setLayout(new GridBagLayout()); //Set the layout to Grid Bag this.setPreferredSize(new Dimension(400,400));//Set the size of the window GridBagConstraints c = new GridBagConstraints(); c.fill = GridBagConstraints.BOTH; c.gridx = 0; //This will be the position of the instructions c.gridy = 0; c.gridwidth = 4; //The instructions will span 4 tiles //Create the instructions text StyledDocument instructionsText = new DefaultStyledDocument(); Style defaultStyle = instructionsText.getStyle(StyleContext.DEFAULT_STYLE); StyleConstants.setAlignment(defaultStyle, StyleConstants.ALIGN_CENTER); try { instructionsText.insertString(0, "Control the car using the keyboard.\n Change the key bindings by clicking the buttons below.", null); } catch (BadLocationException e) { e.printStackTrace(); } //add the text to the pane instructions = new JTextPane(instructionsText); instructions.setFocusable(false); //add the pane to the window add(instructions,c); //Create the forward button (same for others below) bFront = new JButton("Forward key: " + KeyEvent.getKeyText(frontKey)); bFront.setActionCommand("forward"); bFront.addActionListener(this); bFront.setFocusable(false); //Set position of the forward button (same for others below) c.gridwidth = 1; c.gridx = 1; c.gridy = 1; add(bFront,c); bBack = new JButton("Backward key: " + KeyEvent.getKeyText(backKey)); bBack.setActionCommand("backward"); bBack.addActionListener(this); bBack.setFocusable(false); c.gridx = 1; c.gridy = 4; add(bBack,c); bLeft = new JButton("Left key: " + KeyEvent.getKeyText(leftKey)); bLeft.setActionCommand("left"); bLeft.addActionListener(this); bLeft.setFocusable(false); c.gridx = 0; c.gridy = 3; add(bLeft,c); bRight = new JButton("Right key: "+ 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); } 

Met onze klasse gedefinieerd moeten we maken de belangrijkste methode die zal lopen en Toon van onze GUI:

 public static void main(String[] args) { // TODO Auto-generated method stub //Create and show the GUI javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } private static void createAndShowGUI() { //Create and set up the window. JFrame frame = new JFrame("Arduino RC Car Controller"); frame.setLocationRelativeTo(null); //Tell the program to exit when the GUI is closed frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final GUI gui = new GUI(); //create the GUI gui.setOpaque(true); //Set it to visible frame.setContentPane(gui); //attach it to the Jframe //Display the window. frame.pack(); frame.setVisible(true); } 

Daarna nodig hebben wij om de functionaliteit voor wanneer we Klik op een knop te voegen:

 //If a button is clicked tell the program to listen for the next key pressed public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("forward")) { listenKey = 1; } else if(e.getActionCommand().equals("backward")) { listenKey = 2; } else if(e.getActionCommand().equals("left")) { listenKey = 3; } else if(e.getActionCommand().equals("right")) { listenKey = 4; } } 

Ook moeten we omgaan met toetsenbord persen:

 public void keyPressed(KeyEvent e) { //When a key is pressed //if not listening for a key change the color of the corresponding button //and save the state of the key if(listenKey <= 0) if(e.getKeyCode() == frontKey) { bFront.setBackground(Color.yellow); frontKeyPressed = true; } else if(e.getKeyCode() == backKey) { bBack.setBackground(Color.yellow); backKeyPressed = true; } else if(e.getKeyCode() == leftKey) { bLeft.setBackground(Color.yellow); leftKeyPressed = true; } else if(e.getKeyCode() == rightKey) { bRight.setBackground(Color.yellow); rightKeyPressed = true; } } public void keyReleased(KeyEvent e) { //When a key is released //If we are waiting for a key switch(listenKey) { //Set the control for the requred button case 1: frontKey = e.getKeyCode(); bFront.setText("Forward key: " + KeyEvent.getKeyText(frontKey)); listenKey = 0; break; case 2: backKey = e.getKeyCode(); bBack.setText("Backward key: " + KeyEvent.getKeyText(backKey)); listenKey = 0; break; case 3: leftKey = e.getKeyCode(); bLeft.setText("Left key: " + KeyEvent.getKeyText(leftKey)); listenKey = 0; break; case 4: rightKey = e.getKeyCode(); bRight.setText("Right key: " + KeyEvent.getKeyText(rightKey)); listenKey = 0; break; //Otherwise return the button to normal default: if(e.getKeyCode() == frontKey) { bFront.setBackground(null); frontKeyPressed = false; } else if(e.getKeyCode() == backKey) { bBack.setBackground(null); backKeyPressed = false; } else if(e.getKeyCode() == leftKey) { bLeft.setBackground(null); leftKeyPressed = false; } else if(e.getKeyCode() == rightKey) { bRight.setBackground(null); rightKeyPressed = false; } break; } } 

Tot nu toe het klassebestand downloaden: https://dl.dropboxusercontent.com/u/63127140/tutor...

Gerelateerde Artikelen

Bijhouden van uw auto met een Arduino gebaseerde Lojack

Bijhouden van uw auto met een Arduino gebaseerde Lojack

De autodiefstal van de is een echte slepen! Verhoog uw kansen van het herstellen van uw auto door het installeren van deze eenvoudige Arduino gebaseerde tracker in uw auto.Dit project is vrij eenvoudig, en zou een goed project voor een nieuwe Arduino
Praten met een automaat MDB met twee Arduinos

Praten met een automaat MDB met twee Arduinos

automaat onderdelen al gepraat met elkaar zijn verbonden op een bus van de computer bekend als MDB.  Ik heb geschreven wat code zodat u plug in en luister naar hun gesprek in real-time.  Moet u fysieke toegang tot de automaat.Waarom de moeite?  Veel
Arduino RC auto met lange afstand en aangepaste zender.

Arduino RC auto met lange afstand en aangepaste zender.

Hallo! Dit is mijn eerste instructable.Daarin zal ik u tonen hoe te maken van een RC auto met Arduino en de draadloze nrf24l01 +-module, of hoe om te upgraden een goedkope 27 MHz RC auto.De oude RC auto, die van I het chassis, en de heli Controller n
Hoe maak je een bekabelde Rc auto met behulp van een Arduino

Hoe maak je een bekabelde Rc auto met behulp van een Arduino

Ik ga u tonen hoe te maken van een RC auto met een arduinoStap 1: materialen2 Arduino unos (dat is net wat ik gebruikt.)Jumper draden en Male naar vrouwelijke draden2 Arduino joysticks2 9v batterijenoplaadbare RC accu van 1 9.6v1 tower Pro Servo1 mot
Fries'Car - plantaardige olie auto met Arduino

Fries'Car - plantaardige olie auto met Arduino

Momenteel ronden wij onze tweede master graad in industrial engineering en dus moesten we een elektronisch systeem, die zou moeten werken met een Arduino kaart ontwerpen.Als een van ons gebruiken om te werken op auto's voor hobby voorstellen hij ons
Controle van een RC auto met behulp van de computer

Controle van een RC auto met behulp van de computer

In dit project, ik een goedkope getransformeerd RC auto behoort tot mijn zoon in een autonome auto met behulp van enkele eenvoudige stappen en Arduino. De auto kan worden gecontroleerd met de PC via seriële of USB-poort, of via de Arduino autonoom ka
Controle Arduino RC auto met behulp van android telefoon & 1Sheeld

Controle Arduino RC auto met behulp van android telefoon & 1Sheeld

Als u besturen RC auto met uw Androïde slimme telefoon wilt zonder met behulp van Bluetooth-module en programmering androïde toepassing, kunt u 1Sheeld gebruiken in plaats van hen.1Sheeld bestaat in principe uit twee delen. Het eerste deel is een sch
Hand tilt gecontroleerde auto met behulp van de arduino

Hand tilt gecontroleerde auto met behulp van de arduino

Hoi, iedereen dit is mijn eerste instructables dus een beetje begrip. pls post uw suggesties voor toekomstige instructables. I 'm trying to documenteren elke stap uit hun voor de beginners die willen aan de slag met gebouw er eigen bots maar heb idee
Arduino RC auto met FPV Camera

Arduino RC auto met FPV Camera

Dit Instructable beschrijft een afstandsbediening auto die heb ik samen te stellen. De auto heeft geen echte doel - het was gewoon een uitdaging, om te zien wat kan worden gemaakt met algemeen beschikbare hardware. Het heeft de volgende functies:-4 x
Eenvoudige arduino auto met behulp van HC-06 Bluetooth-Module

Eenvoudige arduino auto met behulp van HC-06 Bluetooth-Module

De gemakkelijkste manier om te bouwen van een Arduino-auto en controle met uw Androïde apparaat.Stap 1: Dingen nodig: Laptop met de Arduino software.Elke Arduino. (Im ' using Leonardo).Twee gelijkstroommotoren met banden stevig vastgemaakt.Een acryl
Lego Technic auto met Arduino en XBee Wireless Control

Lego Technic auto met Arduino en XBee Wireless Control

ik was doorlezen Instructables een fijne winter zaterdag, toen mijn 8 yo zoon kwam in en tuurde over mijn schouder en zag dit: door sath02. Mijn zoon is een grote fan van alle dingen Lego, en houdt van robots en auto's, en dit had gelijk zijn straatj
Computer gestuurde Arduino

Computer gestuurde Arduino

Heb je ooit wilde controleren de Arduino met een programma op uw computer die kan omgaan met een volledige GUI? Ik weet zeker dat de meesten zullen zeggen ja, maar een volledige GUI neemt hard werken. U moet de basis van dit alles weten voordat u het
Goedkope draadloze transmissie tussen twee Arduinos met infrarood

Goedkope draadloze transmissie tussen twee Arduinos met infrarood

Hoi allemaalVoor een project, was ik op zoek naar een goedkope oplossing voor het verzenden van gegevens van een Arduino met een andere. De seriële poort was al genomen en mijn transmissie (unidirectioneel) moest worden draadloze.Mijn onderzoek heeft
Autonome Arduino auto met infrarode nabijheidssensor

Autonome Arduino auto met infrarode nabijheidssensor

Dit Instructable laat zien hoe een preloved RC auto te wijzigen zodat het kan worden gecontroleerd door een Arduino. Vervolgens zal de Instructable u tonen hoe te maken van de RC uitvoeren dat een eenvoudige figuur 8 code vanaf daar de Instructable z