0

base operand of '->' is not a pointer
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

base operand of '->' is not a pointer

by sspence65 on Thu Jul 05, 2018 12:52 pm

trying to send bme280 data to adafruit io. getting an error on compile.

base operand of '->' is not a pointer

for statement

temperature->save(fahrenheit);

bme io error.JPG
bme io error.JPG (38.27 KiB) Viewed 136 times


Code: Select all | TOGGLE FULL SIZE
// Adafruit IO Temperature & Humidity Example
// Tutorial Link: https://learn.adafruit.com/adafruit-io-basics-temperature-and-humidity
//
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Written by Todd Treece for Adafruit Industries
// Copyright (c) 2016-2017 Adafruit Industries
// Licensed under the MIT license.
//
// All text above must be included in any redistribution.

/************************** Configuration ***********************************/

// edit the config.h tab and enter your Adafruit IO credentials
// and any additional configuration needed for WiFi, cellular,
// or ethernet clients.
#include "config.h"

/************************ Example Starts Here *******************************/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1025.00)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI


// set up the 'temperature' and 'humidity' feeds
AdafruitIO_Feed *temperature = io.feed("temperature");
AdafruitIO_Feed *humidity = io.feed("humidity");
AdafruitIO_Feed *pressure = io.feed("pressure");

void setup() {

  // start the serial connection
  Serial.begin(115200);
  Serial.println(F("BME280 test"));

  // wait for serial monitor to open
  while(! Serial);

  bool status;
   
    // default settings
    // (you can also pass in a Wire library object like &Wire2)
    status = bme.begin(); 
    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring!");
        while (1);
    }
   
    Serial.println("-- Default Test --");
   

    Serial.println();

  // connect to io.adafruit.com
  Serial.print("Connecting to Adafruit IO");
  io.connect();

  // wait for a connection
  while(io.status() < AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  // we are connected
  Serial.println();
  Serial.println(io.statusText());

}

void loop() {

  // io.run(); is required for all sketches.
  // it should always be present at the top of your loop
  // function. it keeps the client connected to
  // io.adafruit.com, and processes any incoming data.
  io.run();


  float celsius = bme.readTemperature();
  float fahrenheit = (celsius * 1.8) + 32;
  float pressure = bme.readPressure() / 100.0F;
  float humidity = bme.readHumidity();

 
  Serial.print("celsius: ");
  Serial.print(celsius);
  Serial.println("C");

  Serial.print("fahrenheit: ");
  Serial.print(fahrenheit);
  Serial.println("F");

  Serial.print("pressure: ");
  Serial.print(pressure);
  Serial.println("hPa");

  Serial.print("humidity: ");
  Serial.print(humidity);
  Serial.println("%");

  // save fahrenheit (or celsius) to Adafruit IO
  temperature->save(fahrenheit);

  // save humidity to Adafruit IO
  humidity->save(humidity);

  // save pressure to Adafruit IO
  pressure->save(pressure);

  // wait 5 seconds (5000 milliseconds == 5 seconds)
  delay(5000);

}

Last edited by sspence65 on Thu Jul 05, 2018 1:19 pm, edited 1 time in total.

sspence65
 
Posts: 44
Joined: Tue Sep 21, 2010 8:29 pm
Location: Andrews, SC

Re: base operand of '->' is not a pointer

by sspence65 on Thu Jul 05, 2018 12:54 pm

if I comment out the three save statements, code compiles and I get correct readings in serial monitor.

sspence65
 
Posts: 44
Joined: Tue Sep 21, 2010 8:29 pm
Location: Andrews, SC

Re: base operand of '->' is not a pointer

by sspence65 on Thu Jul 05, 2018 2:06 pm

Solved:

variable name must be different than feed name.

Code: Select all | TOGGLE FULL SIZE
// Adafruit IO Temperature & Humidity Example
// Tutorial Link: https://learn.adafruit.com/adafruit-io-basics-temperature-and-humidity
//
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Written by Todd Treece for Adafruit Industries
// Copyright (c) 2016-2017 Adafruit Industries
// Licensed under the MIT license.
//
// All text above must be included in any redistribution.

/************************** Configuration ***********************************/

// edit the config.h tab and enter your Adafruit IO credentials
// and any additional configuration needed for WiFi, cellular,
// or ethernet clients.
#include "config.h"

/************************ Example Starts Here *******************************/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1025.00)

Adafruit_BME280 bme; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI


// set up the 'temperature' and 'humidity' feeds
AdafruitIO_Feed *temperature = io.feed("temperature");
AdafruitIO_Feed *humidity = io.feed("humidity");
AdafruitIO_Feed *pressure = io.feed("pressure");

void setup() {

  // start the serial connection
  Serial.begin(115200);
  Serial.println(F("BME280 test"));

  // wait for serial monitor to open
  while(! Serial);

  bool status;
   
    // default settings
    // (you can also pass in a Wire library object like &Wire2)
    status = bme.begin(); 
    if (!status) {
        Serial.println("Could not find a valid BME280 sensor, check wiring!");
        while (1);
    }
   
    Serial.println("-- Default Test --");
   

    Serial.println();

  // connect to io.adafruit.com
  Serial.print("Connecting to Adafruit IO");
  io.connect();

  // wait for a connection
  while(io.status() < AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  // we are connected
  Serial.println();
  Serial.println(io.statusText());

}

void loop() {

  // io.run(); is required for all sketches.
  // it should always be present at the top of your loop
  // function. it keeps the client connected to
  // io.adafruit.com, and processes any incoming data.
  io.run();


  float celsius = bme.readTemperature();
  float fahrenheit = (celsius * 1.8) + 32;
  float inHG = bme.readPressure() / 100.0F * 0.029529983071445;
  float hum = bme.readHumidity();

 
  Serial.print("celsius: ");
  Serial.print(celsius);
  Serial.println("C");

  Serial.print("fahrenheit: ");
  Serial.print(fahrenheit);
  Serial.println("F");

  Serial.print("pressure: ");
  Serial.print(inHG);
  Serial.println("inHG");

  Serial.print("humidity: ");
  Serial.print(hum);
  Serial.println("%");

  // save fahrenheit (or celsius) to Adafruit IO
  temperature->save(fahrenheit);

  // save humidity to Adafruit IO
  humidity->save(hum);

  // save pressure to Adafruit IO
  pressure->save(inHG);

  // wait 5 seconds (5000 milliseconds == 5 seconds)
  delay(5000);

}

sspence65
 
Posts: 44
Joined: Tue Sep 21, 2010 8:29 pm
Location: Andrews, SC

Please be positive and constructive with your questions and comments.