Avant de foncer tête dans le guidon pour réaliser notre Machine de Turing Élémentaire, il me semble utile de vous prévenir que toutes les images qui sont présentes dans ce didacticiel sont de très médiocres qualités. En effet, elles sont issues de copies d’écran, technique qui engendre une perte de qualité considérable.
Comme pour tous mes autres tutoriels, vous trouverez l’intégralité des  » modules  » dont vous pouvez avoir besoin qui sont réunis dans un fichier.ZIP que vous trouverez ici. (Fichiers pour la machine Élémentaire et pour la réalisation Autonome.)
Dans cette nouvelle « saga », je vais vous proposer deux versions de Machine de Turing utilisant une carte Arduino NANO.
Celle de ce premier volet ultra simplifiée qui se contente exclusivement du petit module Arduino, le dialogue homme/Machine étant réalisé à l’aide du Moniteur de l’IDE activé sur un ordinateur.
Le deuxième volet sera consacré à un appareil bien plus complet et autonome avec coffret et alimentation sur pile rechargeable.
Cette réalisation plus étoffée donnant lieu à un didacticiel séparé qui se trouve ici.
Passons à l’étude de la Machine de Turing Élémentaire.
Soyons honnête : Ce petit projet n’a vraiment été motivé que par le plaisir de programmer. Quand la machine de TURING décrite sur ce site (1) a été achevée et le didacticiel mis en ligne, je me suis retrouvé un peu tristounet, comme c’est souvent le cas quand on vient de passer de très agréables vacances et qu’il faut reprendre le joug. Une sorte de « vide », car ce n’est pas les activités ludiques qui me manquent. Mais … la programmation est une drogue, une activité qui oblige à faire des efforts intellectuels sans lesquels, à mon âge le cerveau se rouille inexorablement. Bref, je cherchais un prétexte pour rebrancher un Arduino sur le P.C, et des raisons de me creuser les méninges.
(1)Â https://www.robot-maker.com/ouvrages/machine-de-turing-tome1-presentation/
Prototype achevé, la petite machine matérielle a été capable de dérouler correctement plus de cinquante algorithmes. Mais leur mise au point a été assez laborieuse et exigé de réaliser bien des feuilles perforées qui ont terminé dans la poubelle. Par ailleurs, compte tenu de la lenteur de fonctionnement de cette machine électromagnétique, il est assez peu raisonnable d’activer un programme qui a fait ses preuves sur des données comportant un nombre de BITs important. Du coup, bien que le carrousel simule 56 BITs, dans la pratique on se limite à une dizaine dans les données, rarement plus. Aussi, pouvoir soumettre à l’algorithme des données « étendues » sans avoir à attendre des lustres est un avantage incontestable. Par ailleurs, la vérification « automatique » d’un programme avant d’envisager de faire une feuille perforée pour la machine matérielle est vraiment très agréable. Comme vous pouvez le constater dans le didacticiel cité dans le chapitre précédent, la simulation d’un déroulement de programme peut se faire avec la Machine de Turing « version papier ». Mais cette méthode est très fastidieuse dès que le nombre de cycles d’horloge devient important, sans compter que dans ce cas le risque de se tromper augmente de façon significative. Enfin, l’analyseur syntaxique durant la saisie des instructions nous signale plusieurs types d’erreurs ou d’illogismes. On peut ainsi corriger le programme en temps réel. Comme c’est le cas sur le prototype matériel, on peut configurer un mode PAS à PAS, avec plusieurs autres options de comportement bien utiles. Pour clore cette introduction, on peut aussi mentionner la faculté de conserver dans la mémoire EEPROM du microcontrôleur ATmega328 jusqu’à 14 feuilles perforée virtuelles et une configuration de BARILLET.
Youppiiiiii, le voilà le prétexte pour tortiller du code C++, et y consommer des heures par paquet de beaucoup ! Une idée toute simple qui consiste à frapper du texte sur un clavier d’ordinateur, puis de le valider. Et prouitchhh, un programme avale et gloutonnement ce verbiage et se transforme en une Machine de Turing virtuelle dialoguant de façon classique avec le Moniteur de l’IDE. Deux unités sont envisagées. Dans ce descriptif il s’agir de la version « du pauvre » nommée car elle n’impose pratiquement aucune soudure, sauf si on désire l’intégrer dans un petit coffret tel que celui de la Fig.1 ou l’équiper du Bruiteur sonore. La carte NANO branchée seule sur le P.C. par sa ligne USB est suffisante. Seule contre-partie, elle impose l’utilisation d’un ordinateur pour fonctionner, contrairement à l’unité autonome qui elle impose un travail de soudage et d’assemblage relativement conséquent et un certain coût.
La suite est ici.