Adafruit_BusIO icon indicating copy to clipboard operation
Adafruit_BusIO copied to clipboard

SPI.h Not Found when the sensor I'm using doesn't even use SPI? Apple Silicon on PlatformIO 6.1.16/VSCode using adafruit/Adafruit BusIO@^1.14.1

Open CodeBradley opened this issue 4 months ago • 2 comments

I'm using a FLIP C3 board, which does not have SPI pins (only I2C, UART, digital, analog). I've tried declaring an SPI pinout in the pins_arduino.h file just to see if it fixes the error, but that didn't work. Suggestions online say to include SPI.h in the beginning of my script, but the same error occurs. It also continues happening when setting it in lib_deps.

What's the official way of resolving this?

platformio.ini

[platformio]
default_envs = flip_c3

[env:flip_c3]
platform = espressif32
board = flip_c3
framework = arduino
build_flags = -I /variants/flip_c3
lib_deps =
	adafruit/Adafruit NeoPixel@^1.12.3
	adafruit/Adafruit TCS34725@^1.4.0
    adafruit/Adafruit BusIO@^1.14.1

[env:seeed_xiao_esp32s3]
platform = espressif32
board = seeed_xiao_esp32s3
framework = arduino
platform_packages =
    framework-arduinoespressif32
lib_deps = 
	SPI
	adafruit/Adafruit NeoPixel@^1.12.3
	adafruit/Adafruit TCS34725@^1.4.0
    adafruit/Adafruit BusIO@^1.14.1

main.cpp

#include <Wire.h>
#include "Adafruit_TCS34725.h"
#include <Adafruit_NeoPixel.h>

Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, GPIO6, NEO_GRB + NEO_KHZ800);
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_614MS, TCS34725_GAIN_1X);

// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
// and minimize distance between Arduino and first pixel.  Avoid connecting
// on a live circuit...if you must, connect GND first.

void setup() {

  Serial.begin(115200);
  while(!Serial);
  if (tcs.begin()) {
    Serial.println("Found sensor");
  } else {
    Serial.println("No TCS34725 found ... check your connections");
    while (1);
  }
  strip.setBrightness(50);
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  
}

void loop() {

  uint16_t r, g, b, c, colorTemp, lux;
  tcs.getRawData(&r, &g, &b, &c);
  // colorTemp = tcs.calculateColorTemperature(r, g, b);
  colorTemp = tcs.calculateColorTemperature_dn40(r, g, b, c);
  lux = tcs.calculateLux(r, g, b);
  Serial.print("Color Temp: "); Serial.print(colorTemp, DEC); Serial.print(" K - ");
  Serial.print("Lux: "); Serial.print(lux, DEC); Serial.print(" - ");
  Serial.print("R: "); Serial.print(r, DEC); Serial.print(" ");
  Serial.print("G: "); Serial.print(g, DEC); Serial.print(" ");
  Serial.print("B: "); Serial.print(b, DEC); Serial.print(" ");
  Serial.print("C: "); Serial.print(c, DEC); Serial.print(" ");
  Serial.println(" ");

}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

Error:

Compiling .pio/build/flip_c3/FrameworkArduino/HWCDC.cpp.o
Compiling .pio/build/flip_c3/FrameworkArduino/HardwareSerial.cpp.o
In file included from .pio/libdeps/flip_c3/Adafruit BusIO/Adafruit_BusIO_Register.h:10,
                 from .pio/libdeps/flip_c3/Adafruit BusIO/Adafruit_BusIO_Register.cpp:1:
.pio/libdeps/flip_c3/Adafruit BusIO/Adafruit_SPIDevice.h:9:10: fatal error: SPI.h: No such file or directory

*************************************************************
* Looking for SPI.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:SPI.h"
* Web  > https://registry.platformio.org/search?q=header:SPI.h
*
*************************************************************

 #include <SPI.h>
          ^~~~~~~
compilation terminated.
*** [.pio/build/flip_c3/libf72/Adafruit BusIO/Adafruit_BusIO_Register.cpp.o] Error 1
In file included from .pio/libdeps/flip_c3/Adafruit BusIO/Adafruit_SPIDevice.cpp:1:
.pio/libdeps/flip_c3/Adafruit BusIO/Adafruit_SPIDevice.h:9:10: fatal error: SPI.h: No such file or directory

There's claims that the problem is caused by how PIO scans the code, but the workaround does not help if the board I'm using doesn't have SPI. https://community.platformio.org/t/adafruit-busio-adafruit-spidevice-h17-fatal-error-spi-h-no-such-file-or-directory/14864/10

What's the official way of resolving this?

CodeBradley avatar Sep 30 '24 00:09 CodeBradley