Go Down

Topic: Sketch Multi-File chiarimenti (Read 2433 times) previous topic - next topic

mimmo1994

May 16, 2014, 10:01 am Last Edit: May 16, 2014, 10:05 am by mimmo1994 Reason: 1
Ho già trovato questo:  http://jamesreubenknowles.com/multiple-source-files-with-the-arduino-ide-1618
e questo: http://arduino.cc/en/Hacking/BuildProcess

Ma non ho compreso bene come interagiscono le schede create.
Qualcuno potrebbe spiegare in maniera elementare come funziona anche con qualche semplice sketch di esempio?
Vi ringrazio.

mimmo1994

Facciamo un esemio. Voglio fare la gestione del display con il codice principale e la gestione del sensore con la sceda creata.
riporto lo sketch:
SKETCH PRINCIPALE
Code: [Select]

#include <LiquidCrystal.h>
#include "DHT.h"
#include "dht11"

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// connessione display (pin)

void setup() {

 
lcd.begin(16, 2);
// imposto il tipo di display (colonne, righe)
lcd.print("TEMP");
lcd.setCursor(10,0);
lcd.print("SET");
lcd.setCursor(0,1);
lcd.print("UMID");
lcd.setCursor(10,1);
lcd.print("SET");

}

void loop() {



// posiziono il cursore alla colonna 12 e riga 0
lcd.setCursor(5, 0);
lcd.print(t1);
lcd.setCursor(14, 0);

lcd.print(h1);

}


SKETCH SECONDARIO

Code: [Select]
# Include "Arduino.h"
#include "DHT.h"
#ifdef dht11

#define TH1 22 //indico che il sensore posizionato in INGRESSO-BIBLIOTECA è collegato al pin 22
// Pin a cui vengono collegati i 5 sensori
#define DHTTYPE DHT11
// dht11 è il tipo di sensore che uso
DHT dht1(TH1, DHTTYPE); //nel programma i sensori posizionati nelle zone prenderanno il nome di dht1-dht2...


    void loop Processdht11() {
  int t1 = dht1.readTemperature();
int h1 = dht1.readHumidity();
  }

uwefed

L' IDE mette tutti tab insieme quando compili.
Ci sono alcune regole perché il compilatore trovi tutte le variabili e funzioni che adesso non so dirti a memoria.
Ciao Uwe

leo72

Credo che le alleghi in ordine alfabetico (anche se non ne sono sicuro al 100%), ma a parte questo le tab sono parti dello sketch principale quindi nella tab secondaria non devi includere gli... #include solo nella 1° tab.

mimmo1994

Quindi void setup e void loop non le posso mettere nelle estensioni?
Quindi a cosa serve fare delle estensioni del programma? Serve solo per dichiarare delle variabili?

mimmo1994

A cosa serve creare delle schede, solo per dichiarare variabili?

dab77


mimmo1994

Il senso di quello che voglio dire è che serve per dividere le variabili in ordine. Mettiamo il caso di avere 3 sensori diversi creo 3 schede aggiuntive dichiarando le variabili per questi 3 sensori. Poi nel programma principale richiamo le variabili ed eseguo le funzioni.
Giusto? Non serve ad altro?

leo72

"Richiami le variabili"? Che vuol dire, scusa? Casomai puoi creare delle funzioni che leggono i 3 sensori e ti restituiscono i valori letti. Puoi creare 2 tab, una col codice principale contenente il setup() ed il loop() ed una tab con il codice di lettura dei 3 sensori. Ma è solo una questione puramente organizzativa, non è né necessario fare così né sempre conveniente. Se hai uno sketch di 50 righe non so che vantaggi tu possa avere a dividere tutto in più tab. Diverso è il caso di un programma di 1000/1500 righe....

Go Up