Lire les données des capteurs dans un programme. - C - Programmation
Marsh Posté le 30-01-2008 à 17:51:22
Salut!
Je ne sais pas si ça peut t'aider mais en principe tes capteurs correspondent à une adresse mémoire (ou registre, c'est un peu loin) Il te faut repérer cette adresse (ou registre) dans la doc de ton matériel ainsi que la correspondance de la valeur numérique avec la valeur physique.
Par exemple si la valeur varie de 0 à 255 et que le capteur capte les vents de 0 à 255 km/h la correspondance est vite faite.
Ensuite tu affectes une variable avec cette valeur récupérée et convertie et tu peux faire tes if(vent>100) ou autres.
Le souvenir que j'ai des projets comme ça, c'est qu'il faut s'arracher sur la doc pour trouver où récuperer les valeurs et où envoyer les réponses, la suite se fait toute seule.
Marsh Posté le 30-01-2008 à 18:48:57
bonsoir et merci pour votre réponse,
je n'ai pas encore mes capteurs, je ne connais pas encore leur portée. Je ferais donc la correspondance plus tard, ça c'est un autre problème. Ce que j'aimerais dejà c'est d'avoir la bonne syntaxe pour un code tout bête utilisant ces données analogiques.
Si vous en avez un, j'avoue que cela me serait très utile
Juste la syntaxe, savoir ce qu'il faut configurer au début.
Merci encore
Marsh Posté le 30-01-2008 à 19:22:39
J'ai cru apercevoir des exemples de code ici:
http://thomas.lusseau.free.fr/memento_pic.pdf
Après je n'ai jamais bossé sur ce matos alors les détails je ne sais pas. Je pense que tu dois avoir une bibliothèque fournie (au moins un .h qui te nomme les espaces mémoire utilisés par les capteurs).
ensuite il n'y a rien de sorcier, si la sortie du capteur s'appelle CPT_VENT (évidemment c'est pas ça) il te suffit de faire un
int vent=CPT_VENT; (à toi de définir quand) pour récupérer la valeur du capteur.
Si c'est une biblio tu auras peut-etre un truc du genre :
int vent= pic_get (ADRESSE_CAPTEUR);
edit:
http://www.abcelectronique.com/for [...] hp?t=30347
Ici c'est quelqu'un qui a un problème aussi mais qui utilise
#include <16F877.h>
Il doit donc y avoir tout ce qu'il faut dans ce fichier (sans doute une biblio a filer au linker). A mon avis, tout est dans la doc désolé mais je peux pas t'en dire plus sans bidouiller moi-même la bête et son manuel...
Marsh Posté le 01-02-2008 à 07:48:47
Je vais essayé de voir ce que je peux faire avec vos liens, merci
si quelqu'un si connait bien dans ce domaine, il est le bienvenue
Merci encore
Marsh Posté le 01-02-2008 à 21:04:37
Panda184 a écrit : si quelqu'un si connait bien dans ce domaine, il est le bienvenue |
On ne nait pas "en s'y connaissant" dans tel ou tel domaine.,on se forme. Et pour ça, il y a 2 outils de base :
Pour la doc, on en sait rien et ça n'a rien à voir avec le langage C. C'est ton problème.
Pour l'expérimentation, tu peux poster ton code C si il y a un problème, mais c'est assez trivial :
L'algorithme général est :
|
le tout étant appelé à intervalles réguliers, par exemple (boucle avec suspension, interruption timer...).
on peut agir par différence comme ceci :
; boucle a 10 ms |
Marsh Posté le 02-02-2008 à 11:49:59
Emmanuel Delahaye a écrit :
|
Marsh Posté le 30-01-2008 à 17:04:56
Bonjour à tous,
je réalise un projet avec des capteurs de vent et de luminosité. J'aimerais réaliser un programme en C avec ces capteurs. Par exemple si le vent dépasse 100km/h alors la sortie B0 par exemple de mon PIC sera activé. J'ai déjà pas mal de notions en C mais c'est la première fois que j'utilise des données numériques dans un programme en C. J'utilise un pic 16f877 et le compilateur CCS.
J'aimerais savoir quelle est la structure et la syntaxe à utiliser pour gérer ce genre d'informations sur mes ports analogiques.
Je dois surement dans un premier temps lire les informations récoltés sur mes ports analogiques puis après les traiter avec des if et autres ... mais j'imagine qu'il y a bien une structure définit auparavant. Je veux dire on ne peut pas faire if(vent>100) alors... je doute que cela soit aussi simple
Si quelqu'un a un exemple de programme ou des informations sur ces syntaxes, je suis preneur
Merci d'avance