Pinguino Forum

Full Version: Problème avec BMP280
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Bonjour à tous,
Encore un problème à vous soumettre.
J'utilise une carte basée sur le pic32MX250
La compilation s'effectue sans problème pour le pic 32MX250 (Il y a un problème de compilation pour le pic4550 mais  là n'est pas le soucis pour le moment...).
Ensuite, l'affichage LCD indique "Lecture BMP" puis reste bloqué (affichage d'un signe chinois...), la LEDD0 reste éteinte (donc le programme ne tourne pas...)
Je dispose d'un analyseur de protocole i2c, il n'y a pas de dialogue... entre le pic et le BMP280....
Sur quelle carte ce programme a été testé ?

Code:
/*-----------------------------------------------------

Utilisation d'un BMP280 : capteur de température, pression et d'altitude  i2c

   auteur          Régis Blanchot
   modif           Thierry Lancelot

Carte perso 32MX250
IDE            Pinguino version V12 (avec mis à jour de p32)

Date:       nov 2017

Compilation OK uniquement pour Pic32
Fonctionnement sur la plaque perso 32MX250
L'afficheur LCD est cablé comme ceci :  lcd.pins(11, 10, 0, 0, 0, 0, 9, 8, 7, 6); (RS, E, D0, D1, D2, D3, D4, D5, D6, D7)

Fonctionnement BMP280
SDA connection à D3
SCL connection à D4
Address i2c du module BMP = x76
Alimentation en +3.3V
-----------------------------------------------------*/

#define LED0 0  // redifinition LED0 sur D0 pour plaque 32MX250
const u8 MODULE = BMP280SPI1;


void setup()
{
   pinMode(LED0, OUTPUT);

   lcd.pins(11, 10, 0, 0, 0, 0, 9, 8, 7, 6);  // lcd.pins(RS, E, D0, D1, D2, D3, D4, D5, D6, D7)
   lcd.begin(16, 2); //Afficheur 16 x 2 lignes
   lcd.print("Lecture BMP");
   delay(1000); // Attente 1 sec  
   lcd.clear();
   

  if(!BMP280.begin(MODULE))
 {
      lcd.setCursor(2,0);  //Position2 , ligne0
      lcd.print("PB init BMP!");
   while(1);
 }
 else
      lcd.setCursor(2,0);  //Position2 , ligne0
      lcd.print("Init BMP OK!");    

}



void loop()
{
 float TC, TF, P, A, S;
//  float  P = 12.38;
 float P0 = 1013.25; // Pression de référence au niveau de la mer

 // Oversampling: 0 to 4
 // the higher the number, the higher the resolution outputs
 // the higher the number, the slower the measurment
 BMP280.startMeasurment(MODULE, 4); // max. resolution
 TC = BMP280.getTemperatureCelsius(MODULE);  // Température en °C
 TF = BMP280.getTemperatureFahrenheit(MODULE);  // Température en °F
 P  = BMP280.getPressure(MODULE);  // Pression en mBar
 A  = BMP280.getAltitude(MODULE, P, P0); // Altitude en m
 P0 = BMP280.getPressureAtSealevel(MODULE, P, A);


lcd.setCursor(0,1); //Position0 , ligne1
lcd.printf("Pres= %6f\ mB", P);            


 delay(1000);    // Attente 1 sec
 toggle(LED0);  // Clignotement de LED0 pour vérification du fonctionnement
}
A bientôt
Techno
Salut,

La version des libraries que je t'ai fait parvenir est en cours de finalisation. Tout ne marche pas encore. J'ai corrigé la lib. BMP280 mais je n'avais pas de module pour la tester.
Une remarque cependant, tu testes l'I2C mais le programme utilise le SPI :
const u8 MODULE = BMP280SPI1;
Si tu veux utiliser l'I2C tu peux changer le module en utilisant par exemple :
const u8 MODULE = BMP280I2C1;
Si tu arrives à faire marcher cette lib. je suis preneur ;-)
A bientôt,
Bonjour Régis,
Merci pour ton retour.
Si la compilation fonctionne avec
const u8 MODULE = BMP280SPI1;
elle ne s'effectue pas avec
const u8 MODULE = BMP280I2C1;
Il y a encore des soucis dans la librairie...
Je vais la reprendre. Je te tiens au courant.