Problemi con le librerie adafruit

Ciao,
Qualcuno potrebbe spiegarmi perché non riesco ad usare le librerie di Adafruit?
Le scarico , le decomprimo all’interno della cartella libraries di arduino, le rinomino secondo le istruzioni trovate sul sito di adafruit,
eppure mi creano un sacco di problemi.
In pratica riesco a includerle negli sketch col comando aggiungi libreria, ma danno errori o se non ne danno comunque non funzionano.
Per far meglio capire cosa intendo inserisco lo sketch di un programma che mi sta facendo diventare matto da un mese

/*
 **************************  Barometric (atmospheric pressure) Arduino project *************************
 * LINK: http://coolarduino.wordpress.com/2013/04/10/barometric-atmospheric-pressure-arduino-project/
 *
 * Created for  Arduino UNO board: Anatoly Kuzmenko 10 April 2013 
 *                                 k_anatoly@hotmail.com
 *
 * SOFTWARE COMPILES USING Arduino 1.0.4 IDE (Tested on Linux OS only).
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute copies of the Software, 
 * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY,  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 *
 * Copyright (C) 2013 Anatoly Kuzmenko.
 * All Rights Reserved.
 ********************************************************************************************
 */
#include <Wire.h>
#include <Adafruit_MPL115A2.h>
#include <LiquidCrystal.h>

#define  ABS_MINIM     97.325         // absolute pressure minimum, kPa
#define  UPD_HISTR     7200           // update history interval in sec, 2 hours

LiquidCrystal lcd ( 8, 9, 4, 5, 6, 7);

Adafruit_MPL115A2      mpl115a2;

         byte          prs_bars[8][8];// Custom characters array
         byte          prs_hist[8] = { 8, 11, 15, 7, 3, 0, 5, 8};  // Start-up "demo" data.

volatile uint8_t       sec_tick = 0;
         uint16_t      sec_cntr = 0;

         float         lpf_pres = 0.0;
         float         lpf_temp = 0.0;    
         
void setup(void) 
{
//  Serial.begin(115200);
  mpl115a2.begin();
  lcd.begin(16, 2);      

  for (uint8_t j = 0; j < 8; j++)  
  {
    for (uint8_t i = 0; i < 8; i++)
    {
      if ( i <= j )  prs_bars[j][7-i] = B11111;
      else           prs_bars[j][7-i] = B00000;
    }
  }  
  for ( uint8_t i = 0; i < 8; i++)
  {
    lcd.createChar(i, prs_bars[i]);
  }

  for ( uint8_t j = 0; j < 16; j++)          // Taking time for sensor to settle
  {
    print_Bars( j, j );
    delay(500);
  }

  lcd.clear();

    lcd.setCursor( 3, 0);
    lcd.print("*Magician*");
    
    lcd.setCursor( 5, 1);
    lcd.print("ver. 2a");

  delay(2000);

  lcd.clear();

  for ( uint8_t i = 0; i < 8; i++)
  {
    print_Bars( i, prs_hist[i]);             // Show nice picture
  } 

  lpf_pres = mpl115a2.getPressure();  
  lpf_temp = mpl115a2.getTemperature();  

 /* Set up TIMER 1 - 1 seconds tick-er */
  TIMSK1 = 0x00;
  TCCR1A = 0;
  TCCR1B = 0;
  TCCR1C = 0;

  TCCR1A =  ((1<<WGM11) | (1<<WGM10));       // Mode 15, Fast PWM
  TCCR1B =  ((1<<WGM13) | (1<<WGM12));       // Mode 15, Fast PWM

  TCCR1B |=  ((1<<CS10) | (1<<CS12));        // clk/1024 prescaling.
  OCR1A  = 15625;                            // 1 sec.

  TCNT1  = 0;
  TIFR1   |= (1<<TOV1); 
  TIMSK1  |= (1<<TOIE1);
}
 
void loop(void) 
{
 float    pressureKPA = 0, temperatureC = 0;    
 uint16_t temp;

  if (sec_tick) { 
    pressureKPA = mpl115a2.getPressure();  
//    Serial.print("Pressure (kPa): "); Serial.print(pressureKPA, 4); Serial.println(" kPa");
    temperatureC = mpl115a2.getTemperature();  
//    Serial.print("Temp (*C): "); Serial.print(temperatureC, 1); Serial.println(" *C");
    lpf_pres = 0.99 * lpf_pres + 0.01 * pressureKPA;
    lpf_temp = 0.99 * lpf_temp + 0.01 * temperatureC;

    lcd.setCursor( 9, 1);
    lcd.print( lpf_temp, 2);
    lcd.print("*C");
    
    lcd.setCursor( 9, 0);
    lcd.print( lpf_pres, 1);
    lcd.print("kP");
   
    if (sec_cntr > UPD_HISTR)
    {
      lcd.clear();
      for ( uint8_t i = 0; i < 7; i++)
      {
        prs_hist[i] = prs_hist[i+1];
        print_Bars( i, prs_hist[i]);
      } 
    temp = 2 *(lpf_pres - ABS_MINIM);
    prs_hist[7] = temp;
    print_Bars( 7, prs_hist[7]);

    sec_cntr = 0;
    }
  sec_tick = 0;
  }
}

ISR(TIMER1_OVF_vect)
{
  sec_tick = 1;
  sec_cntr++;
}

void print_Bars( uint8_t location, uint8_t value )
{
  if ( value < 8 )
  {
    lcd.setCursor( location, 1);  
    lcd.write(value);
  }
  else
  {
    lcd.setCursor(location, 1);
    lcd.write(7);
    lcd.setCursor(location, 0);
    lcd.write(value - 8);
  }        
}

Il programma dovrebbe permettere di misurare la pressione atmosferica e la temperatura tramite un sensore che si chiama BMP085 , però la libreria Adafruit_MPL115A2 da dei problemi.
Infatti quando trasfrisco lo sketch ad arduino uno collegato ad una LCD keypad shield , sul display non appare scritto niente
Al contrario se elimino la libreria Adafruit_MPL115A2 , cancellando tutte le righe errate che vengono evidenziate in giallo da IDE 1.0.5, e poi trasferisco lo sketch su arduino , sul display compare un istogramma con accanto le scritte pressione e temperatura.
Il guaio è che il sensore BMP085 ( ne ho 2 di differenti marche )non comunica alcun dato proprio perché la libreria Adafruit_MPL115A2 è stata cancellata.
Naturalmente questo è solo un esempio , però ho avuto lo stesso problema anche usando la libreria Adafruit_BMP085 .
Non sono un ingegnere perciò sicuramente sbaglio qualcosa .
Potreste dirmi cosa?
=(
Grazie

cancellando tutte le righe errate

bhe, è come lamentarsi che togliendo la ruota bucata dalla macchina(senza mettrne una nuova) poi la macchina non funziona bene. :grin: :grin:

il BMP085 lo ho ed è un sensore molto semplice.

andiamo per passi, iniziamo a leggere i dati e visualizzarli via seriale, POI, quando avrai valori leggibili via seriale, aggiungiamo l’LCD, che ovviamete dovrà usare la giusta libreria LCD (ci sono varie tipologie)

quì c’è il sorgente di un codice che NON usa la libreria, ti fa vedere come realmente succede sotto, e vedrai bene che on è assolutamente complesso!

Grazie per il Tuo programma,
il problema è sicuramente collegato al fatto che il programma è fatto per il chip MPL115A2 e non funziona col chip BMP085 ed è questa la ragione per la quale il programma, da me trovato ,va in conflitto ed il display non funziona . Questo me lo ha detto l'autore del programma A . KuzmenKo.
Grazie al programma, da Te gentilmente suggerito, potrò leggere i dati, ma come posso collegare il programma al display?
Non sono molto bravo col linguaggio C aiutami per favore.