Alpha Rex 2.1

Programmation en NXC (extraits) :

// Jambe droite : Moteur B + Capteur de contact 1
#define RIGHT_MOTOR         OUT_B
#define RIGHT_TOUCH         S1
#define RIGHT_TOUCH_VAL     SENSOR_1  // Valeur de S1

// Jambe gauche : Moteur C + Capteur de contact 2
#define LEFT_MOTOR          OUT_C
#define LEFT_TOUCH          S2
#define LEFT_TOUCH_VAL      SENSOR_2  // Valeur de S2

// Les 2 jambes à la fois
#define MOTORS              OUT_BC

// Marche avant / arrière
#define FORWARDS 1
#define BACKWARDS 2

// Les autres capteurs utilisés ///////////////////////////////

// Capteur ultrasonique
#define ULTRASONIC          S4
#define ACTIVE_DISTANCE 30

// IMU (Inertial Motion Unit)
// https://www.dexterindustries.com/manual/imu-sensor/
#define IMU                 S3
#define IMU_ACC_ADDR 0x3A
#define IMU_GYR_ADDR 0xD2

// Les autres capteurs potentiels /////////////////////////////

// Capteur de couleurs
#define COLOR               S3
#define COLOR_VAL           SENSOR_3  // Valeur de S3

// Capteur de sons
#define SOUND               S4
#define SOUND_VAL           SENSOR_4  // Valeur de S4
void walkAngle (int direction, long angle) {
  
  ResetTachoCount(MOTORS);
  switch (direction) {
    case FORWARDS:
      // Les moteurs avancent synchronisés à la vitesse de 50 %
      OnFwdReg(MOTORS, 50, OUT_REGMODE_SYNC);
      while (MotorTachoCount(RIGHT_MOTOR) != angle);
      break;
    case BACKWARDS:
      // Les moteurs reculent synchronisés à la vitesse de 50 %
      OnRevReg(MOTORS, 50, OUT_REGMODE_SYNC);
      while (MotorTachoCount(RIGHT_MOTOR) != -angle);
      break;
  }
  Off(MOTORS);
}
void walkDuration (int direction, unsigned long duration) {

  unsigned long t0 = CurrentTick();  // Renvoie le temps en ms
  switch (direction) {
    case FORWARDS:
      // Les moteurs avancent synchronisés à la vitesse de 50 %
      OnFwdReg(MOTORS, 50, OUT_REGMODE_SYNC);
      while (CurrentTick () - t0 < duration);
      break;
    case BACKWARDS:
      // Les moteurs reculent synchronisés à la vitesse de 50 %
      OnRevReg(MOTORS, 50, OUT_REGMODE_SYNC);
      while (CurrentTick () - t0 < duration);
      break;
  }
  Off(MOTORS);
}

NXC et Geany sous Debian 11

NXC est un langage de programmation spécifique au robot Lego Mindstorms NXT. Il est basé sur le NBC, un langage assembleur.

Dans la console :
sudo apt-get install nbc

On va paramétrer Geany pour pouvoir compiler aussi bien des fichiers nxc que nbc. De plus on se basera sur la coloration syntaxique du langage C.

Dans ~/.config/geany, modifier le fichier filetype_extensions.conf :

#~ # Filetype extension configuration file for Geany
#~ # Insert as many items as you want, separate them with a ";".
#~ # See Geany's main documentation for details.
[Extensions]
NXC=*.nxc;*.nbc;

Dans ~/.config/geany/filedefs, créer un fichier filetypes.NXC.conf :

# For complete documentation of this file, please see Geany's main documentation

[styling=C]

[keywords=C]

[lexer_properties=C]

[settings]
lexer_filetype=C

# default extension used when saving files
extension=nxc

# single comments, like # in this file
comment_single=//
# multiline comments
comment_open=/*
comment_close=*/

[indentation]
width=2
# 0 is spaces, 1 is tabs, 2 is tab & spaces
type=0

[build-menu]
# %f will be replaced by the complete filename
# %e will be replaced by the filename without extension
# (use only one of it at one time)
FT_00_LB=Vérifier / Compiler
FT_00_CM=nbc %e.n*c
FT_00_WD=
FT_01_LB=Téléverser
FT_01_CM=nbc -S=usb -d %e.n*c
FT_01_WD=
FT_02_LB=
FT_02_CM=
FT_02_WD=
EX_00_LB=
EX_00_CM=
EX_00_WD=

Dans ~/.config/geany/templates/files, créer un fichier program.nxc :

// Lego Mindstorms NXT

Enregistrer les fichiers sources au format nxc, puis compiler (touche F8). Le téléversement sur la brique NXT se fait avec la touche F9 (ne pas oublier de vérifier que la brique NXT est allumée, sinon Geany indique « Compilation échouée »).

Remarque : Depuis que j’ai mis à jour Debian, le tiret bas (du 8) ne s’affiche plus dans Geany. La solution est de modifier la police de caractères dans Éditer > Préférences > Interface > Polices Éditeur (par exemple Liberation Mono Regular à la place de Monospace Regular).

VICE : Émulateur C64 sous Debian 11

Afin de préserver mon Commodore 64, j’ai installé l’émulateur VICE (version 3.5 sous Debian 11) : sudo apt-get install vice
Télécharger la ROM du C64 sur www.zimmers.net > Commodore > FTP Files Area > crossplatform > emulators > VICE > VICE 3.5 source code (vice-3.5.tar.gz).
Décompresser l’archive.

cd ~/Téléchargements
sudo cp -vR vice-3.5/data/* /usr/share/vice

Pour pouvoir sauvegarder ses programmes dans un répertoire personnel sous Debian, aller dans Settings > Settings … > Peripheral devices > Drive settings puis cocher IEC Device. Dans Filesystem Device, sélectionner le répertoire désiré en cliquant sur Browse. Puis aller dans Settings > Save settings.

Aide mémoire :
ALT D : Pour passer en plein écran et revenir en fenêtré.
ALT J : Pour inverser Joystick.
Pour lire un fichier .D64 : LOAD "*",8 puis éventuellement RUN.
RUN/STOP du C64 correspond à la touche ESC du PC.
Pour lire un fichier .TAP : LOAD

Commodore 64 : Guide de référence du programmeur

Installation de DOSBox sous Debian 11

DOSBox est un émulateur simulant un environnement compatible MS-DOS dans le but d’exécuter des programmes développés autrefois pour ce système.

Dans la console :
sudo apt-get install dosbox
mkdir ~/DOSBox (ou un autre chemin)
nano ~/.dosbox/dosbox-0.74-3.conf

Modifier le fichier dosbox-0.74-3.conf :
[cpu]
cycles=max
(à la place de cycles=auto)
[dos]
keyboardlayout=fr
(à la place de keyboardlayout=auto)
[autoexec]
mount c ~/DOSBox
(pour un chemin qui contient des espaces, mettre le chemin entre guillements : " ")

Lancer DOSBox depuis la console :
dosbox

Dans DOSBox :
c:
dir

Pour basculer entre le mode fenêtré et le mode plein écran, presser Alt-Entrée. Pour libérer le curseur de la souris, presser Ctrl-F10.


Complément personnel à mettre dans le fichier dosbox-0.74-3.conf dont il est question ci-dessus :

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount c "/media/eric/Fichiers Eric/Programmation/DOSBox/"
c:

### OPEN WATCOM 1.9 ###
path=%path%;c:\watcom\binw       
set include=c:\watcom\h
set watcom=c:\watcom
set edpath=c:\watcom\eddat
set wipfc=c:\watcom\wipfc

### TURBO PASCAL 7.0 ###
path=%path%;c:\tp7\bin

### NASM 2.15.05 ###
path=%path%;c:\nasm

Outils de développement que j’installe :
Open Watcom C/C++ 1.9 => Lien intéressant pour l’installation
Turbo Pascal 7.0
NASM 2.15.05 => Manuel en ligne

Installer Mednum Offline Player sous Debian 11

Site : https://vod.mediatheque-numerique.com
Version du lecteur VOD : 4.5.0

Dans la console :

Si le répertoire Mednum Offline Player n’existe pas déjà, je le crée :
sudo mkdir /usr/share/mednum-offline-player

Je télécharge l’application : mednum-offline-player.AppImage

J’installe l’application à l’endroit voulu :
cd Téléchargements
sudo mv mednum-offline-player.AppImage /usr/share/mednum-offline-player

Je rends le fichier exécutable :
sudo chmod +x /usr/share/mednum-offline-player/mednum-offline-player.AppImage

Pour intégrer le programme au menu de Mate, je crée un fichier mednum-offline-player.desktop dans le répertoire /usr/share/applications :
cd /usr/share/applications
sudo nano mednum-offline-player.desktop

[Desktop Entry]
Type=Application
Name=Mednum Offline Player
Comment=Arte VOD
Exec=/usr/share/mednum-offline-player/mednum-offline-player.AppImage
Icon=appimagekit-mednum offline player
X-AppImage-Version=4.5.0
Terminal=false
Categories=AudioVideo;Player;

Pour effacer une version précédente de Mednum Offline Player (à adapter) :
sudo rm -rf /usr/share/mednum-offline-player/mednum-offline-player.AppImage

Calculatrice Numworks et Debian 11

Sous Debian 11, pour mettre à jour la calculatrice NumWorks, il faut au préalable installer sur son ordinateur le fichier 50-numworks-calculator.rules dans le répertoire /etc/udev/rules.d/.

Dans la console, on tape :
wget https://cdn.numworks.com/f2be8a48/50-numworks-calculator.rules
sudo mv 50-numworks-calculator.rules /etc/udev/rules.d/50-numworks-calculator.rules

La mise à jour se fait depuis le Workshop.

Installation de VirtualBox 6.1.38 dans Debian 11

Au préalable, aller dans le BIOS :
Avancé > Configuration Processeur > Technologie Intel Virtualization > Active

Site officiel : https://www.virtualbox.org

Télécharger VirtualBox (6.1.38) et VirtualBox Extension Pack (6.1.38) :
=> https://download.virtualbox.org/virtualbox/6.1.38/virtualbox-6.1_6.1.38-153438~Debian~bullseye_amd64.deb
=> https://download.virtualbox.org/virtualbox/6.1.38/Oracle_VM_VirtualBox_Extension_Pack-6.1.38.vbox-extpack

Dans la console :

cd Téléchargements
sudo gdebi virtualbox-*.deb

Ouvrir VirtualBox et installer l’extension téléchargée précédemment :
Paramètres > Extensions > Ajoute une nouvelle extension

Dans la console :

Pour connaître les versions installées de headers / image :
uname -a
apt policy linux-headers-amd64 linux-image-amd64
Installation :
sudo apt-get install linux-headers-amd64
sudo apt-get install linux-image-amd64

Redémarrer l’ordinateur.

Dans la console :

cd /sbin
sudo ./vboxconfig

On peut maintenant installer des machines virtuelles…

Si besoin, installer les Additions invité sur la machine virtuelle (permet notamment le partage de dossiers entre l’hôte et l’invité).