[Projet] Minitel arcade game

Hello, il se trouve que mon grand père vient de m'apporte un minitel en parfait état, ne sachant plus quoi en faire. Ni une ni deux, je jette un coup d'oeil sur internet voir si des projets ont déjà été faits avec de l'arduino sur un minitel, et pour voir ce qu'on pouvait en tirer. Bingo, cela est faisable, mais en plus, ça a l'air simple ! Sur le tuto suivant, on explique comment réaliser la liaison et on nous donne un mini "os":

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1271350467

Du coup, je pense pouvoir faire quelque que chose du bestio; mon idée étant de pouvoir réaliser quelques jeux (snake, pong, tetris?, space invaders?) jouables avec le clavier, car ici, ce qui est intéressant, c'est de disposer d'une multitude d'entrées et aussi d'avoir un bel écran rétro comme je les aimes :slight_smile:

Ptite question avant de commencer, il faut une résistance 4.7ohms, 4x 1kohm + 2x 330ohm en série suffiront ?

Bonjour,

Tu peut mettre un résistance de 10K ou de 1K ça fera pareil :wink:

(Ps: la prise minitel peut aussi faire office de prise midi, si tu veut tu peut te faire un cordon minitel/midi 2 en 1 ;))

Au sujet
et pour ceux que le minitel intéresserais encore un peu ! 8)
de la bonne doc dispo là (free of charge) :grin:
http://www.leskiosques.com/V3/solutions/minitel/commander.php4

Thanks les gens, un lien vers les différentes commande C utilisable pour afficher des trucs sur le minitel ?

Ah, ce bon vieux ninitel...

C'est vrai que vu comme ça, à tous ceux qui cherchent un écran et clavier à coller sur un arduino...

Je vois que la commande de doc se fait chez moi (j'habite à 10Km de FT R&D Lannion), j'ai encore des copains qui bossent là-bas, donc accès à d'autres docs possible certainement...

Par ailleurs, j'en avais un en couleur (et oui!), mais je ne l'ai pas gardé (le boulet). Dommage, car il serait intéressant de voir si on peut faire du graphique avec, en trifouillant à l'intérieur, voire en ayant un accès à ce qui fait office de carte graphique dans cette boîte magique ancêtre de l'internet grand public...

Vous pouvez m'expliquer pourquoi la valeur de la résistance à utiliser dans le montage n'a pas d'importance ?

Monstercrunch:
Vous pouvez m'expliquer pourquoi la valeur de la résistance à utiliser dans le montage n'a pas d'importance ?

C'est juste une résistance de pull-up :wink: (enfin je crois :sweat_smile:)

Bon, j'ai quelques soucis au niveau du code suivant que j'ai récupéré sur le topic dont je parle plus haut:

// 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() {

  UCSR0C = B00100100; // passage en mode 7bits + bit de parité
  Serial.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;

  Serial.print(hautGaucheEfface);

  while(i<11)
  {
    Serial.print(bas, BYTE);
    i++;
  }
  i=0;

  while(i<16)
  {
    Serial.print(droite, BYTE);
    i++;
  }

  Serial.print(27, BYTE);
  Serial.print(79, BYTE); //Grossit la police
  Serial.print("MiniOS");
  Serial.print(27, BYTE);
  Serial.print(76, BYTE); //Police normale
  Serial.print(bas);
  Serial.print(bas);
  i = 0;
  while(i<13)
  {
    Serial.print(gauche);
    i++;
  }
  Serial.print("The Minitel OS");
  i=0;
  while(i<6)
  {
    Serial.print(bas, BYTE);
    i++;
  }
  i=0;

  while(i<22)
  {
    Serial.print(droite, BYTE);
    i++;
  }
  Serial.print(27, BYTE);
  Serial.print(72, BYTE); // clignotement
  Serial.print("Appuyez sur une touche...");
  Serial.print(27, BYTE);
  Serial.print(73, BYTE); // fixe

  Serial.print(7, BYTE);
  while(Serial.available() <= 0) {  
  }
  Serial.read(); // Attente d'une touche

}

int menu(){
  Serial.print(hautGaucheEfface);
  Serial.print(27, BYTE);
  Serial.print(77, BYTE); // lettres de double hauteur
  Serial.print(bas);
  Serial.print("                ### Menu ###");
  Serial.print(27, BYTE);
  Serial.print(76, BYTE); //Police normale

  Serial.print(bas);
  Serial.print(bas);
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("1 - Fakebook");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("2 - Credits");
  int inByte = 0;

  while(Serial.available() <= 0) {  
  }
  Serial.print(hautGaucheEfface);
  inByte = Serial.read();

  return inByte;

}
void fakebook(){
  Serial.print(hautGaucheEfface, BYTE);
  Serial.print(bas);
  Serial.print(27, BYTE);
  Serial.print(77, BYTE); // lettres de double hauteur
  Serial.print(" 3615  ");
  Serial.print(27, BYTE);
  Serial.print(79, BYTE); // lettres de double grandeur
  Serial.print("FACEBOOK");
  Serial.print(27, BYTE);
  Serial.print(77, BYTE); // lettres de double hauteur
  Serial.print(bas);
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("Amis               Mon Statut");
  Serial.print(27, BYTE);
  Serial.print(76, BYTE); // police normale
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("- Mikou Coco      ......................");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("- Matthieu Gaill  ......................");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("- Nielsou Ptich   ......................");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("- Mel Gormany     ......................");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("                  ......................");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("- voir mes amis        valider le statut");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("                           ");
  Serial.print(27, BYTE);
  Serial.print(93, BYTE); //Inversion de fond
  Serial.print(" ENVOI ");

  Serial.print(27, BYTE);
  Serial.print(76, BYTE);
 Serial.print(27, BYTE);
  Serial.print(92, BYTE); //Inversion de fond // police normale
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("----------------------------------------");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print(27, BYTE);
  Serial.print(77, BYTE); // lettres de double hauteur

  Serial.print("  Actualites :");

  Serial.print(27, BYTE);
  Serial.print(76, BYTE); // police normale
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("        Soranne Guilly :");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print(" A vu des screenshots du prochain");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print(" Windows 2.1!");



  while(Serial.available() <= 0) {  
  }
  Serial.read(); // Attente d'une touche
}

void credits() {
  Serial.print(hautGaucheEfface);
  Serial.print("MiniOS by Ronan Gaillard");
  Serial.print(bas);
  Serial.print(debutDeLigne);
  Serial.print("Powered by Arduino");
  while(Serial.available() <= 0) {  
  }
  Serial.read(); // Attente d'une touche
}

On me dit

"The BYTE keyword is no longer supported.
As of Arduino 1.0, the 'BYTE' keyword is no longer supported.
Please use Serial.write() instead."

J'ai pourtant remplacé les serial1... par serial et le UCSR1C par UCSR0C...

Bonjour,

Depuis les modifications apporté dans arduino 1.0 il n'est plus possible d'utiliser la forme xxx.print(nn, BYTE); il faut utiliser la forme xxx.write(nn); à la place.

Exemple :

Serial.print(bas, BYTE);

-> devient ->

Serial.write(bas);

premier test pas super concluant:
il ne se passe rien, et la seule chose qui change c'est que lorsque je j'écris quelque chose avec le clavier du minitel, ça me double des lettres (j'appuie 1fois sur "A" et ça affiche "AA"). Quand je débranche le tx ou le rx ça s'arrête (ça écrit une seule lettre), mais retirer la masse ne change rien...

Ton doublement de frappe vient sûrement d'un court-circuit entre le TX et RX dans ton câblage, le minitel envoie le caractère frappé et le reçoit immédiatement donc affiche les deux...

Monstercrunch:
premier test pas super concluant:
il ne se passe rien, et la seule chose qui change c'est que lorsque je j'écris quelque chose avec le clavier du minitel, ça me double des lettres (j'appuie 1fois sur "A" et ça affiche "AA"). Quand je débranche le tx ou le rx ça s'arrête (ça écrit une seule lettre), mais retirer la masse ne change rien...

bonsoir
de memoire
par le clavier du minitel
supprimer l'echo local
touches FCNT T +E
passer le minitel en mode ascii
FCNT T +A

Ok, j'ai réglé le faux contact, même si j'en voyais pas, j'ai airé mon montage:

Bingo !

Oui mais sauf que, après avoir appuyé sur une touche...

Une idée d'où ça peut venir ??

Ah... c'est joli! ma fille adorerait!

tu aurais peut-être du commencer par un simple programme de test, genre l'arduino reçoit un caractère Char du clavier du minitel et renvoie au minitel un truc genre "Caractère reçu : Char".

Si ça, ça marche, tu implémentes la suite petit à petit... Si tu as pris un code tout fait, es-tu sûr qu'il marche bien?

Bonjour,

oui ce code (enfin l'original) fonctionne bien, nous nous en sommes servi comme base à plusieurs reprises au Tetalab à Toulouse pour des projets utilisant le minitel...


http://tetalab.org/blog/update-webcam-pour-minitel-ça-manquait

voir aussi en milieu/bas de page ici http://tetalab.org/blog/11

je vais faire venir les softeux qui ont bossé dessus sur ce post 8)

Lionel

Snootlab:
Bonjour,

oui ce code (enfin l'original) fonctionne bien, nous nous en sommes servi comme base à plusieurs reprises au Tetalab à Toulouse pour des projets utilisant le minitel...


http://tetalab.org/blog/update-webcam-pour-minitel-ça-manquait

voir aussi en milieu/bas de page ici http://tetalab.org/blog/11

je vais faire venir les softeux qui ont bossé dessus sur ce post 8)

Lionel

sympa 8)

sauf erreur de ma part et juste sur ça :

Enfin un Arduino permet de faire l’adaptation de niveau et transfert les datas en 7 bits + parité à 1200 bps (a donf quoi !!!) vers le minitel et le tout en softwareSerial

les minitels étaient pour ce qui concerne la vitesse par la DIN switchable soft (ou clavier) en 1200,2400,4800 , encore plus à donf quoi ! :grin:

En effet, c'est possible via des commandes spécifiques. Je suis en train de faire une lib pour les fans hardcore de ce hardware.

Sinon, voila un bout de code qui montre ce qu'il est possible de faire graphiquement avec un minitel
http://www.tetalab.org/system/resources/BAhbBlsHOgZmIjQyMDEyLzAxLzA1LzE3XzQ5XzI1Xzk4NV9taW5pdGVsX2RlbW9fdGV4dGUyLnBkZQ/minitel_demo_texte2.pde

Ce code fonctionne avec ce setup
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1271350467

Perso, j'ai pas mis de résistance. Cependant, faites bien attention au câblage, je connais des gens qui ont cramé leur ATMEGA (et presque leur port USB) avec un mauvais brochage du connecteur DIN

Ouah ! merci pour toutes ces réponses ! Je suis honoré que des membres du tetalab viennent me fournir un peu d'aide. J'ai entendu parler de vous dans un Science et vie, et j'avais adoré l'article !

Pour ce qui est du montage, il est assez simple, donc je vais faire attention de pas me tromper, mais pour le coup je flippe de griller ma uno toute neuve :disappointed_relieved:

Je vais tester le code que vous m'avez passé, et je verrai ensuite ce que je peux faire. Cependant, c'est pas pour tout de suite, j'ai un bac blanc sur le feu =(

Merci +

teta-phil:
(...)
Perso, j'ai pas mis de résistance. Cependant, faites bien attention au câblage, je connais des gens qui ont cramé leur ATMEGA (et presque leur port USB) avec un mauvais brochage du connecteur DIN

OUep, il y a un 12V (noté alim) sur le connecteur DIN... il ne faut pas le laisser trainer...

teta-phil:
En effet, c'est possible via des commandes spécifiques. Je suis en train de faire une lib pour les fans hardcore de ce hardware.

Sinon, voila un bout de code qui montre ce qu'il est possible de faire graphiquement avec un minitel
http://www.tetalab.org/system/resources/BAhbBlsHOgZmIjQyMDEyLzAxLzA1LzE3XzQ5XzI1Xzk4NV9taW5pdGVsX2RlbW9fdGV4dGUyLnBkZQ/minitel_demo_texte2.pde

Ce code fonctionne avec ce setup
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1271350467

Perso, j'ai pas mis de résistance. Cependant, faites bien attention au câblage, je connais des gens qui ont cramé leur ATMEGA (et presque leur port USB) avec un mauvais brochage du connecteur DIN

Je l'ai dl, j'ai remplacé les Serial.print par Serial.write, ainsi que les ", BIN" que j'ai retiré. Rien ne s'affiche sur l'écran, mais je peux écrire avec le clavier.