Errore "was not declare to the scope" in compilazione libreria FastLED

Ciao a tutti,
anni fa ero riuscito a costruire un sistema Ambilight fai da te che avevo applicato al monitor usando un Arduino Nano clone e seguendo delle guide sul web.
Tutto era andato bene al primo colpo, solo che poi il clone mi si è danneggiato e quindi ho riposto il sistema nel cassetto.

Ora, dopo qualche anno, ho deciso di rifarlo, usando questa volta un Arduino Nano originale (Arduino Nano 33 BLE) per avere più affidabilità rispetto ai cloni cinesi.

Il problema però è che, al momento della compilazione dello sketch che dovrei caricare sull'Arduino Nano, ricevo molti errori, per lo più collegati alla libreria FastLED (che ho scaricato dalle librerie di Arduino IDE).
Gli errori che ricevo sono i seguenti:

In file included from f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/FastLED.h:66:0,
                 from F:\Program Files (x86)\Arduino\Arduino IDE\LEDstream_FastLED\LEDstream_FastLED.ino:54:
f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/fastpin.h: In member function 'void Pin::_init()':
f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/fastpin.h:52:14: error: 'digitalPinToBitMask' was not declared in this scope
   mPinMask = digitalPinToBitMask(mPin);
              ^~~~~~~~~~~~~~~~~~~
f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/fastpin.h:52:14: note: suggested alternative: 'digitalPinToPinName'
   mPinMask = digitalPinToBitMask(mPin);
              ^~~~~~~~~~~~~~~~~~~
              digitalPinToPinName
f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/fastpin.h:53:28: error: 'portOutputRegister' was not declared in this scope
   mPort = (volatile RwReg*)portOutputRegister(digitalPinToPort(mPin));
                            ^~~~~~~~~~~~~~~~~~
f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/fastpin.h:54:30: error: 'portInputRegister' was not declared in this scope
   mInPort = (volatile RoReg*)portInputRegister(digitalPinToPort(mPin));
                              ^~~~~~~~~~~~~~~~~
In file included from f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/platforms/arm/nrf52/fastled_arm_nrf52.h:8:0,
                 from f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/platforms.h:16,
                 from f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/FastLED.h:70,
                 from F:\Program Files (x86)\Arduino\Arduino IDE\LEDstream_FastLED\LEDstream_FastLED.ino:54:
f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/platforms/arm/nrf52/clockless_arm_nrf52.h: In static member function 'static void ClocklessController<_DATA_PIN, _T1, _T2, _T3, _RGB_ORDER, _XTRA0, _FLIP, _WAIT_TIME_MICROSECONDS>::startPwmPlayback_EnableInterruptsAndShortcuts(NRF_PWM_Type*)':
f:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED\src/platforms/arm/nrf52/clockless_arm_nrf52.h:99:44: error: 'configMAX_SYSCALL_INTERRUPT_PRIORITY' was not declared in this scope
         result = sd_nvic_SetPriority(irqn, configMAX_SYSCALL_INTERRUPT_PRIORITY);
                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Uso la libreria FastLED alla versione 3.9.4 nella cartella: F:\Program Files (x86)\Arduino\Arduino IDE\libraries\FastLED 
exit status 1

Compilation error: exit status 1

Ho provato a cercare sia sul forum che in rete ma trovo o errori simili al mio ma che non riguardano FastLED e quindi non so come applicarli al mio caso, oppure errori su FastLED ma che non sono come il mio.
Ho letto che potrebbe trattarsi di dichiarazioni di variabili che vengono fatte all'interno del Setup() e che invece dovrebbero essere dichiarate fuori, però sinceramente ci ho capito poco, anche perchè mi sembra strano che ci siano questi tipi di problemi all'interno di librerie scaricate dall'IDE di Arduino.

Ho provato a caricare lo sketch sia tramite Arduino IDE 2.3.4, sia tramite la versione 1.8.19, ma l'errore che ricevo è il medesimo.

Spero che qualcuno mi possa aiutare perchè ci sto sbattendo la testa da settimane senza essere arrivato ad una soluzione.

Grazie a tutti!

Sicuro che la libreria sia compatibile con la MCU di Arduino Nano 33 BLE (... che è cosa completamente diversa da Arduino Nano V3)?

Nell'IDE hai selezionato la giusta board (Arduino Nano 33 BLE) ?

Guglielmo

Adesso non ricordo, ma se questa scheda usa il framework Mbed, allora la fasted non è compatibile.

C'è scritto nel repository dello sviluppatore.

Monta un nRF52840, che NON ho idea che razza di MCU sia :joy:, ma dalle specifiche vedo:

Arm® Cortex®-M4 32-bit processor with FPU, 64 MHz

... quindi credo ... incompatibile.

Guglielmo

È una MCU molto molto interessante della Nordic.
L'ho usata in molti progetti comunque sì di base è un Cortex M4.

È usata anche dalla famiglia di schede XIAO dove per ambiente Arduino si può usare con due framework, uno basato su mbed molto lacunoso purtroppo.

L'altro framework viene chiamato nRF52 e c'è il supporto anche a FreeRTOS.

Vado a memoria perché al momento non posso verificare però mi pare che per la nano 33 ci sia soltanto la versione basata su mbed.

Sicuro che la libreria sia compatibile con la MCU di Arduino Nano 33 BLE (... che è cosa completamente diversa da Arduino Nano V3)?

Nell'IDE hai selezionato la giusta board (Arduino Nano 33 BLE) ?

Ciao Guglielmo,
prima di tutto grazie per la risposta.

Si, nell'IDE è impostato come "Arduino Nano 33 BLE" e anche la porta COM è quella dove è collegato Arduino.

Adesso non ricordo, ma se questa scheda usa il framework Mbed, allora la fasted non è compatibile.

Grazie anche a te per la risposta.

Purtroppo credo che il problema sia proprio di incompatibilità, come avete suggerito voi.
Non essendo esperto di Arduino, pensavo che il Nano originale Arduino fosse quello.
Anche perchè, continuando a cercare informazioni sul web ho letto che questa versione del Nano viene alimentata a 3.3V, invece dei 5V delle schede clone che usavo prima (e non so se anche questo può creare ulteriori problemi).

Quindi credo che per il mio progetto dovrò acquistare il Nano V3.

Per fare la prova del nove, avendo ancora un clone cinese, oggi lo collego e vedo se la compilazione va a buon fine.

Vi tengo aggiornati e grazie ancora per il supporto!

Di "Arduino NANO" ce ne sono un'infinità di modelli con MCU e caratteristiche del tutto diverse.

Il vecchio Arduino NANO, quello classico, è QUESTO, basato sulla stessa MCU di Arduino UNO R3.

Guglielmo

Il vecchio Arduino NANO , quello classico, è QUESTO, basato sulla stessa MCU di Arduino UNO R3.

Perfetto, grazie, allora mi sa che dovrò prendere quello perché oggi ho provato a caricare lo sketch sul clone che avevo e la compilazione è andata a buon fine, però nel caricamento ho ricevuto questo errore:

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\dont\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM7
         Using Programmer              : arduino
         Overriding Baud Rate          : 115200
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x41
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x64
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x61
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x0a
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x41
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x64
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x61
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x3a
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x20
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x4c

avrdude done.  Thank you.

Caricamento non riuscito: errore durante il caricamento: exit status 1

Il clone è un Elegoo Nano che usa i driver CH340. E' correttamente riconosciuto sia da Windows che da Arduino.

Da cosa può dipendere? Potrebbe essere danneggiato il clone?

Grazie ancora per il supporto!

No, i cloni spesso usano un vecchio bootloader NON compatibile con il nuovo ...
... probabilmente anche il tuo lo fa ... nellIDE prova a selezionare, come board, "Arduino Nano (old bootloader)" e riprova :roll_eyes:

Guglielmo

nell'IDE prova a selezionare, come board, "Arduino Nano (old bootloader) " e riprova

Niente da fare, ho provato selezionando anche Old bootloader, ma non come "Board" (perchè non l'ho trovato, c'è solo "Arduino Nano"), ma come "Processor", come da screen:

Però ricevo sempre gli stessi messaggi di errore.
Ho provato sia con l'IDE 2.3.4, sia con quella vecchia (1.8.19) con il medesimo risultato.

Ho provato anche a cambiare cavo, ho letto che a volte il problema era semplicemente quello, ma neanche questo ha dato esiti positivi.

Secondo me stai o sbagliando board o selezione ...
... io sono sul 1.8.19 (legacy) e NON uso la versione 2.x, ma comunque, per le board, è la stessa cosa ... quello che vedi è un immagine dello schermo del mio iMac (lavoro su macOS, ma l'IDE è identico anche con Win) ...

... ecco cosa ho se selezione come board Arduino Nano:

come vedi mi propone quelle tre cose ... nel tuo caso, provale tutte e tre e vedi :roll_eyes:

Guglielmo

come vedi mi propone quelle tre cose ... nel tuo caso, provale tutte e tre e vedi

Ciao Guglielmo, ho provato a selezionare tutte e tre le voci ma usciva fuori sempre lo stesso errore.

Però ho avuto la fortuna di trovare un altro clone che avevo a casa (ne avevo 3 una volta , per ora sono riuscito a ritrovarne 2 :slight_smile: ) e, per levarmi il dubbio, ho provato a collegare quest'ultimo. Ho avviato quindi l'IDE, selezionato "Old bootloader" e tutto è andato a buon fine, sketch caricato e progetto funzionante!
Quindi forse l'altro Elegoo era danneggiato, non so che pensare, era nuovo, mah.

Comunque grazie mille per il supporto, senza i vostri consigli ancora sarei stato a lottare per far funzionare l'Arduino Nano 33 BLE :slight_smile:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.