Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Robotique] Jeu de morpion Lynxmotion AL5C/Java

    30 janvier 2014 à 11:12:07

    Bonjour,

    Nous sommes deux étudiants en 1e année de fac et nous avons un projet de robotique à réaliser. Il s'agit de programmer un robot Lynxmotion en Java pour qu'il joue au morpion. Cependant nous somme en totale autonomie et personne ne nous a dit comment "donner" du code au microcontrôleur et nous n'avons pas trouvé comment faire. Quelqu'un peut-il nous aider ?

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      30 janvier 2014 à 11:17:26

      Bonjour,

      As-tu fais des recherches dans la documentation de ton microcontrôleur pour commencer ? Je déplace ce sujet dans une autre section du forum correspondant plus à ta demande.

      • Partager sur Facebook
      • Partager sur Twitter

      Je ne suis plus modérateur, ne me contactez plus pour des demandes, je n'y répondrai pas.

        30 janvier 2014 à 19:37:43

        Bonjour,

        Quel type de microcontroleur ? Si il s'agit d'un PIC, il existe des programmateurs dit ISCP (in circuit serial programming). Les PIC sont prévus pour, avec des broches dédies et tout un protocole ..  

        • Partager sur Facebook
        • Partager sur Twitter
        Pensez aux +1 qui font toujours plaisir ! Visitez mon site, il est encore en développement, une première version: WLElectronic.free.fr 
          1 février 2014 à 23:31:02

          Le microcontrôleur est un ATMEGA168. Nous avons trouvé une documentation technique sur le site d'Atmel mais nous ne l'avons pas encore lue (c'est en fait assez technique donc nous ne sommes pas sûr de comprendre).
          • Partager sur Facebook
          • Partager sur Twitter
            1 février 2014 à 23:58:09

            D'accord, donc la programmation du microcontrôleur ce fais via un bus série, il s'agit d'une programmation ISP (In-System Programming)
            Ce genre de programmation nécessite la mise en place d'un connecteur relier a ton programmateur aux broches MOSI, MISO SCLK, RESET au GND et au VCC.

            Pour ce qui est de la programmation du microcontrôleur et des broches en question, je te conseil de googler la programmation ISP sur les ATMega.

            Pour le fonctionnement, la il faut lire la doc ..
            • Partager sur Facebook
            • Partager sur Twitter
            Pensez aux +1 qui font toujours plaisir ! Visitez mon site, il est encore en développement, une première version: WLElectronic.free.fr 
              2 février 2014 à 21:38:15

              D'accord, merci. Nous allons essayer de voir un peu tout ça et nous posterons notre avancée dans le projet ici.
              • Partager sur Facebook
              • Partager sur Twitter
                27 février 2014 à 11:59:48

                Bonjour,

                Nous avons trouvé que pour utiliser notre robot, il fallait lui envoyer des chaines de caractères par le biais d'un port série.

                Nous avons donc importé la librairie RXTX dans eclipse, puis nous avons écrit un programme. Seulement, celui-ci nous donne une erreur que nous ne comprenons pas.
                Exception in thread "main" java.io.FileNotFoundException: COM3 (Accès refusé)
                	at java.io.FileOutputStream.open(Native Method)
                	at java.io.FileOutputStream.<init>(Unknown Source)
                	at java.io.FileOutputStream.<init>(Unknown Source)
                	at java.io.PrintStream.<init>(Unknown Source)
                	at AL5C.Déplacement.main(Déplacement.java:107)

                Pouvez vous nous aider ?

                Merci.



                • Partager sur Facebook
                • Partager sur Twitter
                  27 février 2014 à 12:01:50

                  Tu programmes sur Windows ? Il va falloir executer le programme en mode "administrateur" apparemment car là il te dit que ton port COM 3 est bloqué. Soit parce qu'il est utilisé par un autre programme (terminal série déjà ouvert) soit parce que tu n'as pas les droits d'administration nécessaire

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Retrouvez moi sur mon blog et ma chaine Youtube !

                    27 février 2014 à 14:22:35

                    Oui je programme sous Windows. Il n'y a a priori rien d'autre qui fonctionne sur ce port.

                    Comment puis-je exécuter le programme en tant qu'admin ? J'ai tous les droits, je suis sur mon PC perso.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 mars 2014 à 14:50:00

                      Bonjour,

                      J'ai avancé dans mon programme et je pense avoir réussi à me connecter à un port série. En revanche je n'arrive pas à transmettre des information au robot afin qu'il bouge. Il faut que je lui donne une donnée de type string (#3 P1000 par exemple). J'ai pour cela crée un Outputstream mais lorsque j'écris dedans rien ne se passe. pouvez vous m'aider ? Merci.

                      package Robot_AL5C;
                      
                      import java.io.*;
                      import gnu.io.*;
                      
                      public class GestionnairePortSérie {
                      
                      	private SerialPort serialPort;
                      	private OutputStream outStream;
                      	private InputStream inStream;
                      
                      	/** Connection au port série */
                      	public void connect(String portName) throws IOException {
                      		try {
                      			// Obtenir un objet CommPortIdentifier pour le port à ouvrir
                      			CommPortIdentifier portId = CommPortIdentifier
                      					.getPortIdentifier(portName);
                      
                      			// Ouverture du port
                      			serialPort = (SerialPort) portId.open("Application", 5000);
                      
                      			// Paramètres de connection.
                      			setSerialPortParameters();
                      
                      			// Ouverture des input et output (streams) pour la connection.
                      			outStream = serialPort.getOutputStream();
                      			inStream = serialPort.getInputStream();
                      
                      			System.out.println("Connecté à " + portName);
                      
                      		} catch (NoSuchPortException e) {
                      			throw new IOException(e.getMessage());
                      		} catch (PortInUseException e) {
                      			throw new IOException(e.getMessage());
                      		} catch (IOException e) {
                      			serialPort.close(); // Fermuture du port si échec de connection
                      			throw e;
                      		}
                      	}
                      
                      	/** Paramètres du port série */
                      	private void setSerialPortParameters() throws IOException {
                      		int baudRate = 9600; // 9600bps
                      
                      		try {
                      			// Initialisation du port série
                      			serialPort.setSerialPortParams(baudRate, // 9600bps
                      					SerialPort.DATABITS_8, // 8 bits de données
                      					SerialPort.STOPBITS_1, // 1 bits d'arrêt
                      					SerialPort.PARITY_NONE); // Pas de bit de parité
                      
                      			serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE);
                      		} catch (UnsupportedCommOperationException ex) {
                      			throw new IOException("Paramêtre du port non supporté.");
                      		}
                      	}
                      
                      	/** Déconnection du port série */
                      	public void disconnect() {
                      		if (serialPort != null) {
                      			try {
                      				// Fermeture des i/o streams.
                      				outStream.close();
                      				inStream.close();
                      			} catch (IOException ex) {
                      			}
                      			// Fermeture du port.
                      			serialPort.close();
                      			System.out.println("Déconnecté");
                      		}
                      	}
                      
                      	/** Mouvement du robot */
                      	public void bouger() throws IOException {
                      		String cmd = "#5 P1000 S2000";
                      		try {
                      			OutputStream outStream = serialPort.getOutputStream();
                      			outStream.write(cmd.getBytes());
                      			System.out.println("Mouvement effectué");
                      		} catch (IOException ex) {
                      			System.out.println("Mouvement non effectué");
                      		}
                      		
                      		
                      	}
                      
                      	/** Pause du programme */
                      	public static void pause(long ms) {
                      		try {
                      			Thread.sleep(ms);
                      		} catch (InterruptedException e) {
                      			e.printStackTrace();
                      		}
                      	}
                      
                      	/** Main */
                      	public static void main(String[] args) {
                      		GestionnairePortSérie main = new GestionnairePortSérie();
                      		try {
                      			main.connect("COM5");
                      			pause(2000); // Laisser le temps au robot d'effetuer son mouvement.
                      			main.bouger();
                      
                      		} catch (IOException ex) {
                      			System.err.println(ex.getMessage());
                      		}
                      
                      		main.disconnect();
                      
                      	}
                      }
                      



                      -
                      Edité par Gomis 13 mars 2014 à 14:50:30

                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 mars 2014 à 18:00:02

                        Je déplace vers le forum JAVA qui devrait être plus à même de répondre :)

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Retrouvez moi sur mon blog et ma chaine Youtube !

                        [Robotique] Jeu de morpion Lynxmotion AL5C/Java

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown