Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Journal

Rapports

TP8

Pour notre projet, nous avons décidé d'implémenter le jeu "pierre papier ciseau" . Pour cela, nous devons utiliser l’accéléromètre.

La communication avec l’accéléromètre se fait via le protocole i2c.

 partir de ce TP, nous travaillons chaque séance avec pour objectif de réaliser notre application. Je vais donc expliquer tout ce qu'il nous restait à faire sur ce rapport.

Pour pouvoir compiler des fonctions i2c, il faut ajouter dans le fichier de configuration dans targets/mbed_ethernet/rflpc-config-file/config-options.h

L’accéléromètre ne peut être programmé que s'il est en mode stand by, donc il faut commencer par le mettre en stand by, pour pourvoir réinitialiser le registre sr.

Pour le protocole i2c, nous utilisons les fonctions définies dans smews. On communique avec le registre 0x98 de l'application board.

Pour mettre l’accéléromètre en stand by il faut mettre un 0 dans le registre 7 de l’accéléromètre, et pour l'activer mettre 1 dans le même registre.

Pour initialiser le registre sr il faut mettre 0 dans le registre 8.

Pour écrire dans les registres de l’accéléromètre nous déclarons un uint8_t in[2]; on met le numéro de registre dans in[0] et la valeur que nous voulons y mettre dans in[1];

Et nous utilisons la fonction rflpc_i2c_write(RFLPC_I2C_PORT,0x98,in,taille_de_la_donée,stop);

ou : RFLPC_I2C_PORT désigne les pins du sdl et sda, et on met le stop à 1 car 0 ne marche pas.

Pour récupérer les données de l'accelerometre il suffit de mettre un 0 dans le registre 0, et de lire le registre 0x98 qui va nous retourner une donnée sur 4octets.

pour récuperer la donnée nous utilisons une variable uint8_t data[4]

On trouvera :

* x dans data[0]

* y dans data[1]

* z dans data[2]

* tilt dans data[3]

Pour notre projet nous n'aurons besoin que de la variable tilt dont la structure est la suivante:

Shake | Alert | Tap | PoLa[2] | PoLa[1] | PoLa[0] | BaFro[1] | BaFro[0]

Le bit de 7 est à 1 si l'application board est secouée assez fort pour faire un shake

Les bits PoLa[2] | PoLa[1] | PoLa[0] signifient:

000: Unknown condition of up or down or left or right

001: Left:Equipment is in landscape mode to the left

010: Right:Equipment is in landscape mode to the right

101: Down:Equipment standing vertically in inverted orientation

110: Up:Equipment standing vertically in normal orientation

Nous faisons donc un décalage à droite de 2 bits sur la variable tilt suivi d'un & 7 pour mettre toutes les autres cases autres que PoLa à 0.

Pour le jeu,nous avons écrit une fonction js qui va récupérer 3 shakes, puis récupèrer la valeur de pola pour connaitre le choix de l'utilisateur.

Nous faisons ensuite un tirage aléatoire pour l'ordinateur, et affichons si le joueur a gagné ou perdu.

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article