Dernière modification : 09/11/2022 à 17:27
Le but de la séance est de se familiariser avec la programmation de la brique NXT flashé avec le firmware LejosRT
Prenez connaissance de la procédure d’installation et d’utilisation de lejosRT.
Exercice 1 : Hello lejosRT !
- Dans un fichier
Hello.java
, recopiez le code suivant :
import lejos.nxt.*; public class Hello { public static void main (String[] args) { System.out.println("Hello LejosRT!"); Button.waitForPress(); } }
import lejos.nxt.*;
public class Hello {
public static void main (String[] args) {
System.out.println("Hello LejosRT!");
Button.waitForPress();
}
}
- Compilez avec la commande
nxjc
. Vous devez obtenir le fichierHello.class
. - Edition des liens et téléversement du programme sur la brique NXT avec la commande
nxj
. - Lancez le programme sur la brique, trois procédures possibles :
- relancez la commande
nxj
avec l’option-r
- directement depuis la brique :
Files > Hello.nxj
- depuis le PC grâce à la commande
nxjbrowse
: cliquez surconnect
, puis sélectionnezHello.nxj
etRun program
- relancez la commande
Exercice 2 : Affichages sur l’écran LCD
Cherchez dans la documentation les classes LCD
et BATTERY
. Faites un programme permettant d’afficher le niveau de la battery.
Exercice 3 : Console déportée
Les consoles déportées sont un outils fondamentale pour le développement sur carte embarquée, et plus spécifiquement lors de la phase de debug.
Regardez la documentation de la classe RConsole
.
On commence dans le code par demander à la brique d’attendre la connexion :
while (!RConsole.isOpen()){ RConsole.open(); }
while (!RConsole.isOpen()){
RConsole.open();
}
Côté PC, on peut lancer la commande
nxjconsole
nxjconsole
Les affichages déportés peuvent être réalisés avec l’instruction RConsole.println()
.
Réalisez un programme similaire à celui de l’exercice 2 mais qui affiche l’état de la batterie sur la console déportée.
Exercice 4 : Faire un thread temps réel périodique
Regardez la documentation de la classe RealtimeThread
.
- Comment créé t on un thread temps réel ?
- Comment peut on lui affecter une priorité ?
- Que fait la méthode
waitForNextPeriod()
? - Faite un programme qui lance un thread temps réel de priorité 15 qui va afficher toutes les secondes un message sur la console déporté indiquant le temps écoulé depuis le début du programme.
- Pour calculer le temps écouler, vous utiliserez la méthode statique
currentTimeMillis()
de la classeSystem
.
- Pour calculer le temps écouler, vous utiliserez la méthode statique
Exercice 5 : La classe Motor
Regardez la doc de la classe Motor
Connectez un moteur sur l’un des port de sortie du NXT et faite un programme qui :
- Fait tourner le moteur en marche avant
- Écrit “Avance” sur l’écran et “le robot avance” sur la console déportée
- Attend qu’un bouton soit appuyé.
- Fait tourner le moteur en marche arrière
- Écrit “Recule” sur l’écran et “le robot recule” sur la console déportée
- Attend qu’un bouton soit appuyé.
- Arrête le moteur
Exercice 6
Faites un programme avec deux RealtimeThread, le premier démarre le moteur puis affiche toutes les secondes un message, sauf si le moteur ne tourne plus, dans se cas il affiche un message et termine. Le deuxième attend qu’un bouton soit appuyé pour arrêter le moteur.