Le code n'est composé que d'un seul fichier car l'OS est assez basique...
// Commandes de mise en page
byte gauche = 8;
byte droite = 9;
byte bas = 10;
byte haut = 11;
byte debutDeLigne = 13;
byte hautGauche = 30;
byte hautGaucheEfface = 12;
byte separateurDeSousArticle = 31;
byte remplissageEspace = 24; //Remplit le reste da la rangée avec des espaces
void setup() {
UCSR1C = B00100100; // passage en mode 7bits + bit de parité
Serial1.begin(1200);
presentation(); // écran de démarrage
Serial.begin(9600); // pour debug
}
void loop() {
//Serial.print(menu()); //(Pour debug seulement)
switch (menu())
{
case 49 :
fakebook();
break;
case 50 :
credits();
break;
}
}
void presentation() {
int i =0;
Serial1.print(hautGaucheEfface);
while(i<11)
{
Serial1.print(bas, BYTE);
i++;
}
i=0;
while(i<16)
{
Serial1.print(droite, BYTE);
i++;
}
Serial1.print(27, BYTE);
Serial1.print(79, BYTE); //Grossit la police
Serial1.print("MiniOS");
Serial1.print(27, BYTE);
Serial1.print(76, BYTE); //Police normale
Serial1.print(bas);
Serial1.print(bas);
i = 0;
while(i<13)
{
Serial1.print(gauche);
i++;
}
Serial1.print("The Minitel OS");
i=0;
while(i<6)
{
Serial1.print(bas, BYTE);
i++;
}
i=0;
while(i<22)
{
Serial1.print(droite, BYTE);
i++;
}
Serial1.print(27, BYTE);
Serial1.print(72, BYTE); // clignotement
Serial1.print("Appuyez sur une touche...");
Serial1.print(27, BYTE);
Serial1.print(73, BYTE); // fixe
Serial.print(7, BYTE);
while(Serial1.available() <= 0) {
}
Serial1.read(); // Attente d'une touche
}
int menu(){
Serial1.print(hautGaucheEfface);
Serial1.print(27, BYTE);
Serial1.print(77, BYTE); // lettres de double hauteur
Serial1.print(bas);
Serial1.print(" ### Menu ###");
Serial1.print(27, BYTE);
Serial1.print(76, BYTE); //Police normale
Serial1.print(bas);
Serial1.print(bas);
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("1 - Fakebook");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("2 - Credits");
int inByte = 0;
while(Serial1.available() <= 0) {
}
Serial1.print(hautGaucheEfface);
inByte = Serial1.read();
return inByte;
}
void fakebook(){
Serial1.print(hautGaucheEfface, BYTE);
Serial1.print(bas);
Serial1.print(27, BYTE);
Serial1.print(77, BYTE); // lettres de double hauteur
Serial1.print(" 3615 ");
Serial1.print(27, BYTE);
Serial1.print(79, BYTE); // lettres de double grandeur
Serial1.print("FACEBOOK");
Serial1.print(27, BYTE);
Serial1.print(77, BYTE); // lettres de double hauteur
Serial1.print(bas);
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("Amis Mon Statut");
Serial1.print(27, BYTE);
Serial1.print(76, BYTE); // police normale
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("- Mikou Coco ......................");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("- Matthieu Gaill ......................");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("- Nielsou Ptich ......................");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("- Mel Gormany ......................");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print(" ......................");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("- voir mes amis valider le statut");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print(" ");
Serial1.print(27, BYTE);
Serial1.print(93, BYTE); //Inversion de fond
Serial1.print(" ENVOI ");
Serial1.print(27, BYTE);
Serial1.print(76, BYTE);
Serial1.print(27, BYTE);
Serial1.print(92, BYTE); //Inversion de fond // police normale
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("----------------------------------------");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print(27, BYTE);
Serial1.print(77, BYTE); // lettres de double hauteur
Serial1.print(" Actualites :");
Serial1.print(27, BYTE);
Serial1.print(76, BYTE); // police normale
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print(" Soranne Guilly :");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print(" A vu des screenshots du prochain");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print(" Windows 2.1!");
while(Serial1.available() <= 0) {
}
Serial1.read(); // Attente d'une touche
}
void credits() {
Serial1.print(hautGaucheEfface);
Serial1.print("MiniOS by Ronan Gaillard");
Serial1.print(bas);
Serial1.print(debutDeLigne);
Serial1.print("Powered by Arduino");
while(Serial1.available() <= 0) {
}
Serial1.read(); // Attente d'une touche
}
Voilà, si vous avez des questions n'hésitez pas...
Je prévoit de programmer une classe Minitel afin de simplifier tout ça et de permettre à plusieurs personnes de pouvoir utiliser ce terminal comme écran.

Je met ici quelques screenshots pour ceux qui voudraient voir à quoi ça ressemble :o :

Voilà; ça c'est le montage sur un Arduino Mega comme vous pouvez le voir

. Les DELS servent justent de témoins.

L'écran de présentation...

Le Menu, un peu vide je vous l'accorde ;D

Pour le fun
