Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [Tutoriel] Communications entre Casio et Arduino
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

[Tutoriel] Communications entre Casio et Arduino

Posté le 14/04/2013 23:23

Avant-propos
L'objectif de ce tutoriel, va être de faire communiquer une calculatrice CASIO par le port 3-pin, avec une carte arduino et à comprendre comment ça se passe à l’intérieur. A la fin on réalisera un mini "piano" avec votre calculatrice comme clavier et un buzzer branché sur l'arduino.

Ce tuto peut vous paraître long, pour une toute petite chose, mais c'est parce qu'il pose les bases, et que j'explique aussi pour les curieux, on est pas obliger de retenir tout ce qu'il y a dans ce tuto.

Attention : vous réalisez ce tutoriel à vos risques et périls, vous pourriez très bien griller votre matériel en faisant une fausse manip par exemple. Planète-Casio et moi-même ne seront pas responsables de la détérioration de votre matériel ou autres problèmes qui pourrait vous arriver.

Je suis pas un surdoué en électronique, il est fortement possible que je dise des bêtises, que j'utilise les mauvais termes, ou qu'il existe des meilleures solutions pour ce que je fais, dans ce cas n'hésitez pas à commenter ce tutoriel


Je vais partir du principe que vous avez une carte arduino uno, une calculatrice casio Graph 75/85/95 et des connaissances en programmation C.

Le port 3-pin de la Casio et son protocole
Le port 3-pin de la calculatrice, aussi appelé jack, communique avec un protocole similaire au RS232, c'est ce protocole qui est utilisé sur le port série de votre ordinateur, et sur de nombreux autres appareils. Le vrai protocole RS232 opère sur du -12V/+12V (enfin ça peut varier, mais en général c'est ça), alors que la calculatrice opère sur du 0V/4,2V. Grace aux addins, il est possible de contrôler ce port 3-pin et d'y imposer nos réglages.
Les 3 fils les plus importants dans le protocole RS232, sont
- Ground : Généralement appelé en cours "le -"
- Rx : Réception des données
- Tx : Emission des données
En fait il en existe bien d'autres dont je vous parlerais peut-être lors d'un projet avec la GBA, mais ce n'est pas le propos actuellement
Les fils Rx et Tx sont croisés entre deux périphériques car on relit d'un coté à la transmission (Tx) et de l'autre à la réception (Rx), ce qui est plutôt logique, non ?

Le câble
Si vous regardez le fil 3-pin pour échanger des données entre calculatrices, vous remarquerez qu'il comporte ces 3 fils, dont voilà l'ordre :

Donc pour pouvoir faire communiquer notre calculatrice Casio avec n'importe quel autre périphériques que les autres calculatrices, il va nous falloir un câble avec : d'un côté une prise jack 2.5 (en 3 points=3 canaux) et de l'autre les fils qui correspondent. Pour cela, il y a plusieurs solutions :
- Vous pouvez acheter ce type de câble sur Ebay (ou autre) et le couper en deux, vérifiez juste que c'est bien du jack 2.5 avec le bon nombre de points.
- La méthode radin, la mienne : cherchez dans vos vieux bacs de câble, si vous n'avez pas un fil utilisant cette connectique. Moi j'ai trouvé les écouteurs des anciens nokia, ce sont des jack 2.5 en 4 points :


Comme vous le voyez, il y a un point en plus, donc il y aurai pu avoir des problèmes, mais j'ai eu de la chance car aucun canal n'était à cheval sur deux connecteurs. En fait, les deux canaux entourés en rouge sur l'image précédente correspondent tous les deux au Ground. Ca ne sera pas toujours le cas en fonction des dimensions de la prise jack, donc ne prenez pas du 4 points en pensant que ça sera toujours bon !

Si vous utilisez des écouteurs, il y a de grandes chances que vous tombiez sur des fils recouvert d'une fine couche de plastique pour les isoler les uns des autres, mais cette dernière est impossible à enlever à la main. Pour l'enlever, il suffit de la bruler, donc une bougie suffira. Ensuite si vous utilisez une plaque de test (breadboard), je vous conseille de les souder à des fils rigides.

Vérification du câble
Que vous l'ayez acheté sur EBay ou que vous l'ayez créé, il faudra forcément le vérifier. Pour cela, personnellement j'utilise mon multimètre (ohmmètre ici) avec la fonction "bip".


En fait si les électrodes sont en contact, le multimètre se met à bipper. Si vous n'avez pas cette fonction sur votre multimètre vous pouvez aussi utiliser l’ohmmètre simple. Si vous n'avez pas de multimètre, vous pouvez peut être vous débrouiller pour allumer une led à travers le fil, mais bon ça risque d'être bordélique..
Donc tout d'abord vous vérifiez que lorsque le fil est relié au port 3-pin, il n'y a aucun contact entre les fils. Puis en position débranché, trouvez quel fil correspond à quel endroit. Je vous conseille d'enregistrer ça sur votre ordi, pour pas re-tester à chaque fois que vous ferrez un montage. Voilà mon fichier d'info (txt) sur mon câble, si vous avez besoin d'inspiration.

Avec l'arduino
L'arduino fonctionne en 5V, et non en 4,2V. Bien que les tensions ne soient pas extrêmement différent et que j'ai utilisé le câble en liaison direct pendant un petit moment sans avoir de dommage, il vaut mieux assurer en réduisant les 5V. (Du moins, je préfère car c'est quand même chère la calto, après vous faites ce que vous voulez).
- De la Calto à l'arduino : en principe l'arduino devrait considérer le 4,2V comme un niveau logique haut, donc il ne devrait pas y avoir de problème et pas besoin d'interface.
- De l'arduino à la calto : cette fois ci on envoi du 5V pour une calculatrice qui est censé en recevoir du 4,2. Personnellement j'utilise une diode en série qui fait baisser la tension de 0.7V environ, on est donc très proche de ce qu'on veut et pour pas chère. Si vous ne voulez pas en acheter et que vous êtes en S-SI ou STI, vous pouvez demander à votre prof d'élec, en général ils en ont pas mal car ça s'achète plus en gros. Moi j'en ai eu 20 pour 18 centimes (référence de mes diode)
Pour adapter les tensions, il y a pas mal de solutions plus ou moins adaptés ou coûteuses, je vous invite à aller voir ce document qui m'a donné l'idée de la diode, même si faut s'accrocher pour comprendre

Communiquer en serial sur la calculatrice
Comme dit précédemment on va utiliser un addin, avec les syscalls données dans la doc FxReverse(de Andreas Bertheussen et Simon Lothar). Comme ce n’est pas spécialement le sujet et qu'il y a d'autres tutos pour apprendre à s'en servir. On va utiliser mon addin : Serial Monitor (en principe compatible SH4), qui va donc permettre de recevoir les données (en ASCII ou hexa) et d'en émettre (en ascii uniquement). De plus si vous avez vraiment du mal, j'ai aussi mis les sources donc vous pourrez vous en inspirer et vous pouvez aussi poser des questions bien entendu. L'addin fonctionne à une vitesse de 9600bauds (environ équivalent à bit/s) donc on devra régler l'arduino en conséquence. Dès que vous lancez l'addin, il est prêt à recevoir ou émettre.

Réalisation de notre premier raccordement : Enfin !
Dans un premier temps notre but va être de pouvoir discuter avec la calculatrice via le "Moniteur série" de l'IDE d'arduino.
Donc on aura donc deux liaisons série : une pour la calculatrice, l'autre pour l'ordinateur et l'arduino s'occupera de les relier. Mais votre arduino n'en comporte qu'une (à moins que vous ayez une carte arduino mega), il va donc falloir utiliser la lib SoftwareSerial. Et en fait, on va tout simplement utiliser l'exemple "SoftwareSerialExample" sur lequel on va adapter les vitesses de transmission. Voilà le code adapté :


    #include <SoftwareSerial.h>

    SoftwareSerial serialCalc(10, 11); // RX, TX

    void setup()  
    {
        // Ouvre les ports serials
        Serial.begin(9600); //Pour la com avec l'ordi. Dont les ports sont Tx:1, Rx:0
        serialCalc.begin(9600); //Pour la com avec la calculatrice. Les  Donc les ports sont Tx:11, Rx:10 (ils sont définis juste au dessus)
    }

    void loop()
    {
        //si la calculatrice nous envoi quelque chose, alors on l'envoi sur l'ordi
        if(serialCalc.available())
            Serial.write(serialCalc.read());
        //si l'ordi nous envoi quelque chose, alors on l'envoi sur la calculatrice
        if(Serial.available())
            serialCalc.write(Serial.read());
    }

Le code est donc vraiment très simple avec les libs arduino. Rien qu'avec ce que je vous ai donné comme info, vous devriez être capable de monter le circuit, mais je vais clarifier tout ça :


Il ne nous reste plus qu'à lancer l'addin Serial Minitor sur la calculatrice et le moniteur série sur votre ordi et normalement si vous écrivez sur l'un, l'autre affiche le message.

Et si on faisait du bruit strident et pas agréable du tout ?
On va donc passer à une petite application. Pour ça il va vous falloir un petit buzzer(c'est ce qui fait BIIIP dans votre ordinateur, du moins sur les vieux fixes. Le mien vient d'un ordinateur), ou d'un petit haut-parleur. On va pouvoir le contrôler avec la fonction tone d'arduino.

Donc mon but est de pouvoir faire quelques notes (do,ré,mi,fa,sol,la,si) sur les touches a,b,c,d,e,f,g de la calculatrice. Actuellement lorsqu’on appui sur ces touches, l'arduino reçois la lettre de la touche, donc il suffit de faire une condition (enfin plutôt un switch) et d'envoyer le son si c'est la bonne touche. Oui mais quelle fréquence envoyer et pendant combien de temps ?
- Pour la fréquence j'ai choisis sur la page wikipedia : la gamme 3 qui me paraissait pas trop stridente et j'ai récupéré les fréquences.
- Pour la durée, en fait concrètement il faudrait avoir juste le temps entre deux réception de touches, mais si on dépasse un peu ce n’est pas trop grave. J'ai déterminé en testant que 30ms était assez bien.

Bon et bien voilà le code de notre arduino, vous remarquerez que j'ai ajouté deux conditions dans le switch pour faire varier la durée des sons :


    #include <SoftwareSerial.h>

    SoftwareSerial serialCalc(10, 11); // RX, TX
    int buzzer = 2; //pin du buzzer
    int duree = 30; //durée de chaque note en millisecodes

    void setup()  
    {
        // Ouvre les ports serials
        Serial.begin(9600); //Pour la com avec l'ordi. Donc les ports sont Tx:1, Rx:0
        serialCalc.begin(9600); //Pour la com avec la calculatrice. Dont les ports sont Tx:11, Rx:10 (ils sont définis juste au dessus)
    }

    void loop()
    {
        //si la calculatrice nous envoi quelque chose, alors on l'envoi sur l'ordi, puis on traite pour savoir si on reconnait une touche
        if(serialCalc.available())
        {
            char data = serialCalc.read();
            Serial.write(data);
            switch(data)
            {
                //Notes
                case 'a': tone(buzzer, 262, duree); break; // do
                case 'b': tone(buzzer, 294, duree); break; // ré
                case 'c': tone(buzzer, 330, duree); break; // mi
                case 'd': tone(buzzer, 349, duree); break; // fa
                case 'e': tone(buzzer, 392, duree); break; // sol
                case 'f': tone(buzzer, 440, duree); break; // la
                case 'g': tone(buzzer, 494, duree); break; // si
                //reglages
                case 'x': // augmente la duree des notes avec la touche +
                    duree++;
                    serialCalc.print(duree);
                    serialCalc.write(0xA);
                    break;
                case 'y': // diminue la duree des notes avec la touche -
                    duree--;
                    serialCalc.print(duree);
                    serialCalc.write(0xA);
                    break;
            }
        }
        //si l'ordi nous envoi quelque chose, alors on l'envoi sur la calculatrice
        if(Serial.available())
            serialCalc.write(Serial.read());
    }



Pour info concernant le réglage de l'addin Serial Monitor sur la calto, vous pouvez appuyer sur F4, ce qui aura pour effet d'envoyer la lettre tant que vous appuyez, ce qui est plus pratique dans notre cas.




J'espère que ce tutoriel vous a plu, c'était un projet ultrasimple, mais il permet de poser les bases de la communication arduino <-> Casio. Sinon je ferais peut être aussi des projets de communication GBA<->Casio si ça en intéresse



Ce tutoriel est mise à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 France.


Fichier joint


Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 30/04/2014 14:46 | #


ok merci
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 30/04/2014 14:52 | #


Ou alors tu definies la longueur maximal de la chaîne comme ça ala caloto écrit par exemple 100 caractère et larduino lit 100 caractères, si la chaîne que tu fiat passer n'est pas exactement 100 caractère s mais que le buffer est de 100 cases ça va
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 30/04/2014 14:56 | #


ouais je vais voir parce que normalement c'est des instructions a peut pres de longueur définies

Ajouté le 01/05/2014 à 15:22 :
Bon je fais face a un probleme, pour envoyer une chaine:
Coté Casio:
#include "envoi.h"
#include "syscall.h"

void test_envoi(char* chaine, int taille)
{
    unsigned char config[] = {0, 5, 0, 0, 0, 0};
    int nbr;
    
    Serial_Open(config);
    
    for(nbr=0;nbr<taille;nbr++){
        Serial_WriteByte(chaine[nbr]);
        Sleep(50);
    }
    // Serial_WriteBytes(chaine, 60);
    
    Serial_Close(1);
}

Coté Arduino:
#include <SoftwareSerial.h>

    SoftwareSerial serialCalc(4, 2); // RX, TX

    void setup()  
    {
        // Ouvre les ports serials
        Serial.begin(9600); //Pour la com avec l'ordi. Dont les ports sont Tx:1, Rx:0
        serialCalc.begin(9600); //Pour la com avec la calculatrice. Les  Donc les ports sont Tx:11, Rx:10 (ils sont définis juste au dessus)
        pinMode(3, OUTPUT);
        digitalWrite(3, LOW);
  }

    void loop()
    {
        char buffer[61];
        int taille = 60;
        
        //si la calculatrice nous envoi quelque chose, alors on l'envoi sur l'ordi
        if(serialCalc.available()){
            for(int i=0; i<taille; i++){
              //buffer[i] = serialCalc.read();
              Serial.write(serialCalc.read());
            }
            Serial.write(buffer);
        }
    }

Mais l'Arduino ne m'afficha pas ce qu'il faudrait qu'elle affiche, elle me sort des caractères du type y tréma Pourtant le port Serial est bien réglé sur 9600 bauds ...
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 01/05/2014 15:39 | #


Si tu tentes d'afficher le texte, c'est normal.
Les caractères 0 à 5 sont non imprimables, et en plus le 0 c'est fin de chaîne. Donc affiche-les en décimal.
Et pour info le ÿ c'est le code ASCII 255 (soit 8 1), c'est ce qui sort quand tu lis alors qu'il n'y a rien à lire.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 16:24 | #


Ce n'est pas du coté arduino que j'ai un soucis c'est du coté de la calto...
En effet, si je remplace par:
for(nbr=0;nbr<taille;nbr++){
    // Serial_WriteByte(chaine[nbr]);
    Serial_WriteByte('A');
}

La carte ne reçoit rien a part un ý, meme avec le code de Ziqumu
Je parle de ce code:
Cliquer pour enrouler
#include <SoftwareSerial.h>

    SoftwareSerial serialCalc(4, 2); // RX, TX

    void setup()  
    {
        // Ouvre les ports serials
        Serial.begin(9600); //Pour la com avec l'ordi. Dont les ports sont Tx:1, Rx:0
        serialCalc.begin(9600); //Pour la com avec la calculatrice. Les  Donc les ports sont Tx:11, Rx:10 (ils sont définis juste au dessus)
        pinMode(3, OUTPUT);
        digitalWrite(3, LOW);
  }

    void loop()
    {
        //si la calculatrice nous envoi quelque chose, alors on l'envoi sur l'ordi
        if(serialCalc.available())
            Serial.write(serialCalc.read());
        //si l'ordi nous envoi quelque chose, alors on l'envoi sur la calculatrice
        if(Serial.available())
            serialCalc.write(Serial.read());
    }

Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 01/05/2014 16:26 | #


Tu es sûr que les connexions de tes broches sont en accord avec le programme ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 01/05/2014 16:33 | #


oui si je me connecte avec SerialMonitor j’envoie sans problèmes ...
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 02/05/2014 02:42 | #


Tu est sûr que les vitesses de transmission sont bien les mêmes des deux cotés (9600 bauds sur SerialMonitor) ?
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 02/05/2014 08:39 | #


Ben oui:
unsigned char config[] = {0, 5, 0, 0, 0, 0};

Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 02/05/2014 08:42 | #


Tu ne peux pas comparer ton programme avec les sources de Serial Monitor ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 02/05/2014 09:16 | #


Ben justement ça me semble identique. Je suis pas sur PC mais il est dans problème SDK divers et variés si je me trompe pas

Ajouté le 02/05/2014 à 09:18 :
#define keypressed(code,min,maj,nbr) \
    if(KeyDown(code)){ \
    (writemode==0)?sendbyte=(min):((writemode==1)?sendbyte=(maj):sendbyte=(nbr)); \
    Serial_WriteByte(sendbyte); \
    if(showSended)screen.write(sendbyte); \
    while(KeyDown(code) && !repetition){Sleep(1);}}

Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 02/05/2014 09:25 | #


Tu as vérifié la valeur renvoyée par Serial_Open() pour être sûr que la liaison est bien ouverte ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 05/05/2014 18:17 | #


SerialOpen me renvoie bien 0 ...
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 05/05/2014 18:23 | #


Teste avec un multimètre, si tu en as un, qu'il y a bien du courant qui passe.
Après, c'est le programme Arduino.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 05/05/2014 18:33 | #


Il y a forcement un signal qui passe vu que ça marche avec SerialMonitor et que la Arduino m'affiche quelque chose.
Enfin je vois pas bien ou tu veux que je prenne le courant ...
Après niveau Arduino si je prend le programme de Ziqumu normalement ça devrait m'afficher au moins un "A" donc je ne pense pas que ça soit ça
Par contre est-ce que ca peut etre du au fait que j'ouvre le port com dans une fonction et pas au tout debut ?
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 05/05/2014 18:34 | #


Si la fonction est appelée au début, il ne doit pas y avoir de problème.
Ah, si j'avais une Arduino...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 05/05/2014 18:41 | #


Pff tout ce que je recoit c'est un "ý"
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 05/05/2014 18:42 | #


C'est le caractère 255, c.a.d le maximum pour un unsigned char. C'est normal qu'il sorte à la fin de la communication.
Tu ne peux pas repartir des sources de Serial Monitor ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 05/05/2014 18:47 | #


Lephenixnoir a écrit :
Ah, si j'avais une Arduino...

T'aurai du me demander, je t'en aurai prêté une (la Uno par exemple)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 05/05/2014 18:52 | #


Tant pis
D'ailleurs, je pense que je vais en acheter une bientôt... tu peux m'aider sur ce coup-là (revendeurs, etc...) ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 05/05/2014 18:54 | #


Rien a faire, ma arduino n'en fait qu'a sa tête
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;
    char ident_b64[60];
    char identifiant[30];
    char mdp[30];
    
    unsigned char conf[]={0,5,0,0,0,0};
    Serial_Open(conf);
    
    // DEBUG
    test_envoi(ident_b64, 60);
    Serial_Close(1);
    while(1){
        GetKey(&key);
    }
}

void test_envoi(char* chaine, int taille)
{
    int nbr;
    
    for(nbr=0;nbr<taille;nbr++){
        Serial_WriteByte('A');
    }
}

Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 249 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd