LedControl con errore exit status 1

Buongiorno a tutto il gruppo,
mi ripresento(dopo tanto tempo) e con un problema inerente ad uno sketch, mi spiego meglio.
Stavo cercando una alternativa a parola (lo sketch per fare comparire su una matrice a led delle parole che voglio) l ho trovato e si chiama LedControl.
Lo provo virtualmente su https://xantorohara.github.io/led-matrix-editor/#0000000000000000|8080808080800000|404040c040408000|202020e02020c000|101010f01010e000|080808f80808f000|040404fc0404f800|4242427e42423c00|2121213f21211e00|1010101f10100f00|0808080f08080700|0404040704040300|0202020302020100|0101010101010000|0000000000000000|0080808080808000|8040404040404000|c020202020202 e qua funziona.
Decido a compilarlo su arduino (il programma) e qua mi da errore e piu' precisamente "exit status 1" was not declared in this scope.
Lo sketch é questo:

//matrice led con max7219

#include <LedControl.h> //includo la libreria adatta
#define DIN 2 //definisco il pin 2 di arduino con il pin DIN del modulo
#define CS 3 // definisco il pin 3 di arduino con il pin CS del modulo
#define CLK 4 // definisco il pin 4 di arduino con il pin CLOCK del modulo
#define Moduli 6 // dichiaro quanti moduli uso

// i dati da leggere nell' ordine sono il pin DIN, il pin CLK, il pin CS 
//e il numero dei moduli connessi.
LedControl lc = LedControl (DIN, CLK, CS, Moduli);// i dati da leggere nell' ordine sono il pin DIN ingresso dati, il pin CLK clock dei dati, il pin CS selezione modulo e il numero dei moduli connessi.
byte A[15] = {B0000000000000000,B8080808080800000,B404040c040408000,B202020e02020c000,B101010f01010e000,B080808f80808f000,B040404fc0404f800,B4242427e42423c00,B2121213f21211e00,B1010101f10100f00,B0808080f08080700,B0404040704040300,B0202020302020100,B0101010101010000,B0000000000000000,};
byte U[14] = {B0000000000000000,B0080808080808000,B8040404040404000,Bc020202020202000,Be010101010101000,Bf008080808080800,Bf804040404040400,B3c42424242424200,B1e21212121212100,B0708080808080800,B0304040404040400,B0102020202020200,B0001010101010100,B0000000000000000,};
byte G[15] = {B0000000000000000,B0080808080808000,B8040404040404080,Bc0202020202020c0,Be0101010101010e0,Bf00808c8080808f0,B788484e404040478,B3c4242720202023c,B1e2121390101011e,B0f10101c0000000f,B0f10101c0000000f,B0304040700000003,B0102020300000001,B0001010100000000,B0000000000000000,};
byte U[14] = {B0000000000000000,B0080808080808000,B8040404040404000,Bc020202020202000,Be010101010101000,Bf008080808080800,Bf804040404040400,B3c42424242424200,B1e21212121212100,B0708080808080800,B0304040404040400,B0102020202020200,B0001010101010100,B0000000000000000,};
byte R[15] = {B0000000000000000,B0080808080808000,B00404040c0404080,B002020e0202020c0,B001010f0101010e0,B0008887888888870,B0084443c44444438,B0042221e2222221c,B0021110f1111110e,B0010080708080807,B0008040304040403,B0004020102020201,B0002010001010100,B0001000000000000,B0000000000000000,};
byte I[17] = {B0000000000000000,B8000000000000080,Bc0000000000000c0,Be0000000000000e0,Bf0808080808080f0,Bf8c0c0c0c0c0c0f8,Bfc606060606060fc,Bfe303030303030fe,Bff181818181818ff,B7f0c0c0c0c0c0c7f,B3f0c0c0c0c0c0c3f,B1f0606060606061f,B0f0303030303030f,B0701010101010107,B0300000000000003,B0100000000000001,B0000000000000000,};

void setup() {
  lc.shutdown(0, false); 
  lc.setIntensity(0, 8); //setto la luminosità dei led da 0 a 15, lo zero (0) non spegne del tutto i led perchè bisogna mettere in standby con il comando lc.shutdown(0.true)
  lc.clearDisplay(0); // resetto il modulo MAZ7219 e spengo tutti i led.
}

  void loop() {
    for (int row = 0; row < 8; row++) {
      lc.setRow(0, row, A[row]);
    }
    delay (750);

        for (int row = 0; row < 8; row++) {
      lc.setRow(0, row, U[row]);
    }
    delay (750);

        for (int row = 0; row < 8; row++) {
      lc.setRow(0, row, G[row]);
    }
    delay (750);

        for (int row = 0; row < 8; row++) {
      lc.setRow(0, row, U[row]);
    }
    delay (750);

        for (int row = 0; row < 8; row++) {
      lc.setRow(0, row, R[row]);
    }
    delay (750);

        for (int row = 0; row < 8; row++) {
      lc.setRow(0, row, I[row]);
    }
    delay (750);

  }

    

L'errore si presenta alla riga 17: exit status 1
'B0000000000000000' was not declared in this scope
Per evitare degli errori di battitura ho fatto copia/incolla il codice esadecimale.
io non riesco a trovare l'errore voi riuscite a vederlo?
grazie

Ti da errore perché quei valori, con prefiso B non sono accettati dal compilatore su Arduino ...
... NON so da dove tu abbia copiato quel codice, ma ... 'B' messo così, con quei valori, NON significa nulla.

I prefissi che il compilatore accetta sono

  • nulla per un numero decimale
  • 0x per un numero esadecimale,
  • 0 per un numero ottale

... in più, arduino, per numeri ad 8 bit, accetta anche il prefisso B seguito da 0 ed 1 (max 8) per rappresentare un numero in binario (vedi nel core il file binary.h).

Guglielmo

Adesso provo a sostituire la lettera B con 0x e poi faccio sapere.
Grazie mille per la risposta e anche a chi ha letto/leggera' questo post.

Occhio che il significato è completamente diverso e anche li NON puoi usare tutti quei caratteri ...
... su Arduino un 0x a senso da 0x00000000 fino a 0xFFFFFFFF ( 32 bit) NON oltre quindi ... NON credo sia quella la correzione che devi fare.

Piuttosto devi capire COSA rappresentano quei valori e devi metteci le sequenze corrette.

Guglielmo

P.S.: Se guardi l'esempio che hai indicato i valori sono ben diversi

Quello che pensavo di fare era una scritta scorrevole composta da un arduino R3 e un gruppo, sei per la precisione, di matrici di led (8x8).

Quindi quelli dovranno probabilmente essere dei numeri binari che vanno da B00000000 fino a B11111111 ma ... nessun carattere differente da 0 ed 1 e massimo 8 caratteri dopo la B (gli 8 bit).

Guglielmo

Ho provato a sostituire il prefisso B con 0x e l'errore è cambiato, è diventato redefinition of 'byte U [14]' (riga 13)eppure nella scritta auguri (quella che dovrebbe apparire sulla matrice di led) è uguale alla altra "U" (riga 15)
Arduino:1.8.19 (Windows 10), Scheda:"Arduino Uno"

matrixled7219:15:11: error: redefinition of 'byte U [14]'

byte U [14] = {0x0000000000000000,0x0080808080808000,0x8040404040404000,0xc020202020202000,0xe010101010101000,0xf008080808080800,0xf804040404040400,0x3c42424242424200,0x1e21212121212100,0x0708080808080800,0x0304040404040400,0x0102020202020200,0x0001010101010100,0x0000000000000000,};

       ^

C:\Users\david\OneDrive\Documenti\Arduino\matrixled7219\matrixled7219.ino:13:6: note: 'byte U [14]' previously defined here

byte U [14] = {0x0000000000000000,0x0080808080808000,0x8040404040404000,0xc020202020202000,0xe010101010101000,0xf008080808080800,0xf804040404040400,0x3c42424242424200,0x1e21212121212100,0x0708080808080800,0x0304040404040400,0x0102020202020200,0x0001010101010100,0x0000000000000000,};

  ^

exit status 1

redefinition of 'byte U [14]'

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

Ho abilitato in "File->impostazioni" la voce "Mostra un output dettagliato durante la compilazione" e questa è stata la risposta sull'errore "redifinition of 'byte U [14]' ".
Ma cosa devo redifinire?
Grazie per la visione e la eventuale risposta.

Arduino:1.8.19 (Windows 10), Scheda:"Arduino Uno"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\david\OneDrive\Documenti\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path C:\Users\david\AppData\Local\Temp\arduino_build_905125 -warnings=none -build-cache C:\Users\david\AppData\Local\Temp\arduino_cache_148117 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\david\OneDrive\Documenti\Arduino\matrixled7219\matrixled7219.ino

C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\david\OneDrive\Documenti\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path C:\Users\david\AppData\Local\Temp\arduino_build_905125 -warnings=none -build-cache C:\Users\david\AppData\Local\Temp\arduino_cache_148117 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\david\OneDrive\Documenti\Arduino\matrixled7219\matrixled7219.ino

Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

Detecting libraries used...

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\david\AppData\Local\Temp\arduino_build_905125\sketch\matrixled7219.ino.cpp" -o nul

Alternatives for LedControl.h: [LedControl@1.0.6]

ResolveLibrary(LedControl.h)

-> candidates: [LedControl@1.0.6]

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\david\OneDrive\Documenti\Arduino\libraries\LedControl\src" "C:\Users\david\AppData\Local\Temp\arduino_build_905125\sketch\matrixled7219.ino.cpp" -o nul

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\david\OneDrive\Documenti\Arduino\libraries\LedControl\src" "C:\Users\david\OneDrive\Documenti\Arduino\libraries\LedControl\src\LedControl.cpp" -o nul

Generating function prototypes...

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\david\OneDrive\Documenti\Arduino\libraries\LedControl\src" "C:\Users\david\AppData\Local\Temp\arduino_build_905125\sketch\matrixled7219.ino.cpp" -o "C:\Users\david\AppData\Local\Temp\arduino_build_905125\preproc\ctags_target_for_gcc_minus_e.cpp"

"C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\david\AppData\Local\Temp\arduino_build_905125\preproc\ctags_target_for_gcc_minus_e.cpp"

Sto compilando lo sketch...

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "-IC:\Users\david\OneDrive\Documenti\Arduino\libraries\LedControl\src" "C:\Users\david\AppData\Local\Temp\arduino_build_905125\sketch\matrixled7219.ino.cpp" -o "C:\Users\david\AppData\Local\Temp\arduino_build_905125\sketch\matrixled7219.ino.cpp.o"

matrixled7219:15:11: error: redefinition of 'byte U [14]'

byte U [14] = {0x0000000000000000,0x0080808080808000,0x8040404040404000,0xc020202020202000,0xe010101010101000,0xf008080808080800,0xf804040404040400,0x3c42424242424200,0x1e21212121212100,0x0708080808080800,0x0304040404040400,0x0102020202020200,0x0001010101010100,0x0000000000000000,};

       ^

C:\Users\david\OneDrive\Documenti\Arduino\matrixled7219\matrixled7219.ino:13:6: note: 'byte U [14]' previously defined here

byte U [14] = {0x0000000000000000,0x0080808080808000,0x8040404040404000,0xc020202020202000,0xe010101010101000,0xf008080808080800,0xf804040404040400,0x3c42424242424200,0x1e21212121212100,0x0708080808080800,0x0304040404040400,0x0102020202020200,0x0001010101010100,0x0000000000000000,};

  ^

Uso la libreria LedControl alla versione 1.0.6 nella cartella: C:\Users\david\OneDrive\Documenti\Arduino\libraries\LedControl

exit status 1

redefinition of 'byte U [14]'

Non devi ridefinire U o qualunque altra variabile, cioè due variabili con lo stesso nome non sono permesse.

Comunque stai facendo un pasticcio. Al link che hai fornito, se guardi a destra c'è Arduino/C accanto un flag, se lo spunti avrai il codice che usa array di byte.

// usa intero senza segno grande 64bit
const uint64_t IMAGES[] = {
  0x0000000000000000,
  0x1010101011121418
};
const int IMAGES_LEN = sizeof(IMAGES)/8;

Questo numero 0x1010101011121418 mostra 1 sul display.

Stessa cosa del precedente ma con array di byte:

const uint8_t IMAGES[][8] = {
{
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000,
  0b00000000
},{
  0b00011000,
  0b00101000,
  0b01001000,
  0b10001000,
  0b00001000,
  0b00001000,
  0b00001000,
  0b00001000
}};
const int IMAGES_LEN = sizeof(IMAGES)/8;

L'array IMMAGES è grande sempre 16 byte,

Ciao.

Ho sostituito la lettera U (maiuscola) con la lettera u (minuscola) ed è andato tutto bene, nessun errore.
Lo sketch usa 1858 byte (5%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.
Le variabili globali usano 173 byte (8%) di memoria dinamica, lasciando altri 1875 byte liberi per le variabili locali. Il massimo è 2048 byte.
ora mi compro le sei matrici di led, caricare lo sketch su arduino.
GRAZIE a VOI sono felice.
Grazie ancora.

Che cecato che sono, non avevo letto la scritta AUGURI. :smiley:

Puoi anche non definire u del tutto e come vedo nel for usi la U due volte.

matrix on wokwi

Ciao.

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