adaptateur souris DB9 < Atmega (arduino) > ps2

11 sujets de 1 à 11 (sur un total de 11)

  • darkmiky

    • Messages : 162
    #208868

    Bonsoir la communauté amiga.

    J’ai codé et je me suis fabriqué un adaptateur souris ps2 pour amiga (à base d’atmega 328p) en ayant une vingtaine en stock.

    L’adaptateur et le code ne sont pas nickel, car je suis parti au hasard (le nom ds routine par exemple est inversé dans le code, et le code n’est pas commenté) . Toujours est il, il fonctionne bien mieux (vive l’optique), que mes souris à boule amiga d’origine. J’en ai fait trois, et cela me convient.

    Je voulais savoir si vous étiez intéressé par le code et le schéma, que je vous le mette à dispo. (il faut que je fasse un schéma propre de la platine)

    L’atmega est programmé sur une board arduino, et ensuite il est posé en indépendant sur un pcb (de test).

    Il suffit d’un quartz 16Mhz, deux condensateurs 10 nF, un atmega 16 ou 32, un db9 mâle, un ps2 femelle. (4Euros de matériel, morceau de pcb compris)

    Il ne fonctionne cependant qu’avec les souris compatible ps2 (donc toutes les ps2 même sans fils) et les usb supportant le protocole ps2.

    Si vous êtes intéressé, je tacherai de mettre sur ce poste le code (grâce à la lib ps2 d’arduino) ainsi qu’un schéma de brochage direct (juste de l’atmega, donc sans l’arduino.)

    Cordialement

    Marco

    • Messages : 74
    #209492

    Merci !

    Je serai interesse’ au code + brochage des AT Mega

    Cordialment,

     

    Marco

     

     

     

    Patrice

    • Messages : 210
    #209493

    Tres intéressé bravo

    Faites l'amour pas la vaisselle

    darkmiky

    • Messages : 162
    #209541

    bonsoir,

    je vais essayer de vous joindre les photos de l’adaptateur, de son schéma fait main, et un fichier texte contenant le code pour l’arduino

    concernant l’arduino j’ai utilisé un quartz externe en horloge, mais pour ceux qui ont un bootloader sur horloge interne, le quartz et les condensateurs ne sont pas obligatoire

    cordialement

    mike

    darkmiky

    • Messages : 162
    #209542

    Les photos du proto et du schema (en espérant que ca passe j’arrive pas à mettre des images en attache

     

     

     

    Attachments:

    darkmiky

    • Messages : 162
    #209547

    et le code (il vous faut la lib arduino ps2) testé sur la version 10.5 arduino (désolé ca ne passe pas non plus en fichier joint)

    *************code***************

    #include <ps2.h>

    /*
    * Pin 5 data pin PS2, pin 6 clock pin PS2
    */
    PS2 mouse(6, 5);

    const int AmHPin = 13;
    const int AmHQPin = 12;
    const int AmVPin = 11;
    const int AmVQPin = 10;
    const int AmB1 = 9;
    const int AmB2 = 8;
    const int AmB3 = 7;

    void HGau() {
    digitalWrite(AmHPin, HIGH);
    digitalWrite(AmHQPin, HIGH);
    digitalWrite(AmHPin, LOW);
    digitalWrite(AmHQPin, LOW);

    }

    void HDrt() {
    digitalWrite(AmHQPin, HIGH);
    digitalWrite(AmHPin, HIGH);
    digitalWrite(AmHQPin, LOW);
    digitalWrite(AmHPin, LOW);

    }

    void Vhaut() {
    digitalWrite(AmVPin, HIGH);
    digitalWrite(AmVQPin, HIGH);
    digitalWrite(AmVPin, LOW);
    digitalWrite(AmVQPin, LOW);

    }

    void Vbas() {
    digitalWrite(AmVQPin, HIGH);
    digitalWrite(AmVPin, HIGH);
    digitalWrite(AmVQPin, LOW);
    digitalWrite(AmVPin, LOW);

    }

    void mouse_init()
    {
    mouse.write(0xff);
    mouse.read();
    mouse.read();
    mouse.read();
    mouse.write(0xf0);
    mouse.read();
    }

    void setup()
    {
    pinMode(AmHPin, OUTPUT);
    pinMode(AmHQPin, OUTPUT);
    pinMode(AmVPin, OUTPUT);
    pinMode(AmVQPin, OUTPUT);
    pinMode(AmB1, OUTPUT);
    pinMode(AmB2, OUTPUT);
    pinMode(AmB3, OUTPUT);

    // Serial.begin(9600);
    // Serial.print(« mikeeeeee »);
    mouse_init();
    }

    void loop()
    {
    char mstat;
    char mx;
    char my;

    mouse.write(0xeb);
    mouse.read();
    mstat = mouse.read();
    mx = mouse.read();
    my = mouse.read();

    // Serial.print(mstat);
    // Serial.print(« \tX= »);
    // Serial.print(mx, DEC);
    // Serial.print(« \tY= »);
    // Serial.print(my, DEC);
    // Serial.println();
    // delay(20); /* twiddle */
    if (mx < 0) {
    HDrt();
    //Serial.print(« mike horiz droit »);
    }

    if (mx > 0) {
    HGau();
    //Serial.print(« mike horiz gauche »);
    }

    if (my < 0) {
    Vhaut();
    //Serial.print(« mike vert haut »);
    }

    if (my > 0) {
    Vbas();
    //Serial.print(« mike vertical bas »);
    }

    if(mstat == 8) {
    digitalWrite (AmB1, HIGH);
    digitalWrite (AmB2, HIGH);
    digitalWrite (AmB3, HIGH);
    // Serial.print(« MIKEEEE 000 »);
    }

    if(mstat == 9) {
    digitalWrite (AmB1, LOW);
    digitalWrite (AmB2, HIGH);
    digitalWrite (AmB3, HIGH);
    // Serial.print(« MIKEEEE 100 »);
    }

    if(mstat == 12) {
    digitalWrite (AmB1, HIGH);
    digitalWrite (AmB2, HIGH);
    digitalWrite (AmB3, LOW);
    // Serial.print(« MIKEEEE 010 »);
    }

    if(mstat == 10) {
    digitalWrite (AmB1, HIGH);
    digitalWrite (AmB2, LOW);
    digitalWrite (AmB3, HIGH);
    // Serial.print(« MIKEEEE 001 »);
    }

    if(mstat == 13) {
    digitalWrite (AmB1, LOW);
    digitalWrite (AmB2, HIGH);
    digitalWrite (AmB3, LOW);
    // Serial.print(« MIKEEEE 110 »);
    }

    if(mstat == 11) {
    digitalWrite (AmB1, LOW);
    digitalWrite (AmB2, LOW);
    digitalWrite (AmB3, HIGH);
    // Serial.print(« MIKEEEE 101 »);
    }

    if(mstat == 14) {
    digitalWrite (AmB1, HIGH);
    digitalWrite (AmB2, LOW);
    digitalWrite (AmB3, LOW);
    // Serial.print(« MIKEEEE 011 »);
    }

    if(mstat == 15) {
    digitalWrite (AmB1, LOW);
    digitalWrite (AmB2, LOW);
    digitalWrite (AmB3, LOW);
    // Serial.print(« MIKEEEE 111 »);
    }

    //Serial.println();

    }

    Attachments:

    darkmiky

    • Messages : 162
    #209550

    Hgau, HDrt, Vhaut, Vbas sont les routines pour le mappage de la direction de la souris vers l’amiga, mais elles sont inversées, j’ai pas retouché le code ensuite.
    J’ai laissé commentée la partie debug en mode sérial, sur la platine arduino, qui me servait à savoir ou j’en étais et si la lecture de la souris ps2 était bonne.

    En espérant que cela puisse vous servir.
    Testé sur 1 A500, 2 A600, 1 A1200 et une cd32, aucun soucis.

    Le troisième bouton devrait logiquement fonctionner (clique molette) mais ne connaissant d’appli amiga qui l’utilise je n’ai pas testé

    le roulement de la molette lui ne fonctionne pas

    J’ai fait ce montage que pour pouvoir avoir une souris correct et optique sur amiga, ayant à dispo un bon nombre d’atmega.

    Tout est libre, je me suis basé sur la library PS2 de l’arduino et de l’article d’obligement décrivant le fonctionnement d’une souris amiga.

    Cordialement.
    Mike

    darkmiky

    • Messages : 162
    #209570

    oups petit détails, les prises db9 et ps2 sur le schéma sont vues coté soudure

    Marco

    • Messages : 74
    #209582

    Bravo et merci !

    J`ai une douzaine de Amtel mega mais dans ce format:

     

    Tu peut le flasher ou je trouve un adaptateur ?

     

    Amicalment,

     

    Marco

     

     

    darkmiky

    • Messages : 162
    #209583

    Ça fonctionne aussi si tu le programme d un arduino, suffit de corréler les pin

    Si tu as un arduino de base (genre arduino duemilanove) tu trouves facilement comment brocher et programmer un arduino sur breadboard

    L atemga étant le même il suffit juste de brocher correctement

    Je n ai que de l atmega 2560 dans ce format et il se programme aussi facilement suffit du bon bootloader :

    Marco

    • Messages : 74
    #209596

    Merci Darkmiky pour toutes tes explications.

    Je vais mequiper pour cercher a lintegrer meme a l`interieur de la souris.

    Le top c`est de creer un fichier gerbeur pour faire un mini circuit imprimee avec du SMD aufin de faciliter le montage.

    Amicalment,

    Marco

     

     

     

     

     

11 sujets de 1 à 11 (sur un total de 11)

  • Vous devez être connecté pour répondre à ce sujet.

Forums AmigaOS, MorphOS et AROS Matériel adaptateur souris DB9 < Atmega (arduino) > ps2

Do NOT follow this link or you will be banned from the site!