Capo d'Orlando
Offline
Sr. Member
Karma: 0
Posts: 305
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
|
 |
« Reply #30 on: January 02, 2013, 11:15:42 am » |
Uso uno shield sd, quindi questa guida è valida lo stesso ? http://arduino.cc/forum/index.php/topic,37604.0.htmlEDIT: ho verificato il demo: spi_init(); was not declared to this scope ! Uso un Mega e finiscono tutti i miei problemi ?
|
|
|
|
« Last Edit: January 02, 2013, 11:17:22 am by anerDev »
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #31 on: January 02, 2013, 11:32:14 am » |
Stavo provando a compilare lo sketch che hai postato all'inizio, ma non capisco che libreria DHT hai usato. Questa, forse ? https://github.com/ringerc/Arduino-DHT22(edit: volevo verificare il consumo di RAM inserendo la macro F() su tutte le stringhe...)
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16502
Don't know what I do
|
 |
« Reply #32 on: January 02, 2013, 11:33:39 am » |
@anerDev: vedo che quel thread è del 2009, sicuramente è per una versione dell'IDE vecchia per cui potrebbero esserci problemi di compatibilità. Anch'io ho usato la PetitFs con l'IDE 002x, non l'ho mai usata con la 1.0.x
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
Sr. Member
Karma: 0
Posts: 305
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
|
 |
« Reply #33 on: January 02, 2013, 11:34:51 am » |
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #34 on: January 02, 2013, 11:38:59 am » |
pre_final3_at_sd.ino, come l'hai postato tu, mi dà:
avr-size -C sketch_jan02a.cpp.elf AVR Memory Usage ---------------- Device: Unknown
Program: 25412 bytes (.text + .data + .bootloader)
Data: 2391 bytes (.data + .bss + .noinit)
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
Sr. Member
Karma: 0
Posts: 305
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
|
 |
« Reply #35 on: January 02, 2013, 11:39:32 am » |
@leo72
allora penso che è un binario morto questo petit ! :/
Mi consigli il Mega ?
EDIT:
@tuxduino coincide ... Usano troppa ram !
|
|
|
|
« Last Edit: January 02, 2013, 11:42:52 am by anerDev »
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #36 on: January 02, 2013, 11:44:12 am » |
Hey, 'spe che secondo me ci sono margini di miglioramento  Ad esempio, comincia con eliminare cose come questa: Serial.println("**************************************"); Inoltre invece di ripetere n-volte istruzioni come Serial.print(";"); potresti creare una che include solo quell'instruzione e richiamare tale funzione invece di duplicare il codice. void serialPrintSemicolon() { Serial.print(";"); }
Sto facendo un po' di questi esperimenti per vedere l'effetto di queste modifiche unitamente all'uso della macro F().
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #37 on: January 02, 2013, 11:46:45 am » |
AVR Memory Usage ---------------- Device: Unknown Program: 25412 bytes (.text + .data + .bootloader) Data: 2025 bytes (.data + .bss + .noinit) 
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
Sr. Member
Karma: 0
Posts: 305
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
|
 |
« Reply #38 on: January 02, 2013, 11:52:51 am » |
Ho tolto completamente il: Serial.println("**************************************"); Ho fatto la funzione void colonna() { Serial.print(";"); } e sostituito tutti i Serial.print(";"); con colonna(); Ecco il risultato: AVR Memory Usage ---------------- Device: Unknown
Program: 25322 bytes (.text + .data + .bootloader)
Data: 2350 bytes (.data + .bss + .noinit) Non coincide col tuo ! O.0
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #39 on: January 02, 2013, 11:54:47 am » |
Altra cosa... si potrebbe verificare se le dimensioni delle variabili (smsbuffer, ad esempio) che dichiari siano strettamente necessarie, o se si posa "fare con meno"... Chiaro, con un mega tagli la testa al toro 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #40 on: January 02, 2013, 11:57:33 am » |
AVR Memory Usage ---------------- Device: Unknown Program: 25346 bytes (.text + .data + .bootloader) Data: 2025 bytes (.data + .bss + .noinit) #include "Wire.h" #include "SoftwareSerial.h" #include "SD.h"
// Dichiarazioni modulo SD File record;
// Dichiarazioni modulo MPL115A2 #include "Adafruit_MPL115A2.h" Adafruit_MPL115A2 mpl115a2;
// Dichiarazioni modulo DHT #include "DHT.h" #define DHTPIN 5 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE);
// Dichiarazioni modulo GSM/GPS #include "SIM900.h" #include "sms.h" #include "gps.h"
SMSGSM sms; int numdata; char smsbuffer[160]; char n[20];
GPSGSM gps; char lon[15]; char lat[15]; char alt[15]; char time[20]; char vel[15]; char msg1[5]; char msg2[5]; char stat; char inSerial[20]; int i=0; boolean started=false;
void setup() { Serial.begin(9600);
dht.begin();
mpl115a2.begin();
Serial.println(F("CONTROLLO COMUNICAZIONE MODULI IN CORSO"));
// Controllo stato modulo DHT if (isnan(dht.readTemperature()) || isnan(dht.readHumidity())) { Serial.println(F("Modulo DHT: ERRORE")); } else { Serial.println(F("Modulo DHT: OK ")); }
// Controllo stato modulo MPL115A2 if (isnan(mpl115a2.getPressure())) { Serial.println(F("Modulo MPL115A2: ERRORE")); } else { Serial.println(F("Modulo MPL115A2: OK ")); }
// Controllo stato modulo GSM/GPS if (gsm.begin(2400)) { Serial.println(F("Modulo GSM/GPS: OK")); gsm.forceON(); //To ensure that SIM908 is not only in charge mode started=true; } else { Serial.println(F("Modulo GSM/GPS: ERRORE")); } Serial.println(F("\tReset del GPS in corso, 60 secondi")); gsm.SimpleWriteln(F("AT+CGPSRST=1")); delay(60000); Serial.println(F("\tAttivazione del GPS in corso, 180 secondi")); gsm.SimpleWriteln(F("AT+CGPSPWR=1")); delay(180000);
Serial.println(); };
void loop() { record = SD.open("record.txt", FILE_WRITE); if (record) {
serialhwread(); gsm.SimpleRead();
delay(20000); //Time for fixing
gps.getPar(lon,lat,alt,vel,time);
// if (alt < 80) sms.SendSMS("3339921212", lat, lon); //Invia coordinate
record.print(lat); record.print(";"); Serial.print(lat); Serial.print(';');
record.print(lon); record.print(";"); Serial.print(lon); Serial.print(';');
record.print(alt); record.print(";"); Serial.print(alt); Serial.print(';');
record.print(dht.readTemperature()); record.print(";"); Serial.print(dht.readTemperature()); Serial.print(';');
record.print(dht.readHumidity()); record.print(";"); Serial.print(dht.readHumidity()); Serial.print(';');
record.print(mpl115a2.getPressure()); record.print(";"); Serial.print(mpl115a2.getPressure()); Serial.print(';');
record.println(""); Serial.println("");
record.close();
} else {
Serial.println(F("ERRORE scrittura record")); }
delay(40000);
}
void serialhwread(){ i=0; if (Serial.available() > 0){ while (Serial.available() > 0) { inSerial[i]=(Serial.read()); delay(10); i++; }
inSerial[i]='\0'; if(!strcmp(inSerial,"/END")){ Serial.println("_"); inSerial[0]=0x1a; inSerial[1]='\0'; gsm.SimpleWriteln(inSerial); } //Send a saved AT command using serial port. if(!strcmp(inSerial,"TEST")){ // Serial.println("BATTERY TEST 1"); // gps.getBattInf(msg1,msg2); // Serial.println(msg1); // Serial.println(msg2); // Serial.println("BATTERY TEST 2"); // gps.getBattTVol(msg1); // Serial.println(msg1); stat=gps.getStat(); if(stat==1) Serial.println(F("NOT FIXED")); else if(stat==0) Serial.println(F("GPS OFF")); else if(stat==2) Serial.println(F("2D FIXED")); else if(stat==3) Serial.println(F("3D FIXED")); } //Read last message saved. if(!strcmp(inSerial,"MSG")){ Serial.println(msg1); } else{ Serial.println(inSerial); gsm.SimpleWriteln(inSerial); } inSerial[0]='\0'; } }
void serialswread(){ gsm.SimpleRead(); }
La funzione printSemicolon() è una stupidaggine... evidentemente il compilatore è abbastanza "intelligente" da ottimizzare da solo questo aspetto. PS: Uso Arduino 1.0.3 su Linux 32 bit. Scheda selezionata: Arduino 2009.
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
Sr. Member
Karma: 0
Posts: 305
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
|
 |
« Reply #41 on: January 02, 2013, 11:59:09 am » |
Purtroppo per le variabili avebo pensato la stessa cosa, ma provando non funziona più niente ! huahuahu Allora dato che con il Mega risolvo il problema, opterò per quello ! Grazie 10000000 !!! EDIT: ho usato il tuo sketch: VR Memory Usage ---------------- Device: Unknown
Program: 25342 bytes (.text + .data + .bootloader)
Data: 2024 bytes (.data + .bss + .noinit)
Niente, Mega è la soluzione ! Anche perchè dovrò aggiungere il trasmettitore !
|
|
|
|
« Last Edit: January 02, 2013, 12:01:04 pm by anerDev »
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #42 on: January 02, 2013, 12:04:47 pm » |
Certo, anche se riuscissi a "tagliare" fino a rientrare nei 2k, poi con l'aggiunta di un altra libreria sforeresti di nuovo. Vai col mega, dunque 
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
Sr. Member
Karma: 0
Posts: 305
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
|
 |
« Reply #43 on: January 02, 2013, 12:08:10 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
|
 |
« Reply #44 on: January 02, 2013, 12:10:52 pm » |
Ricambio 
|
|
|
|
|
Logged
|
|
|
|
|
|