Error : ALL SPI Access will default to bitbanged output

Background :

  • I have researched this topic for a few months to not much avail to a solution but i have learned about the problem to a large degree.

  • I do understand that this is just an Output Message
    and not actually an error

  • From what i have researched i have found stuff all over the place so i figured i'd create 1 post that merges that information

  • I have searched the forum and found no other posts like this expect for 1 in german.
    All SPI access will default to bitbanged output

MY GOAL : I'm hoping someone can tell me how to silence this message so i don't see it, (unless of course i use SPI in the future, so knowing how to revert to the messaage showing would also be helpful

  • This message only occurs when using ESP32

  • This Message only Occurs when using the FastLED,h Library (By Daniel Garcia)
    The version does not seem to matter.

Hardware Information
ESP32 Wroom Dev Board
(i doubt a schematic is required for this problem)

WS2812B LED Strip
https://www.jaycar.com.au/duinotech-arduino-compatible-w2812b-rgb-led-strip-2m/p/XC4390

WS2812B DATASHEET

Software Environment
Arduino IDE 2.1.1
Library - freertos/FreeRTOS.h
Library - freertos/task.h
Library - EspSoftwareSerial - SoftwareSerial.h (By Dirk Kaar) Version 8.1.0
Library - DFRobotDFPlayerMini - DFRobotDFPlayerMini.h (By DFRobot) Version 1.0.6
Library - IRremoteESP8266 - IRremoteESP8266.h (By David Conran) Version 2.8.6

Only This Library is Relevant (in my opinion)
Library - FastLED - FastLED.h (By Daniel Garcia) Version 3.6.0

Here is the irritating Message of Death

In file included from c:\Users\BTO Electronics\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/FastLED.h:75:0,
                 from C:\Users\BTO Electronics\Documents\Arduino\Arduino Sketches\FLUX_SINGLE_BENCHTEST\SIMPLIFIED\ESP32\PLUTONIUM_and_Audio\PLUTONIUM_and_Audio.ino:34:
c:\Users\BTO Electronics\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/fastspi.h:157:23: note: #pragma message: No hardware SPI pins defined.  All SPI access will default to bitbanged output
 #      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"

Troubleshooting Conducted

  • I have uninstalled all of the above mentioned libraries
  • Uninstalled the ESP32 board from Preferences
  • Uninstalled the drivers
  • Uninstalled the IDE
  • Manually removed Arduino IDE from the windows Computer registry
  • Re installed different versions of the IDE finally coming to the current one
    (Obviously i know now it didn't make a difference)
  • Then ran a basic blink sketch
  • Then installed 1 library at a time and compiled
  • Then with each Library installation ran a basic sketch for that library

CONCLUSION :
The error only occurs when using ESP32 (Not Arduino Boards)
The error only occurs with the FastLED Library

For the benefit of others getting this for the first time

  • This is not an Error

  • The ESP32 Supports S.P.I. Protocol (SERIAL PERIPHERAL INTERFACE PROTOCL)

  • It is happening because the ESP32 is detecting that you are not using your S.P.I. Pins

  • But also it only happens with the FastLED Library as that library supports S.P.I. Communication between your ESP32 and LED Strips

  • However, This only becomes relevant if your L.E.D. Strip has a "Clock Pin".
    See even though the library supports the protocol the LED Strip does not.
    Reference ...
    What exactly does the clock pin on LED strips like the APA102 do?

Quick Snapshot

  • Most of the time we end up using a 3 Pin Strip (I'm Using WS2812B)
    As you can see, No 4th Clock Pin

  • So.. The board is basically saying "I Noticed you're not using the S.P.I. Pins on your board to control the LED strip so just letting you know i'm going to BITBANG the communication from here ."

Reference : Bit Banging
https://en.wikipedia.org/wiki/Bit_banging

OK , so..
Option 1 - We can just ignore the message.
it's not that it irritates me, it's that it sucks up 4 or 5 lines of my output terminal and i'd like to see the other stuff that actually matters.
How do we shut this message up, Any Ideas ?

Research Locations thus far

Source : forum.arduino.cc
What exactly does the clock pin on LED strips like the APA102 do?

Source : Github
# ESP32 - No hardware SPI pins defined. #1169

Source : Reddit
FastLED v3.2.9 with ESP32 shows a warning about no hardware SPI pins defined

Source : Maker Forums
pragma message “No hardware SPI pins defined. All SPI access will default to bitbanged output”

And you can keep going on and on like this only to find a few basic answers repeated

  1. It's not an Error
  2. Don't worry about it, it's just informational
  3. SPI is not supported , don't worry about it
  4. Just ignore it

well I'm looking for Option 5 - Let's silence the thing

So, Any ideas ?
Thanks in advance
and i also live in the anticipation that we are going to be messing with .config and perhps .json files here so i'm looking forward to that :stuck_out_tongue:

Yellow text is really hard to read!

c:\Users\BTO Electronics\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/fastspi.h:157:23: note: #pragma message: No hardware SPI pins defined

This tells you which file and which line gives that message.

Open that file, and see what conditions cause it to give that message...

1 Like

I moved your topic to a more appropriate forum category @anon76350110. The Nano ESP32 category you chose is only for use when making topics on subjects specific to the Arduino Nano ESP32 board. It should not be used for topics about other boards that happen to have an ESP32 microcontroller on them.

In the future, please take the time to pick the forum category that best suits the subject of your question. There is an "About the _____ category" topic at the top of each category that explains its purpose.

Thanks in advance for your cooperation.

1 Like

To be clear, the "board" is not saying it. This is a compile-time (not run-time) message from the FastLED code.

Apologies, Changed to Orange (is that ok)
Me i actually like yellow but .. all good.
let me know if you prefer another colour.

OK Noted, Still getting used to things

This was obviously a grossly grossly over simplified playschool level explanation aimed at newcomers to ESP32 to understand the message a bit better. it's not a reflection of the way i understand it, but hey..
Contribute away because when those people read this post life will be easier
so.. thanks for the input.

Quick question for clarification
does this mean in that file
go to
Line 157
Line 23
?

Lines 154 - 162 read as

#else
#  if !defined(FASTLED_INTERNAL) && !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
#    ifdef FASTLED_HAS_PRAGMA_MESSAGE
#      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
#    else
#      warning "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
#    endif
#  endif
#endif

Line 23 reads

#else

Lines 20 - 28 read (Nothing apparently useful)

// just use clocks
#define DATA_RATE_MHZ(X) (1000000 * (X))
#define DATA_RATE_KHZ(X) (1000 * (X))
#else
/// Convert data rate from megahertz (MHz) to clock cycles per bit
#define DATA_RATE_MHZ(X) ((F_CPU / 1000000L) / X)
/// Convert data rate from kilohertz (KHz) to clock cycles per bit
#define DATA_RATE_KHZ(X) ((F_CPU / 1000L) / X)
#endif

Looking into it now, Lets see if this can actually happen

Sorry my bad, in case anyone wants to check out the entire file...

/// @file fastspi.h
/// Serial peripheral interface (SPI) definitions per platform

#ifndef __INC_FASTSPI_H
#define __INC_FASTSPI_H

#include "FastLED.h"

#include "controller.h"
#include "lib8tion.h"

#include "fastspi_bitbang.h"

FASTLED_NAMESPACE_BEGIN

#if defined(FASTLED_TEENSY3) && (F_CPU > 48000000)
#define DATA_RATE_MHZ(X) (((48000000L / 1000000L) / X))
#define DATA_RATE_KHZ(X) (((48000000L / 1000L) / X))
#elif defined(FASTLED_TEENSY4) || (defined(ESP32) && defined(FASTLED_ALL_PINS_HARDWARE_SPI)) || (defined(ESP8266) && defined(FASTLED_ALL_PINS_HARDWARE_SPI))
// just use clocks
#define DATA_RATE_MHZ(X) (1000000 * (X))
#define DATA_RATE_KHZ(X) (1000 * (X))

/// Convert data rate from megahertz (MHz) to clock cycles per bit
#define DATA_RATE_MHZ(X) ((F_CPU / 1000000L) / X)
/// Convert data rate from kilohertz (KHz) to clock cycles per bit
#define DATA_RATE_KHZ(X) ((F_CPU / 1000L) / X)
#endif

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// External SPI template definition with partial instantiation(s) to map to hardware SPI ports on platforms/builds where the pin
// mappings are known at compile time.
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#if !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
/// Hardware SPI output
template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint32_t _SPI_CLOCK_DIVIDER>
class SPIOutput : public AVRSoftwareSPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
#endif

/// Software SPI output
template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint32_t _SPI_CLOCK_DIVIDER>
class SoftwareSPIOutput : public AVRSoftwareSPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};

#ifndef FASTLED_FORCE_SOFTWARE_SPI

#if defined(NRF51) && defined(FASTLED_ALL_PINS_HARDWARE_SPI)
template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint32_t _SPI_CLOCK_DIVIDER>
class SPIOutput : public NRF51SPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
#endif

#if defined(NRF52_SERIES) && defined(FASTLED_ALL_PINS_HARDWARE_SPI)
template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint32_t _SPI_CLOCK_DIVIDER>
class SPIOutput : public NRF52SPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
#endif

#if defined(FASTLED_APOLLO3) && defined(FASTLED_ALL_PINS_HARDWARE_SPI)
template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint32_t _SPI_CLOCK_DIVIDER>
class SPIOutput : public APOLLO3HardwareSPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
#endif

#if defined(ESP32) && defined(FASTLED_ALL_PINS_HARDWARE_SPI)
template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint32_t _SPI_CLOCK_DIVIDER>
class SPIOutput : public ESP32SPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
#endif

#if defined(ESP8266) && defined(FASTLED_ALL_PINS_HARDWARE_SPI)
template<uint8_t _DATA_PIN, uint8_t _CLOCK_PIN, uint32_t _SPI_CLOCK_DIVIDER>
class SPIOutput : public ESP8266SPIOutput<_DATA_PIN, _CLOCK_PIN, _SPI_CLOCK_DIVIDER> {};
#endif

#if defined(SPI_DATA) && defined(SPI_CLOCK)

#if defined(FASTLED_TEENSY3) && defined(ARM_HARDWARE_SPI)

template<uint32_t SPI_SPEED>
class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED, 0x4002C000> {};

#if defined(SPI2_DATA)

template<uint32_t SPI_SPEED>
class SPIOutput<SPI2_DATA, SPI2_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI2_DATA, SPI2_CLOCK, SPI_SPEED, 0x4002C000> {};

template<uint32_t SPI_SPEED>
class SPIOutput<SPI_DATA, SPI2_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI_DATA, SPI2_CLOCK, SPI_SPEED, 0x4002C000> {};

template<uint32_t SPI_SPEED>
class SPIOutput<SPI2_DATA, SPI_CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<SPI2_DATA, SPI_CLOCK, SPI_SPEED, 0x4002C000> {};
#endif

#elif defined(FASTLED_TEENSY4) && defined(ARM_HARDWARE_SPI)

template<uint32_t SPI_SPEED>
class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public Teensy4HardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED, SPI, 0> {};

template<uint32_t SPI_SPEED>
class SPIOutput<SPI1_DATA, SPI1_CLOCK, SPI_SPEED> : public Teensy4HardwareSPIOutput<SPI1_DATA, SPI1_CLOCK, SPI_SPEED, SPI1, 1> {};

template<uint32_t SPI_SPEED>
class SPIOutput<SPI2_DATA, SPI2_CLOCK, SPI_SPEED> : public Teensy4HardwareSPIOutput<SPI2_DATA, SPI2_CLOCK, SPI_SPEED, SPI2, 2> {};

#elif defined(FASTLED_TEENSYLC) && defined(ARM_HARDWARE_SPI)

#define DECLARE_SPI0(__DATA,__CLOCK) template<uint32_t SPI_SPEED>\
 class SPIOutput<__DATA, __CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<__DATA, __CLOCK, SPI_SPEED, 0x40076000> {};
 #define DECLARE_SPI1(__DATA,__CLOCK) template<uint32_t SPI_SPEED>\
  class SPIOutput<__DATA, __CLOCK, SPI_SPEED> : public ARMHardwareSPIOutput<__DATA, __CLOCK, SPI_SPEED, 0x40077000> {};

DECLARE_SPI0(7,13);
DECLARE_SPI0(8,13);
DECLARE_SPI0(11,13);
DECLARE_SPI0(12,13);
DECLARE_SPI0(7,14);
DECLARE_SPI0(8,14);
DECLARE_SPI0(11,14);
DECLARE_SPI0(12,14);
DECLARE_SPI1(0,20);
DECLARE_SPI1(1,20);
DECLARE_SPI1(21,20);

#elif defined(__SAM3X8E__)

template<uint32_t SPI_SPEED>
class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public SAMHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> {};

#elif defined(AVR_HARDWARE_SPI)

template<uint32_t SPI_SPEED>
class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public AVRHardwareSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> {};

#if defined(SPI_UART0_DATA)

template<uint32_t SPI_SPEED>
class SPIOutput<SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED> : public AVRUSART0SPIOutput<SPI_UART0_DATA, SPI_UART0_CLOCK, SPI_SPEED> {};

#endif

#if defined(SPI_UART1_DATA)

template<uint32_t SPI_SPEED>
class SPIOutput<SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED> : public AVRUSART1SPIOutput<SPI_UART1_DATA, SPI_UART1_CLOCK, SPI_SPEED> {};

#endif

#elif defined(ARDUNIO_CORE_SPI)

template<uint32_t SPI_SPEED>
class SPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED> : public ArdunioCoreSPIOutput<SPI_DATA, SPI_CLOCK, SPI_SPEED, SPI> {};

#endif

#else
#  if !defined(FASTLED_INTERNAL) && !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
#    ifdef FASTLED_HAS_PRAGMA_MESSAGE
#      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
#    else
#      warning "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
#    endif
#  endif
#endif

// #if defined(USART_DATA) && defined(USART_CLOCK)
// template<uint32_t SPI_SPEED>
// class AVRSPIOutput<USART_DATA, USART_CLOCK, SPI_SPEED> : public AVRUSARTSPIOutput<USART_DATA, USART_CLOCK, SPI_SPEED> {};
// #endif

#else
#  if !defined(FASTLED_INTERNAL) && !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
#    ifdef FASTLED_HAS_PRAGMA_MESSAGE
#      pragma message "Forcing software SPI - no hardware SPI for you!"
#    else
#      warning "Forcing software SPI - no hardware SPI for you!"
#    endif
#  endif
#endif

FASTLED_NAMESPACE_END

#endif


If you don't want to see that message, go find the source code for the library (it is on your machine, as is any source code that goes into anything that gets compiled).

Find it, and edit it to your liking.

Adding: you can use global search for text stuff you wanna find where it comes from.

I use Unix stuff like find and grep alla time at a level of incompetence that I should be ashamed of. Yet it works.

a7

OK i think this is the relevant section

#else
#  if !defined(FASTLED_INTERNAL) && !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
#    ifdef FASTLED_HAS_PRAGMA_MESSAGE
#      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
#    else
#      warning "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
#    endif
#  endif
#endif

// #if defined(USART_DATA) && defined(USART_CLOCK)
// template<uint32_t SPI_SPEED>
// class AVRSPIOutput<USART_DATA, USART_CLOCK, SPI_SPEED> : public AVRUSARTSPIOutput<USART_DATA, USART_CLOCK, SPI_SPEED> {};
// #endif

#else
#  if !defined(FASTLED_INTERNAL) && !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
#    ifdef FASTLED_HAS_PRAGMA_MESSAGE
#      pragma message "Forcing software SPI - no hardware SPI for you!"
#    else
#      warning "Forcing software SPI - no hardware SPI for you!"
#    endif
#  endif
#endif

Now i suppose i could comment out the message line like this


#else
#  if !defined(FASTLED_INTERNAL) && !defined(FASTLED_ALL_PINS_HARDWARE_SPI)
#    ifdef FASTLED_HAS_PRAGMA_MESSAGE
//#      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
#    else
//#      warning "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
#    endif
#  endif
#endif

But i doubt that will cause the message to stop, it will however get rid of only 1 line of the output terminal

OK i tried it and commenting out those lines results in a new error.
I mean.. OF COURSE it does :stuck_out_tongue:
Error = Exit status 1
too long to post, i'll just remove the un comments

Un commented , it didnt revert to normal,
Here we go, Fun and games

You need to post it.

In case the output is longer than the forum software will allow to be added to a post, you can instead save it to a .txt file and then attach that file to a reply here:

  1. Open any text editor program.
  2. Paste the copied output into the text editor.
  3. Save the file in .txt format.
  4. Open a forum reply here by clicking the Reply button.
  5. Click the "Upload" icon (Upload icon) on the post composer toolbar:
    Upload icon on toolbar
    A dialog will open.
  6. In the dialog, select the .txt file you saved.
  7. Click the Open button.
  8. Click the Reply button to publish the post.

Alternatively, instead of using the "Upload" icon on the post composer toolbar as described in steps (5) - (7) above, you can simply drag and drop the .txt file onto the post composer field to attach it.

ok, didn't want to be a pest

This is the result after commenting out those 2 lines
but after reverting the changes and saving the file the errors persist
it was too long
find it attached
new 1.txt (136.2 KB)

Where would it typically be ?
I'm Using Windows 7 Pro

Here's your I do this once for noobs on that:

where is the arduino library source code

feed that to google. :wink:

a7

For the convenience of the other participants, I'll add an extract of the error messages from new 1.txt:

In file included from c:\Users\Usera\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/FastLED.h:76:0,
                 from C:\Users\Usera\AppData\Local\Temp\.arduinoIDE-unsaved202374-21752-qpyt22.7q6g8\Blink\Blink.ino:2:
c:\Users\Usera\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/chipsets.h:406:106: error: 'DATA_RATE_MHZ' was not declared in this scope
 template <uint8_t DATA_PIN, uint8_t CLOCK_PIN, EOrder RGB_ORDER = RGB, uint32_t SPI_SPEED = DATA_RATE_MHZ(16)>
                                                                                                          ^
In file included from C:\Users\Usera\AppData\Local\Temp\.arduinoIDE-unsaved202374-21752-qpyt22.7q6g8\Blink\Blink.ino:2:0:
c:\Users\Usera\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/FastLED.h:288:64: error: template argument 4 is invalid
    case SM16716: { static SM16716Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
                                                                ^
c:\Users\Usera\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/FastLED.h:288:122: error: no matching function for call to 'CFastLED::addLeds(int*, CRGB*&, int&, int&)'
    case SM16716: { static SM16716Controller<DATA_PIN, CLOCK_PIN> c; return addLeds(&c, data, nLedsOrOffset, nLedsIfOffset); }
1 Like

OK FOR THE BENEFIT OF FUTURE NEWBIES
This is one of those "Please Help" Moments

Tip : Never post a comment saying "Please help" it's largely pointless

so.. Here is how you get out of Shyte when your IDE has a "blonde Moment "

Step 1 - Save all Current Open Sketches, if not Possible to save, Copy and paste to a text editor
( I use Notepad++)

  1. Close your IDE

  2. Ctrl+Alt+Del
    and confirm that all the Arduino processes have stopped

  3. Restart the IDE

  4. Open a basic Blink Sketch (Not FastLED Sketch)

void setup() {
  pinMode(2, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(2, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(2, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}

Compile and i got what i expected since i am not using FastLED in this case
(this is my baseline test)

So all good so far
Now new test
does it work with FastLED Blink ?

Here is the sketch (Take note of the note)

#include <FastLED.h>
#define NUM_LEDS 1
// For led chips like WS2812, which have a data line, ground, and power, you just
// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
// Clock pin only needed for SPI based chipsets when not using hardware SPI
#define DATA_PIN 3
#define CLOCK_PIN 13
CRGB leds[NUM_LEDS];

void setup() 
{ 
    FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // GRB ordering is assumed
}

void loop()
{ 
  // Turn the LED on, then pause
  leds[0] = CRGB::Red;
  FastLED.show();
  delay(500);
  // Now turn the LED off, then pause
  leds[0] = CRGB::Black;
  FastLED.show();
  delay(500);
}

Ok so this failed
Compilation Error: Exit status 1
Same output as before (see the attached ,txt file)

So now what ??
Well
Next step - Don't Panic

Obviously the issue is with the FastLED Library, let's try uninstalling and re installing that

Now it's installed
then i recompile and Problem solved
Except we are now back to the original Problem

But, that's how you get yourself out of a pickle instead of saying "Please Help"

so now we are here
Same issue

In file included from c:\Users\User\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/FastLED.h:75:0,
                 from C:\Users\User\AppData\Local\Temp\.arduinoIDE-unsaved202374-13504-pva18r.8niqk\Blink\Blink.ino:1:
c:\Users\User\Documents\Arduino\Arduino Sketches\libraries\FastLED\src/fastspi.h:157:23: note: #pragma message: No hardware SPI pins defined.  All SPI access will default to bitbanged output
 #      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
                       ^
Sketch uses 211618 bytes (16%) of program storage space. Maximum is 1310720 bytes.
Global variables use 13552 bytes (4%) of dynamic memory, leaving 314128 bytes for local variables. Maximum is 327680 bytes.