Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Conversion fichier
RETRAITE128
Amateur
Amateur
Messages : 125
Enregistré en : août 2021

#1 Message par RETRAITE128 » dim. 5 mai 2024 12:06

Bonjour,
J'ai trouvé sur le NET un article qui traite de la mesure Température-Humidité avec un DHT22.
Hélas le fichier fourni est en langage C et je ne dispose pas de logiciel pour le convertir en fichier .HEX pour le PIC.
Pourriez-vous me venir en aide pour réaliser celui-ci s'il vous plaît ?

PIC16F84A + Simulation Proteus du capteur DHT22 (AM2302, RHT03) (simple-circuit.com)

Dans l'attente de vous lire,

Alain

Conversion fichier
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2886
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » dim. 5 mai 2024 12:48

Bonjour RETRAITE128, et tout le forum,

:roll: Et le lien il est ou ... de plus tu proposes aucun fichier à télécharger

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Conversion fichier
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#3 Message par satinas » dim. 5 mai 2024 14:49

Bonjour,
https://simple-circuit.com/pic16f84a-dh ... imulation/
Le compilateur CCS est un logiciel commercialisé, peu utilisé sur ce forum, peut être quelqu'un se manifestera. J'avais installé la démo de durée 45 jours de ce compilateur, elle est périmée donc inutilisable.
Piloter un DHT22 est assez simple à réaliser quel que soit le langage. A ce stade il serait intéressant d'installer MPLABX et xc8 pour pouvoir compiler à la fois des sources assembleur et C.
Quel est le but de ce montage, apprentissage ou produit fini ?

Conversion fichier
gwion
Expert
Expert
Messages : 1121
Enregistré en : février 2022

#4 Message par gwion » dim. 5 mai 2024 15:53

Bonjour,
J'ai la version démo installée il y a quelques jours, donc encore fonctionnelle. Je viens d'essayer de compiler : 19 erreurs. Comme je ne connais pas du tout CCS je ne sais pas en dire plus.
Si le but est d'apprendre comment ça fonctionne, il faudrait mieux partir d'un projet prévu pour le compilateur XC8 et non pour des logiciels payants (et chers).

2024-05-05 15_45_42-CCS C Compiler.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Conversion fichier
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3256
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#5 Message par paulfjujo » dim. 5 mai 2024 16:14

bonjour à tous,

A voir avec la version MikroC qui est gratuite jusqu'à 2K de code
Avec un 16F84 et en reduisant au maximum le code ça devrait le faire !

ci dessous un code pour 18F26K22 et DHT22 ( AM2302)

Code : Tout sélectionner



unsigned int Temp
RH ;
 
unsigned long value;
  const 
char degree[] = {14,10,14,0,0,0,0,0};  // char special pour LCD
   // DHT22 sensor connections
sbit DHT22_Pin at PORTC.B0;
sbit DHT22_Pin_Direction at TRISC0_bit;
sbit DHT22_Pin_Out at LATC.B0 ;
unsigned short DHT22_Check_PresenceTemp_1Temp_2RH_1RH_2DHT22_Checksum;
unsigned long DHT22_All;

//-------------------------------------------
// rev 06-09-2017




unsigned char DHT22_Read_Byte(void)
{  
char i,j;
     for(
08j++)
     {
       while(!
DHT22_Pin);
       
Delay_us(30);
       if(
DHT22_Pin == 0)
           
i&= ~(1<<(j));
           else
           {
              
i|= (<< (j));
              while(
DHT22_Pin);
           }
     }
     return(
i);
}     

unsigned long DHT22_Read_All_Data()
{
 
DHT22_Pin_Direction 0;
  
DHT22_Pin_Out 0;
  
Delay_ms(20);
 
DHT22_Pin_Out 1;
  
Delay_us(40);
  
DHT22_Pin_Direction 1;
 
DHT22_Check_Presence 0;
 
Delay_us(20);
 if (
DHT22_Pin == 0)
  { 
  
Delay_us(80);
  if (
DHT22_Pin == 1)   DHT22_Check_Presence 1;
  
Delay_us(40);
  }
  if (
DHT22_Check_Presence == 1)
  {
     
RH_1 DHT22_Read_Byte();
     
RH_2 DHT22_Read_Byte();
     
Temp_1 DHT22_Read_Byte();
     
Temp_2 DHT22_Read_Byte();
     
DHT22_Checksum DHT22_Read_Byte();
     if(
DHT22_Checksum == ((RH_1+RH_2+Temp_1+Temp_2) & 0XFF))
       {
       
DHT22_All RH_1;
       
DHT22_All = (DHT22_All << 8) | RH_2;
       
DHT22_All = (DHT22_All << 8) | Temp_1;
       
DHT22_All = (DHT22_All << 8) | Temp_2;
       }
      else
      {
      
DHT22_All 0x58585858;
      }
   }
  else 
  {
  
DHT22_All 0x63636363;
  }
 return 
DHT22_All;
}


dans le main()
   ....
Inits divererses
   
 
//   usage
   
value DHT22_Read_All_Data();
   
 
// affichage sur LCD et sur terminal (UART)  

  
if (value == 0x63636363){
   
LCD_Out(11"  No response   ");
  
LCD_Out(21"from the sensor ");
  }
  if (
value == 0x58585858){
   
LCD_Cmd(LCD_CLEAR);
   
Delay_ms(25);
   
LCD_Out(11"Check sum error ");
  }
  if ((
value != 0x63636363) && (value != 0x58585858)) {
  
Temp value 0xFFFF;
  
value value >> 16;
  
RH value 0xFFFF;
  
LCD_Out(11" Temp.Amb :   .   C ");
  
LCD_Out(21" Humidite :   .   % ");
  if (
Temp 0X8000)
  {
  
LCD_Out(110"-");
  
Temp Temp 0X7FFF;
   }
  
LCD_Chr(11348 + ((Temp 100) % 10));
  
LCD_Chr(11448 + ((Temp 10) % 10));
  
LCD_Chr(11648 + (Temp 10));
  
degreeChar(118);
  if (
RH == 1000)  LCD_Chr(21248 + ((RH 1000) % 10));
  
LCD_Chr(21348 + ((RH 100) % 10));
  
LCD_Chr(21448 + ((RH 10) % 10));
  
LCD_Chr(21648 + (RH 10));
   }
  
//                  01234567890123456789012345678901234567890
  
strConstRamCpy(txt,"Temp.Ambiante=   .  °C  Humidite=   .  %\r\n");
  
WordToStr(Temp,CRam1);
  
k=strlen(CRam1);
  *(
txt+18)=*(CRam1+k-1) ;
  *(
txt+16)=*(CRam1+k-2);
  *(
txt+15)=*(CRam1+k-3);
  
UART1_Write(TAB);
  
WordToStr(RH,CRam1);
  
k=strlen(CRam1);
  *(
txt+37)=*(CRam1+k-1) ;
  *(
txt+35)=*(CRam1+k-2);
  *(
txt+34)=*(CRam1+k-3);
  
UART1_Write_Text(txt);
  
Delay_ms(1000);

 
Aide toi, le ciel ou FantasPic t'aidera

Conversion fichier
satinas
Expert
Expert
Messages : 1487
Enregistré en : novembre 2015

#6 Message par satinas » dim. 5 mai 2024 16:52

gwion a écrit :Source du message Je viens d'essayer de compiler : 19 erreurs
Il manque une ligne au début #include <lcd.c> fichier à récupérer je ne sais où.

La version avec MPLAB xc8, c'est pas un 16F84 mais le code change peu, surtout les lignes CONFIG à adapter. Le fichier LCD_Lib.c est bien présent lui. https://simple-circuit.com/mplab-xc8-dh ... 2-pic-mcu/

Conversion fichier
gwion
Expert
Expert
Messages : 1121
Enregistré en : février 2022

#7 Message par gwion » dim. 5 mai 2024 17:12

Bravo c'est bien ça, le lcd.c est fourni directement par l'environnement CCS.
J'ai maintenant le .hex disponible, me dire où l'envoyer.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Conversion fichier
RETRAITE128
Amateur
Amateur
Messages : 125
Enregistré en : août 2021

#8 Message par RETRAITE128 » lun. 6 mai 2024 11:15

Bonjour,

Merci à tous pour votre aide,
Je vous laisse mon adresse mail pour l'envoi du fichier.
Cordialement,

Alain

alain.eve8@orange.fr

Conversion fichier
gwion
Expert
Expert
Messages : 1121
Enregistré en : février 2022

#9 Message par gwion » lun. 6 mai 2024 11:26

Bonjour !
C'est parti, je te conseille d'effacer ton email du message.


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 9 invités