File.h

Ciao a tutti,
Volevo usare i file con estensione .h per inserire parte del codice in un file, in un altro file .h inserire sole variabili questo per far si che un programma nel loop non diventi lungo innumerevoli righe di codice.
Ho fatto delle prove ma se in un file .h inserisco del codice contenente delle variabili scritte sull' IDE di arduino prima del setup la compilazione mi da errore.
Devo magari dichiarare le variabili in qualche altro modo?
Posso inserire le variabili in file .h e dopo richiamarle nel loop o in un Void scritto in un altro file .h ?
Se qualcuno mi puo' aiutare Vi ringrazio in anticipo.

Ma nel programma .ino hai fatti #include del file ??

Ciao, grazie per la risposta, si l'ho messa in include ma il punto è che alcune variabili le leggo in maniera globale su l' ide di arduino anche se sono scritte nel file .h e altre invece nella compilazione mi da errore.
Volevo sapere se io per esempio posso fare un file .h ed inserire delle variabili per poi usarle sull' ide di arduino (qualsiasi variabile) e se al contrario posso scrivere codice sui file .h richiamati con void sull' loop dell' ide arduino anche se le loro variabili sono scritte sull ide di arduino.
Grazie a tutti

Come hai fatto l'include ?
Posta il codice, senza vedere quel che hai fatto è difficile risponderti.
Allega .ino e .h

Ci sono riuscito e ho fato cosi’, posto il codice.ino .h .cpp

Mi potete aiutare su come passare degli ARRAY o delle STRUCT?

Grazie

#include "Librer.h" // includo il file .h della libreria

int arg = 0;

void setup()
{
  // quello che vuoi

}


void loop()
{
  // quello che vuoi

  // uso funz1
  funz1();

  float valore = 6.5;
  
  // uso funz2
  funz2(valore,arg);
Serial.print(arg);
}

LIBRERIA.H

#pragma once

#include <Arduino.h>    

void funz1();
void funz2(float,int& );

FILE.CPP

#include "Librer.h"     
#include "Arduino.h"   
int Somma = 0;

void funz1() 
{
  // corpo di funz1()
}

void funz2(float,int& arg) 
{
  Somma = Somma + 1;
  arg = Somma;
  delay(1000);
  
}

La cosa migliore per array e struct è passarle per puntatore.

Esempio array:

int arr[10];
...
long somma=SommaElementi(arr,10);  // arr è già un puntatore al primo elemento
...
long SommaElementi(int *pArr, int pcnt)     // pArr puntatore a vettore di int
{ long s=0; 
  for(int i=0;i<pcnt;i++)
  { s=s+ *(pArr+i);           // invece di pArr[i]
  }
  return s;
}

Grazie per la tua risposta, ho fatto delle prove su questo progetto ma non riesco a far passare il valore ValSerial1[9] e comunque sia dovrei far passare anche gli altri dell’ ARRAY.
Grazie dell’ eventuale aiuto

#include "Librer.h" // includo il file .h della libreria

int arg = 0;
uint8_t ValSerial1[9]; 

void setup()
{
  // quello che vuoi

}


void loop()
{
  // quello che vuoi

  // uso funz1
  funz1();

  float valore = 6.5;
  
  // uso funz2
  funz2(valore,&arg);
Serial.print(arg);

if (&ValSerial1[9] == 1)
{

// faccio qualcosa
}

}

//////////////////////////////////////////////////////////////////////////////

#include "Librer.h"     
#include "Arduino.h"   
int Somma = 0;

void funz1() 
{
  // corpo di funz1()
}

void funz2(float,int*arg,uint8_t *ValSerial1[]) 
{
  Somma = Somma + 1;
  *arg = Somma;
  delay(1000);

 if  (Somma == 5)
 {
  *ValSerial1[9] = 1;
 }
  
}

////////////////////////////////////////////////////////////////////////////////////////////

#pragma once

#include <Arduino.h>    

void funz1();
void funz2(float,int*,uint8_t* );

O usi i puntatori o usi le quadre. Ti consiglio un manualetto sul C, sezione passaggio parametri.