Vai al contenuto
PLC Forum


Problema compilazione IDE Arduino con Raspian


barbo

Messaggi consigliati

Ciao a tutti,

sto facendo un applicativo di prova per Arduino Nano, ho cominciato con l'inserire due sensori di temperatura onewire per trasferirne il valore ad un lcd in i2c.

Sketch con windows, compilo, carico, tutto OK, perfettamente funzionante.

Passo successivo, installo Raspian su di un Raspberry 3 B+, installo Arduino, installo le librerie, copio sketch, apro, compilo, ma da errore.

Dopo vari tentativi non sono riuscito a capire il perchè e come poterne uscire.

 

#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>

#define onewirepin 10
LiquidCrystal_I2C lcd(0x27,16,2);

OneWire oneWire(onewirepin);
DallasTemperature sensors(&oneWire);
DeviceAddress Temp_IN = { 0x28, 0xFF, 0xA4, 0x75, 0xC4, 0x17, 0x05, 0x3D };
DeviceAddress Temp_OUT = { 0x28, 0xFF, 0xA3, 0xA8, 0xC1, 0x17, 0x02, 0x46 };

void setup(){
  lcd.init();
  lcd.init();
  lcd.backlight();
  sensors.begin ();
  sensors.setResolution(Temp_IN, 12);
  sensors.setResolution(Temp_OUT, 12);
}

void loop(){
    sensors.requestTemperatures();
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print(" IN :");
    printTemperature(Temp_IN);
    lcd.setCursor(0, 1);
    lcd.print("OUT :");
    printTemperature(Temp_OUT);
    delay(500);
  }

  void printTemperature(DeviceAddress deviceAddress)
  {

float tempC = sensors.getTempC(deviceAddress);

   if (tempC == -127.00){ 
        lcd.print("ERROR");
   } 
   else
   {
    lcd.print(String(tempC) + char(0xDF) + "C");
   }
}

l'errore in output è questo

 


Temperatura.ino: In function 'void printTemperature(uint8_t*)':
Temperatura.ino:41:28: error: no matching function for call to 'String(DeviceAddress)'
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:70:11: note: candidate: String::String(long unsigned int, unsigned char) <near match>
  explicit String(unsigned long, unsigned char base=10);
           ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:70:11: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'long unsigned int' [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:69:11: note: candidate: String::String(long int, unsigned char) <near match>
  explicit String(long, unsigned char base=10);
           ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:69:11: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'long int' [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:68:11: note: candidate: String::String(unsigned int, unsigned char) <near match>
  explicit String(unsigned int, unsigned char base=10);
           ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:68:11: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'unsigned int' [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:67:11: note: candidate: String::String(int, unsigned char) <near match>
  explicit String(int, unsigned char base=10);
           ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:67:11: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'int' [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:66:11: note: candidate: String::String(unsigned char, unsigned char) <near match>
  explicit String(unsigned char, unsigned char base=10);
           ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:66:11: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'unsigned char' [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:65:11: note: candidate: String::String(char) <near match>
  explicit String(char c);
           ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:65:11: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'char' [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:60:2: note: candidate: String::String(const String&) <near match>
  String(const String &str);
  ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:60:2: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid user-defined conversion from 'DeviceAddress {aka unsigned char [8]}' to 'const String&' [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:59:2: note: candidate is: String::String(const char*) <near match>
  String(const char *cstr = "");
  ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:59:2: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'const char*' [-fpermissive]
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'const char*' [-fpermissive]
In file included from /usr/share/arduino/hardware/arduino/cores/arduino/Print.h:26:0,
                 from /usr/share/arduino/hardware/arduino/cores/arduino/Stream.h:26,
                 from /usr/share/arduino/libraries/Wire/Wire.h:26,
                 from Temperatura.ino:1:
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:59:2: note:   initializing argument 1 of 'String::String(const char*)'
  String(const char *cstr = "");
  ^
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:59:2: note: candidate: String::String(const char*) <near match>
/usr/share/arduino/hardware/arduino/cores/arduino/WString.h:59:2: note:   conversion of argument 1 would be ill-formed:
Temperatura.ino:41:28: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'const char*' [-fpermissive]

 

Ora ho capito che l'errore sta nella conversione del dato Float "tempC", ma non capisco il perchè, il codice sta attualmente funzionando se trasferito da windows a Arduino Nano.

Perché dovrebbe darmi questi problemi?

C'è un qualche passaggio che vista l'ora mi sto perdendo?

Spero di non aver omesso particolari

Grazie in anticipo a chi mi potrà rispondere

Link al commento
Condividi su altri siti


Buongiorno!

 

1 ora fa, Livio Orsini ha scritto:

Dovresti specificare di che sensore si tratta, anche se suppongo sia il classico DS18B20.

 

Esatto!!

 

6 minuti fa, ilguargua ha scritto:

La versione dell'IDE Arduino è la stessa tra Windows e Raspian? Nel caso che versione è?

 

 

Ciao, Ale.

allora su windows ho 1.8.12

Mentre su Raspberry 2:1.0.5+dfsg2-4.1 installa tramite terminale e poi ho provato a fare il classico sudo apt-get update

 

Mi sa quindi che è qui l'inghippo, ho controllato online ma non ho trovato altre versioni

Link al commento
Condividi su altri siti

1 ora fa, barbo ha scritto:

ho controllato online ma non ho trovato altre versioni

Dalla pagina ufficiale di Arduino vedo che ci sono 2 versioni ARM (32 o 64 bit) 1.8.12 che dovrebbero andar bene sul Raspy, onestamente non so/non ricordo se 32 o 64 bit il SO, ma non dovrebbe essere difficile scoprirlo.

 

 

Ciao, Ale.

Link al commento
Condividi su altri siti

11 ore fa, ilguargua ha scritto:

Dalla pagina ufficiale di Arduino vedo che ci sono 2 versioni ARM (32 o 64 bit) 1.8.12 che dovrebbero andar bene sul Raspy, onestamente non so/non ricordo se 32 o 64 bit il SO, ma non dovrebbe essere difficile scoprirlo.

 

 

Ciao, Ale.

 

In effetti dopo che mi hai dato il pallino della versione, mi sono un po' adoperato, non ho ancora trovato la soluzione ma appena riesco la posto.

Ho comunque capito che il mio Raspy model 3 B v1.2, è un ARM 64 bit, dunque dopo aver scaricato la giusta versione di Arduino IDE ed estratto con Archivier,

sono entrato nel terminale, ho raggiunto tramite cd la cartella dove era compattato il file d'installazione ed ho provato ad installarlo, non ne vengo ancora fuori, non riesco ad installarlo.

Per ora ho provato a questi comandi (dopo averlo estratto)   

~/Downloads/arduino-1.8.12 $ sudo ./arduino-linux-setup.sh root

Riavvio il raspy e poi:

~/Downloads/arduino-1.8.12 $ sudo ./install.sh

Mi da questo output (ho visto però in un video dove veniva installata la versione 1.8.8, che usciva il messaggio analogo)

Adding desktop shortcut, menu item and file associations for Arduino IDE...
touch: impossibile fare touch di '/root/.config/mimeapps.list': File o directory non esistente
/usr/bin/xdg-mime: 848: /usr/bin/xdg-mime: cannot create /root/.config/mimeapps.list.new: Directory nonexistent
 done!

Viene creato comunque il collegamento dal menù dei programmi, ma non si riesce ad avviare (non esce nessun messaggio)
 

Quindi non riuscendo ad avviarlo tramite interfaccia grafica, ho provato ad avviarlo da terminale, tramite il comando

~/Downloads/arduino-1.8.12 $ ./arduino

mi esce questo messaggio

 

./arduino: riga 35: /home/pi/Downloads/arduino-1.8.12/java/bin/java: cannot execute binary file: Formato eseguibile non valido

 

Preciso anche che dopo aver fatto tutte queste prove, siccome avevo già fatto varie prove nel Raspy installando mysql, php ecc.. ho anche formattato la microSD partendo da zero, reinstallando l'ultimo Debian e prima di tutto, come sempre, ho fatto i classici

sudo apt-get update
sudo apt-get upgrade

 

Farò altre prove domani e vi farò sapere se riesco nell'intento, non credo di essere lontano comunque.

 

Mattia

Link al commento
Condividi su altri siti

MEA CULPA!

Mi sono affidato alla semplice ricerca sul sito Raspberry per capire se la mia scheda fosse 32 o 64 bit.

Non me la sono data per vinta e non volevo andare a letto senza averci capito qualcosa in più.
Quindi

sudo apt-get install lshw

lshw

Ho così capito che in realtà si trattava di una 32 bit e non di una 64bit.

 

Scarico la versione, Installo da terminale come detto nel messaggio di prima e tutto funziona.

47 minuti fa, barbo ha scritto:

Per ora ho provato a questi comandi (dopo averlo estratto)   


~/Downloads/arduino-1.8.12 $ sudo ./arduino-linux-setup.sh root

Riavvio il raspy e poi:


~/Downloads/arduino-1.8.12 $ sudo ./install.sh

 

Grazie a tutti ancora

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...