Lire les données des capteurs dans un programme.

Lire les données des capteurs dans un programme. - C - Programmation

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 ;)

Reply

Marsh Posté le 30-01-2008 à 17:04:56   

Reply

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.


Message édité par ptitchep le 30-01-2008 à 17:55:26

---------------
deluser --remove-home ptitchep
Reply

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 ;)

Reply

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...


Message édité par ptitchep le 30-01-2008 à 19:32:11

---------------
deluser --remove-home ptitchep
Reply

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

Reply

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 :

 
  • La doc
  • L'expérimentation.


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 :


valeur := lire_registre()
SI valeur > 100
   agir()
FIN SI


le tout étant appelé à intervalles réguliers, par exemple (boucle avec suspension, interruption timer...).

 

on peut agir par différence comme ceci :


; initialisation
mem := lire_registre()
traitement (mem)

 

; boucle a 10 ms
BOUCLE
   valeur := lire_registre()
   SI mem <> valeur
      mem := valeur
      traitement (mem)
   FIN SI
   suspendre_ms (10)
FIN BOUCLE

Message cité 1 fois
Message édité par Emmanuel Delahaye le 01-02-2008 à 21:06:58

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 02-02-2008 à 11:49:59    

Emmanuel Delahaye a écrit :


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 :
 
    * La doc
    * L'expérimentation.

 


Pour la doc, on en sait rien et ça n'a rien à voir avec le langage C. C'est ton problème.
 


 [:tekways]


Message édité par ptitchep le 02-02-2008 à 11:52:00

---------------
deluser --remove-home ptitchep
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed