Probleme arduino programmation capteur
Discussion fermée
Affichage des résultats 1 à 2 sur 2

Probleme arduino programmation capteur



  1. #1
    n2ico

    Probleme arduino programmation capteur


    ------

    Bonjour à tous,
    Alors voilà, au cours de mon projet on a opté pour une capteur de pression de chez omron :http://docs-europe.electrocomponents...6b81308df0.pdf .
    On a prit un code sur internet qu'il semble marcher ( quand je le vérifie tout est ok ). Je branche alors ma carte arduino uno et je téléverse et vient un problème :
    avrdude: ser_open(): can't open device "\\.\COM5": Accès refusé.
    Or, quand je lance mon capteur de température tout fonctionne et il m'indique la bonne température. Je ne comprends dès lors pas d'où vient le problème.
    J'ai donc posté mon montage sur le forum électronique et je poste ici mon code en espérant que vous puissiez m'aider...

    Voici le code :

    Code:
    #include "Wire.h"
    #define addrs 0x6C // I2C bus address
    int P;
    int I;
    float T;
    
    int initialize(int i2c_addr)
    {
      //INITIALIZATION AFTER POWER UP
      Wire.beginTransmission(i2c_addr);
      Wire.write(0x0B); 
      Wire.write(0x00);
      int x = Wire.endTransmission();
      return x;
    }
    
    int pressure(int i2c_addr)
    {
      //MCU MODE
      Wire.beginTransmission(i2c_addr);
      Wire.write(0x00);   
      Wire.write(0xD0);  // reg 0 - address register high byte
    //  Wire.write(0x51);  // reg 1 - address register low byte
      Wire.write(0x40);  // reg 1 - address register low byte
      Wire.write(0x18);  // reg 2  - serial control register - indicate # bytes among others (page 7 bottom)
      Wire.write(0x06);  // reg 3 - value to be written to SENS control register
      int x = Wire.endTransmission();
    
      delay(33);
    
      //WRITE
      Wire.beginTransmission(i2c_addr);
      Wire.write(0x00);   
      Wire.write(0xD0);
      Wire.write(0x51);
      Wire.write(0x2C);
      x = Wire.endTransmission();
     
      //READ
      Wire.beginTransmission(i2c_addr);
      Wire.write(0x07);
      x = Wire.endTransmission();
    
      Wire.requestFrom(i2c_addr, 2);
      byte hibyte = Wire.read();
      byte lobyte = Wire.read();
      long raw = word( hibyte, lobyte); 
      //Serial.print("raw pressure:\t ");
      //Serial.println(raw);
     
      // D6F-PH5050AD3 ==> rangeMode=500 ==> int rd_pressure =  ((raw - 1024) * rangeMode * 2 / 60000L) - rangeMode
      // D6F-PH0505AD3 ==> rangeMode=50  ==> int rd_pressure =  ((raw - 1024) * rangeMode * 2 / 60000L) - rangeMode
      // D6F-PH0025AD1 ==> rangeMode=250 ==> int rd_pressure=(raw - 1024) * rangeMode / 60000L
      int rangeMode = 50;
      int rd_pressure =  ((raw - 1024) * rangeMode * 2 / 60000L) - rangeMode;
      return rd_pressure;
    }
    
    float temperature(int i2c_addr)
    {
      //MCU MODE
      Wire.beginTransmission(i2c_addr);
      Wire.write(0x00);   
      Wire.write(0xD0);  // reg 0 - address register high byte
      // Wire.write(0x51);  // reg 1 - address register low byte
      Wire.write(0x40);  // reg 1 - address register low byte 
      Wire.write(0x18);  // reg 2  - serial control register - indicate # bytes among others (page 7 bottom)
      Wire.write(0x06);  // reg 3 - value to be written to SENS control register
      int x = Wire.endTransmission();
    
      delay(33);
     
      //WRITE
      Wire.beginTransmission(i2c_addr);
      Wire.write(0x00);   
      Wire.write(0xD0);
      Wire.write(0x61);
      Wire.write(0x2C);
      x = Wire.endTransmission();
     
      //READ
      Wire.beginTransmission(i2c_addr);
      Wire.write(0x07);
      x = Wire.endTransmission();
    
      Wire.requestFrom(i2c_addr, 2); 
      byte hibyte = Wire.read();
      byte lobyte = Wire.read();
      long raw = word( hibyte, lobyte); 
      //Serial.print("raw temperature:\t ");
      //Serial.println(raw);
      int temp = round((float)(raw - 10214) / 3.739);  // this is the temperature multiplied by 10...
      return (temp/10.0);             // ...and the function returs the float temperature with 0.1°C resolution
    }
    
    void setup()
    {  // Open serial communications
     Wire.begin();
      Serial.begin(9600);
     I=initialize (addrs); // start wire connection
    
    }
    
    void loop()
    {
        P=pressure(addrs);
        Serial.print("pressure:\t ");
        Serial.println(P);
        T=temperature(addrs);
        Serial.print("temperature:\t ");
        Serial.println(T);
        delay(30000); //delay for 30 seconds
    
    } "
    Bien à vous, N2ico.

    -----

  2. #2
    Antoane
    Responsable technique

    Re : Probleme arduino programmation capteur

    Bonjour,

    les doublons sont interdits, merci de rester sur : http://forums.futura-sciences.com/el...-probleme.html

    Par ailleurs, merci de relire : http://forums.futura-sciences.com/pr...ves-forum.html

Discussions similaires

  1. [Programmation] Programmation arduino
    Par Kareivis dans le forum Électronique
    Réponses: 5
    Dernier message: 27/11/2015, 17h44
  2. problème programmation arduino leonardo
    Par Sisi85-18 dans le forum Électronique
    Réponses: 20
    Dernier message: 01/04/2015, 12h39
  3. Programmation d'un ATtiny 85 avec Arduino probleme !
    Par urtechnic dans le forum Électronique
    Réponses: 5
    Dernier message: 21/12/2014, 12h01
  4. Capteur PIR + arduino
    Par al-pac dans le forum Électronique
    Réponses: 5
    Dernier message: 29/04/2014, 09h14
  5. capteur et arduino
    Par maria9 dans le forum Technologies
    Réponses: 3
    Dernier message: 04/03/2014, 10h22