Errore durante la compilazione per la scheda Arduino/Genuino Uno.

Buonasera, sono un ragazzo di quasi 16 anni, sono entrato nel mondo di arduino da un paio di anni, non ho mai approfondito più di tanto, ma credo di aver appreso le basi e forse anche qualcosa di più, di elettronica e di informatica. Non studio nessuna di queste materie, nel corso del tempo ho sempre seguito tutorial online, ho letto un manuale di Paolo Aliverti (Arduino trucchi e segreti), ho aquistato inizialmente la versione intermedia dello starter kit arduino di elegoo. Il problema che vi pongo oggi riguarda il software di arduino.

Mi è arrivato giusto oggi un display oled 128x64

Ho visto qualche tutorial online e ho installato le librerie "Adafruit_SSD1306" Versione: 2.3.0 (L'ultima) e "Adafruit_GFX" Versione: 1.9.0 (L'ultima), carico il codice di esempio: "ssd1306_128x64_i2c" per testare il display e mi da errore :

Arduino:1.8.8 (Windows 8.1), Scheda:"Arduino/Genuino Uno"

In file included from C:\Users\giuse_000\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_MonoOLED.cpp:20:0:

C:\Users\giuse_000\Documents\Arduino\libraries\Adafruit_GFX_Library\Adafruit_MonoOLED.h:30:32: fatal error: Adafruit_I2CDevice.h: No such file or directory

compilation terminated.

exit status 1
Errore durante la compilazione per la scheda Arduino/Genuino Uno.

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

Dunque ho provato a modificare il file della libreria "Adafruit_SSD1306.h" con notepad++ e ho cambiato (togliendo il commento) la risoluzione standard a 128x64, commentando la 128x32. Poi ho aggiunto una scrittura trovata su quel tutorial:

#define SSD1306_LCDHEIGHT 64

#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

Il problema persiste.
Fino ad ora il problema può riguardare le librerie (come evidenziato nell'errore).

  • Ho caricato un codice qualsiasi senza librerie ed è andato tranquillamente.
  • Non può riguardare l'Hardware poiché il codice da errore anche quando viene verificato dal compilatore.
  • Il problema di conseguenza non riguarda ne la porta seriale, ne la scheda utilizzata (che comunque rimane quella corretta).

Fatemi sapere al più presto. Vi ringrazio in anticipo, ogni consiglio può essere utile.

Stiamo ancora aspettando la tua presentazione nel tuo primo thread che hai abbandonato.

Di nuovo benvenuto,
essendo il tuo secondo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

nid69ita

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Buongiorno, la presentazione la ho fatta da ieri sera, ma sembra che il tread sia ancora bloccato.

Peppe_27:
... ma sembra che il tread sia ancora bloccato.

... se fosse "bloccato" come potresti scriverci ? ? ? :o :o :o ... no, è completamente libero, solo ancora nessuno è passato a rispondere ... ::slight_smile:

Guglielmo

Ma l’errore dice che non trova il file “Adafruit_I2CDevice.h” referenziato dentro a “Adafruit_MonoOLED.h” che infatti è fatto così:

#include <Adafruit_GFX.h>
#include <Adafruit_I2CDevice.h>
#include <Adafruit_SPIDevice.h>
#include <SPI.h>
#include <Wire.h>

Quindi per ora posso solo supporre che tu abbia mal installato la libreria o che non sia stata comunque installata correttamente. Verifica e facci sapere (nel caso, da dove l’hai presa e come l’hai installata? Versione dell’IDE?)

PS: comunque io non amo modificare le librerie, ti consiglio di lasciarle stare mantenendole in originale (a meno che non siano proprio bacate, ma Adafruit non mi pare faccia “pecionate”…).

PS2: simpatico il nome del venditore, “IZOKEE”, che si legge come “it’s okay”… :slight_smile:

Tieni d'occhio anche questo thread nella sezione 'display', un altro utente (dal nome peraltro impronunciabile) sembra avere lo stesso problema, magari viene fuori la soluzione.

Ciao, Ale.

Visto che non trovava il file "Adafruit_I2CDevice.h" è bastato cercare nel repository Adafriut per trovarlo, devi installare anche la libreria Adafruit_BusIO.

EDIT: confermo, è anche scritto nel README della libreria GFX;

You will also need to install the latest Adafruit BusIO library. Search for "Adafruit BusIO" in the library manager, or install by hand from GitHub - adafruit/Adafruit_BusIO: I2C, SPI and UART abstractions for use with Arduino

Lo scrivo pure in quell'altro thread.

docdoc:
Ma l’errore dice che non trova il file “Adafruit_I2CDevice.h” referenziato dentro a “Adafruit_MonoOLED.h” che infatti è fatto così:

#include <Adafruit_GFX.h>

#include <Adafruit_I2CDevice.h>
#include <Adafruit_SPIDevice.h>
#include <SPI.h>
#include <Wire.h>



Quindi per ora posso solo supporre che tu abbia mal installato la libreria o che non sia stata comunque installata correttamente. Verifica e facci sapere (nel caso, da dove l'hai presa e come l'hai installata? Versione dell'IDE?)

PS: comunque io non amo modificare le librerie, ti consiglio di lasciarle stare mantenendole in originale (a meno che non siano proprio bacate, ma Adafruit non mi pare faccia "pecionate"...).

PS2: simpatico il nome del venditore, "IZOKEE", che si legge come "it's okay"... :)

Grazie mille per la tua risposta.

  1. La libreria la ho installata direttamente dall’IDE di arduino.
  2. Forse la versione dell’IDE non è la più recente (V. 1.8.8), prima mi dava l’aggiornamento, ora niente, ma in ogni caso le librerie sono installate con l’ultima versione.
  3. Non avevo mai modificato una libreria prima d’ora, ho seguito un tutorial, poiché si trattava solo di 2 righe.
  4. Hai ragione su “IZOKEE” == “it’s okay”

Verifico subito se la scrittura è giusta.

Edit:

La scrittura era giusta:

#include <Adafruit_GFX.h>
#include <Adafruit_I2CDevice.h>
#include <Adafruit_SPIDevice.h>
#include <SPI.h>
#include <Wire.h>

Quindi non era quello il problema. Grazie lo stesso!

docdoc:
Visto che non trovava il file "Adafruit_I2CDevice.h" è bastato cercare nel repository Adafriut per trovarlo, devi installare anche la libreria Adafruit_BusIO.

EDIT: confermo, è anche scritto nel README della libreria GFX;
Lo scrivo pure in quell'altro thread.

Grazie mille per la tua risposta.

Ho appena eliminato le librerie "GFX" e "SSD1306", per evitare eventuali errori da parte mia.
Adesso le reinstallo insieme all'altra libreria, poi verifico e ti faccio sapere. Grazie ancora!

Edit:

Effettivamente il problema del caricamento è stato risolto, e per questo ti sono infinitamente grato.
Ma nonostante ciò quando lo carico su arduino, lo schermo non dà segni di vita, adesso provo a usare un altro schermo oled 128x64 (stesso modello), in caso il mio sia difettoso, se il problema non è lo schermo provo a creare un codice basilare per stampare "Hello Word!", per vedere se il problema è riferito al codice di esempio 128x64_i2c. Se qualcuno mi volesse suggerire di alzare la luminosità, ci avevo già pensato, ma lo schermo è grande quanto un dito, non trovo il trimmer che il produttore dice.
Se andate sul primo link, in una delle foto vi dice che si può regolare il contrasto sul retro, ma io non trovo niente, inoltre nella descrizione dice che il display si auto-illumina.

Peppe_27:
Effettivamente il problema del caricamento è stato risolto, e per questo ti sono infinitamente grato.

Bene mi fa piacere!

Ma nonostante ciò quando lo carico su arduino, lo schermo non dà segni di vita

Essendo I2C, sei sicuro dell'indirizzo? In genere leggo che per quel display è 0x3C (come i display 128x32) e non 0x3D.
Se non funziona neanche con 0x3C al limite cerca "I2C Scanner" e vedi cosa ti dice.

docdoc:
Essendo I2C, sei sicuro dell'indirizzo? In genere leggo che per quel display è 0x3C (come i display 128x32) e non 0x3D.
Se non funziona neanche con 0x3C al limite cerca "I2C Scanner" e vedi cosa ti dice.

Oddio, ieri avevo modificato l'indirizzo, ma poi me ne sono completamente scordato.

Finalmente ora funziona, anzi funziona molto bene e ha un'ottima qualità.

Ti ringrazio moltissimo per il tuo aiuto, sono da ieri che ci sto perdendo molto tempo, ma ora finalmente funziona.