premiers tests avec l'accéléromètre - pobot. · pdf...

3
Premiers tests avec l'accéléromètre Extrait du PoBot http://www.pobot.org Premiers tests avec l'accéléromètre - Composants - Les contrôleurs - Easy AVR 4 - Date de mise en ligne : mercredi 21 février 2007 PoBot Copyright © PoBot Page 1/3

Upload: dodan

Post on 07-Mar-2018

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Premiers tests avec l'accéléromètre - pobot. · PDF fileanalogique/numérique de l'AVR. ... en nombres #include "glcd.h" // bibliothèque AVRlib de gestion d'un ... display_uint_at

Premiers tests avec l'accéléromètre

Extrait du PoBot

http://www.pobot.org

Premiers tests avec

l'accéléromètre- Composants - Les contrôleurs - Easy AVR 4 -

Date de mise en ligne : mercredi 21 février 2007

PoBot

Copyright © PoBot Page 1/3

Page 2: Premiers tests avec l'accéléromètre - pobot. · PDF fileanalogique/numérique de l'AVR. ... en nombres #include "glcd.h" // bibliothèque AVRlib de gestion d'un ... display_uint_at

Premiers tests avec l'accéléromètre

L'accéléromètre 2 axes installé sur ce circuit est un composant fabriqué par Analog et porte la référence ADXL311.

Il est particulier dans le kit EasyAVR4 : il ne se branche pas directement sur la carte. Il a donc fallu créer un petitconnecteur pour pouvoir manipuler l'accéléromètre à la main.

Les mesures effectuées par la puce MEMS sont mises à disposition sur deux sorties analogiques. Le circuit deMikroE ajoute les condensateurs et les résistances nécessaires.

On va afficher sur l'écran graphique (en utilisant WinAVR et AVRlib) les valeurs reçues sur le convertisseuranalogique/numérique de l'AVR.

Voici le code source :

/***************************************************************************** * ethernet.c * * Démonstration EthernetAVRlib * * * Auteur : Eric PASCUAL pour POBOT * Cible : ATmega * Compilateur : avr-gcc (WinAVR) */ #include <avr/pgmspace.h> #include <avr/io.h> // définitions des I/O #include <avr/interrupt.h> // support desinterruptions #include <stdlib.h> #include <string.h> #include "global.h"// informations générales sur lemicrocontrôleur utilisé (quartz, etc.) #include "a2d.h"// bibliothèque AVRlib de conversion des valeurs analogiquesen nombres #include "glcd.h"// bibliothèque AVRlib de gestion d'un afficheur LCD graphique générique #include"ks0108.h"// bibliothèque AVRlib implémentant les fonctions d'un afficheur LCD de type ks0108 #include "timer.h"//bibliothèque AVRlib de gestion des timers //----------------------------------------------------------------- // Définition desmessages qui s'afficheront sur l'écran char *msg1="Board to pos "; char *msg2="and press RB0 "; char*msg3="Zero G values : "; char *msg4="X= Y= "; char *msg5="One G values : "; char *msg6="Readings : "; /** * Affichage d'une valeur numérique à un emplacement particulier (ligne/colonne) de l'afficheur LCD graphique */static void display_uint_at(unsigned short value, u08 line, u08 col) { static char buffer[8] ; // conversion d'un entierdans un tableau (int to array) itoa(value, buffer, 10) ; // fermeture du buffer pour en faire une chaine de caractère(string se termine toujours par 0) buffer[7] = 0 ; // l'afficheur LCD graphique est géré par un curseur qu'il fautdéplacer au bon endroit glcdGotoChar(line, col) ; // puis une fonction générique permet d'afficher notre bufffer sans

Copyright © PoBot Page 2/3

Page 3: Premiers tests avec l'accéléromètre - pobot. · PDF fileanalogique/numérique de l'AVR. ... en nombres #include "glcd.h" // bibliothèque AVRlib de gestion d'un ... display_uint_at

Premiers tests avec l'accéléromètre

avoir à gérer chacun des pixels glcdPutStr (buffer) ; } /** * */ int main(void) { // DDRB = 0xfe ;// PB0 used asinput // initialization of AVRlib libraries a2dInit() ; glcdInit() ; timerInit() ; // u08 position_num = 1 ; u08 line = 0 ; //glcdClearScreen() ; glcdGotoChar(line, 0) ; glcdPutStr(msg1) ; glcdWriteChar(position_num++ + 48) ;glcdGotoChar(++line, 0) ; glcdPutStr(msg2) ; while (!(PINB & 0x01)) ; while ((PINB & 0x01)) ; unsigned shortzeroG_X = a2dConvert10bit(0) ; unsigned short zeroG_Y = a2dConvert10bit(1) ; glcdGotoChar(++line, 0) ; glcdPutStr(msg1) ; glcdWriteChar(position_num++ + 48) ; glcdGotoChar(++line, 0) ; glcdPutStr(msg2) ; while(!(PINB & 0x01)) ; while ((PINB & 0x01)) ; unsigned short oneG_X = a2dConvert10bit(0) ; glcdGotoChar(++line, 0); glcdPutStr(msg1) ; glcdWriteChar(position_num++ + 48) ; glcdGotoChar(++line, 0) ; glcdPutStr(msg2) ; while(!(PINB & 0x01)) ; while ((PINB & 0x01)) ; unsigned short oneG_Y = a2dConvert10bit(1) ; glcdClearScreen() ; line= 0 ; glcdGotoChar(line, 0) ; glcdPutStr(msg3) ; glcdGotoChar(++line, 0) ; glcdPutStr(msg4) ; display_uint_at(zeroG_X, line, 2) ; display_uint_at (zeroG_Y, line, 10) ; glcdGotoChar(++line, 0) ; glcdPutStr(msg5) ;glcdGotoChar(++line, 0) ; glcdPutStr(msg4) ; display_uint_at (oneG_X, line, 2) ; display_uint_at (oneG_Y, line, 10); line+=2 ; glcdGotoChar(line, 0) ; glcdPutStr(msg6) ; glcdGotoChar(++line, 0) ; glcdPutStr(msg4) ; while (1) {timerPause(100) ; oneG_X = a2dConvert10bit(0) ; oneG_Y = a2dConvert10bit(1) ; display_uint_at (oneG_X,line, 2) ; display_uint_at (oneG_Y, line, 10) ; } } // supprimez la dernière ligne parasite

Copyright © PoBot Page 3/3