Go Down

Topic: Le Minitel n'est pas mort!!! (Read 9147 times) previous topic - next topic

SoranneFr

Boujour à tous!

Je viens d'arriver il n'y a pas si longtemps que ça sur le forum, et j'aimerais présenter un peit projet qui n'est pas très avancé mais qui pourra servir de base pour certains qui seront interressés : MiniOS.
MiniOS est un OS pour Minitel. C'est grâce à un arduino que l'on communique avec un Minitel par le biais de la prise péri-informatique située à l'arrière des Minitels.
Le montage n'est pas difficile il suffit de connecter un prise mâle DIN comme sur le schéma ci-dessous :

.

Pour communiquer avec un Minitel il faut utiliser un débit de 1200 bauds, le code dans le prochain post  ;)

SoranneFr

Le code n'est composé que d'un seul fichier car l'OS est assez basique...

Code: [Select]
// 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  :D

Jean-François

Si tu peux mettre des photos plus petites, parce que là on voit rien.... Tu peux editer ton message avec le bouton "edit".

:)
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Davide

wow.
tres vintage.

Je dois acheter sur Ebay un minitel seulement pour essayer ce project,

;)

ekaki

Clair; carrément old school ^.^

Bidouille

Bonjour,

J'en ai un dans mon grenier, vous pouvez faire une offre  :)

A+

flaith

:D ARF, j'adore, ca sert pas à grand chose donc c'est totalement indispensable  ;)
J'attends vivement la suite

churchill

C'est excellent ! Un "Aller vers le passé"1 qui me plait bien. En plus, on retombe en enfance, ça faisait un sacré moment que je n'avais pas vu de minitel en marche.
Sinon, pour les photos, comme Jean-François : plus petites svp.

churchill

1 mauvais antonyme de "retour vers le futur"  ::)

SoranneFr

#8
Apr 17, 2010, 06:44 pm Last Edit: Apr 17, 2010, 06:45 pm by SoranneFr Reason: 1
Désolé pour les photos, voilà maintenant c'est tout bon  :).

J'ai aussi fait une rectification dans l'image du premier post : ce n'était pas "4.7 ohms", mais bien "4.7 kohms"...

Je travaille sur cet objet "Minitel" et je vous tiens au courant  ;)

Jean-François

Super, merci pour les photos. ;)
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

lululombard

Salut,
Merci beaucoup pour le partage du code :) Avec un ami on a parsé les touches pour le menu (mais il manque les premières lettres de l'alphabet :O), on a ajouté 2/3 pages (dont une qui joue de la musique sur un haut parleur), etc.

Pour tous ceux qui ont un Arduino Duemillanove, remplacez tous les Serial1 par Serial et le bidule des 7 bits + bit de parité.

Enjoy :D

Code: [Select]

32 = Espace
33 = !
34 = "
35 = #
36 = $
37 = %
38 = &
39 = '
40 = (
41 = )
42 = *
43 = ;
44 = ,
45 = -
46 = .
47 = /
48 = 0
49 = 1
50 = 2
51 = 3
52 = 4
53 = 5
54 = 6
55 = 7
56 = 8
57 = 9
58 = :
59 = ;
60 = <
61 = =
62 = >
63 = ?
64 = @
65 = ENVOI
66 = RETOUR
67 = RÉPÉTION
68 = GUIDE
69 = ANNULATION
70 = SOMMAIRE
71 = CORRECTION
72 = SUITE
73 = CTRL + CONNEXION / FIN
74 = J
75 = K
76 = L
77 = M
78 = N
79 = O
80 = P
81 = Q
82 = R
83 = S
84 = T
85 = U
86 = V
87 = W
88 = X
89 = Y
90 = Z
91 = [
92 = \93 = ]
94 = "FLECHE HAUT"
97 = CTRL + A
98 = CTRL + B
99 = CTRL + C
100 = CTRL + D
101 = CTRL + E
102 = CTRL + F
103 = CTRL + G
104 = CTRL + H
105 = CTRL + I
106 = CTRL + J
107 = CTRL + K
108 = CTRL + L
109 = CTRL + M
110 = CTRL + N
111 = CTRL + O
112 = CTRL + P
113 = CTRL + Q
114 = CTRL + R
115 = CTRL + S
116 = CTRL + T
117 = CTRL + U
118 = CTRL + V
119 = CTRL + W
120 = CTRL + X
121 = CTRL + Y
122 = CTRL + Z

ayme.32

Quand tu parles des bits de parité et 7 tu veux dire qu'il faut aussi modifier ça : Serial1.begin(1200); ?

ayme.32

#12
Aug 05, 2010, 10:04 pm Last Edit: Aug 05, 2010, 10:06 pm by ayme.32 Reason: 1
Salut, j'ai un problème la presentation ne s'affiche et je ne peux mettre plus de 3pages. J'ai un Arduino Duemilanove Atmega168.

EDIT : J'ai viré le Serial.begin(9600); sinon ça bugger et j'ai remplacé les Serial1 par Serial et modifier les 7bits + bit de parité par UCSR0C = B00100100;

Merci :)

jknppp

Enfin un moyen de recycler les minitels !! Bravo c'est une idée mortelle !!!!
j'ai très envie d'essayer :-)

DavidZ67

#14
Sep 18, 2010, 10:54 pm Last Edit: Sep 18, 2010, 10:55 pm by DavidZ67 Reason: 1
Je suis débutant et je n'arrive pas à connecter mon minitel à l'Arduino Duemilanove. En fait je ne sais pas comment faire le branchement. Quelqu'un pourrait-il m'expliquer comment je dois faire ? D'avance merci.

Go Up