Pages: 1 ... 10 11 [12] 13 14 ... 46   Go Down
Author Topic: Ardu-Aquarium Controller v. 3.3.1  (Read 61176 times)
0 Members and 1 Guest are viewing this topic.
0
Online Online
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

prova a rimuovere

Code:
GLCD.DrawBitmap(ArduinoIcon64x64, 32,0, BLACK); //draw the bitmap at the given x,y position

ed anche

Code:
#include "bitmaps/allBitmaps.h"

così dovresti risparmare lo spazio (credo in ram) di quella immagine 64*64, e vediamo se hai ancora problemi
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho provato ma non cambia nulla fa le sue solite 13 misure poi tutto tace...il led sulla stamp lampeggia quindi comunica ma non stampa nè sul monitor seriale nè sul GLCD...lo sketch dell'atlas funziona bene su entrambi i video anche se ha la noia di dare l'input dal monitor e io non so riscriverlo come fosse una sonda di temperatura non sono in grado. Ho pensato ma non può cancellare dalla ram il dato ad ogni rilevazione? E come mai stampa su entrambi i monitor lentamente invece che ogni 262 millisecondi come fa normalmente? Scusate la mia ignoranza assoluta!!!!!
Logged

0
Online Online
Shannon Member
****
Karma: 131
Posts: 10468
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la ram è occupata dalle variabili. Il semplice sketch della sonda non crea nuove variabili, quindi non accumula ram.

o meglio, usano della ram temporaneamente che poi viene liberata. evidentemente però la GLCD usa tanta ram e probabilmente in un momento in cui anche quella del sensore la richiede, andando in errore (che poi l'errore avvenga sempre ogni tot è un buon segno, vuol dire che una volta risolto sai come controllare di averlo effettivamente risolto)... infatti la sonda via seriale funziona bene. (giusto?)

Per il fatto che ci metta tanto devi considerare che arduino fa molta fatica ad elaborare immagini, anche se semplici come caratteri da stampare. ecco dove se ne va il tuo tempo in più
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho provato a togliere tutte le righe per fare il simbolo del grado la "C" e "Ph" per risparmiare ram ho lasciato le rilevazioni pure ma senza guadagno sempre 13 rilevazioni poi stop....eppure questo codice
Code:
#include <glcd.h>
#include "fonts/allFonts.h"         // system and arial14 fonts are used
#include "bitmaps/allBitmaps.h"

String inputstring = "";                                                       //a string to hold incoming data from the PC
String sensorstring = "";                                                      //a string to hold the data from the Atlas Scientific product
boolean input_stringcomplete = false;                                          //have we received all the data from the PC
boolean sensor_stringcomplete = false;                                         //have we received all the data from the Atlas Scientific product


  void setup(){                                                                //set up the hardware
     Serial.begin(38400);                                                      //set baud rate for the hardware serial port_0 to 38400
     Serial3.begin(38400);                                                     //set baud rate for software serial port_3 to 38400
     inputstring.reserve(5);                                                   //set aside some bytes for receiving data from the PC
     sensorstring.reserve(30);                                                 //set aside some bytes for receiving data from Atlas Scientific product

 GLCD.Init(NON_INVERTED);   // initialise the library, non inverted writes pixels onto a clear screen
 GLCD.ClearScreen();
 GLCD.DrawBitmap(ArduinoIcon64x64, 32,0, BLACK); //draw the bitmap at the given x,y position
 GLCD.SelectFont(System5x7); // switch to fixed width system font
 GLCD.ClearScreen();}
 
 
 
   void serialEvent() {                                                         //if the hardware serial port_0 receives a char             
               char inchar = (char)Serial.read();                               //get the char we just received
               inputstring += inchar;                                           //add it to the inputString
               if(inchar == '\r') {input_stringcomplete = true;}                //if the incoming character is a <CR>, set the flag
              } 


  void serialEvent3(){                                                         //if the hardware serial port_3 receives a char
              char inchar = (char)Serial3.read();                              //get the char we just received
              sensorstring += inchar;                                          //add it to the inputString
              if(inchar == '\r') {sensor_stringcomplete = true;}               //if the incoming character is a <CR>, set the flag
             }



 void loop(){                                                                   //here we go....
     
  if (input_stringcomplete){                                                   //if a string from the PC has been recived in its entierty
      Serial3.print(inputstring);                                              //send that string to the Atlas Scientific product
      inputstring = "";                                                        //clear the string:
      input_stringcomplete = false;                                            //reset the flage used to tell if we have recived a completed string from the PC
      }

 if (sensor_stringcomplete){                                                   //if a string from the Atlas Scientific product has been recived in its entierty
      Serial.println(sensorstring);                                            //send that string to to the PC's serial monitor
      //delay(2000);
      GLCD.CursorTo(0, 6);              // positon cursor
      GLCD.Puts("Ph ");
      GLCD.print(sensorstring);
      sensorstring = "";                                                       //clear the string:
      sensor_stringcomplete = false;                                           //reset the flage used to tell if we have recived a completed string from the Atlas Scientific product
      }
 }



funziona perfettamente. Questo è il codice del Ph su GLCD senza temperatura....come faccio a sapere quanta ram usa il mio sketch?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho eseguito il memoryfree e mi restituisce 7305...quindi la ram dovrebbe essere a posto...giusto? Non potrebbe essere un conflitto fra le sonde? Con il GLCD non dovrebbe perchè lo sketch che ho postato prima funziona perfettamente...help!!!! smiley-cry
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

buona sera a tutti ho cercato di riprodurre il circuito di riccardo
non lo ho finito del tutto ma volevo un consiglio da voi se quello che ho fatto fino ad ora potrebbe andare bene,
spero che si riesca a capire bene se è si logicamente poi andra finito e rifatto in un modo migliore  nel frattempo aspetto vostre notizie
grazie
simone

* nuovo circuito stampato.fcd (11.76 KB - downloaded 29 times.)
Logged

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22762
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Per pubblicare un file sarebbe il caso usare un formato più diffuso...
Allega un file Eagle, un file PDF o un'immagine.
Logged


Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

buongiorno
ora ci riprovo a caricare il file e spero che si veda e che possiate consigliarmi e dirmi se per ora vanno bene i collegamenti ,
è ancora da finire e poi andra risistemato
grazie
simone


* CAM00192.jpg (382.71 KB, 2048x1536 - viewed 59 times.)

* fotogen.jpg (315.53 KB, 800x598 - viewed 49 times.)
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Simon,
nel tuo precedente post, insieme al file .fdc allegato, potresti mettere il link al programma utilizzato?
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rici, parlo per la "mia" parte. Se ho ben capito alla fine con quei valori sei riuscito a lavorare con tutte e tre le sonde (ovviamente ognuna con la propria taratura), quindi era come pensavo, il sistema del trimmer di precisione funziona ed è affidabile.
Riguardo l'op-amp (è 358 non 328 vero?) non credo sia lui a dare le oscillazioni, sono invece proprio i valori resistivi che cambiano (non scordare che hai be due R variabili nel tuo sistema!), e lui non fa altro che riportare gli equivalenti valori in tensione, la stabilità ora la puoi ottenere solo via software, con uno dei vari sostemi noti, tipo la media di 20-30 letture, vedrai che la situazione cambierà decisamente in meglio; riguardo la linearità della risposta direi che andrebbe valutata dopo aver stabilizzato le letture col metodo di cui sopra; a quel punto certamente il grande Lesto saprà tirarti fuori un algoritmo di linearizzazione dei valori, ma devi farlo andare a colpo sicuro, cioè fornirgli dei valori certi e più volte verificati, anche in diversi momenti della giornata, alla fine la precisione aumenta per quanti più dati di lettura puoi fornire.

Ciao Michele,
grazie sempre per il tuo tempo, Hai ragione l'op-amp è il 358, ho sbagliato, inoltre è  vero, sono riuscito a far lavorare tutte e tre le sonde con il circuito che ho messo su grazie a te, sul fatto della stabilità, però pensavo che si è vero che ho due resistenze variabili, ma a parte il trimmer multigiro che una volta tarato non cambia più, pensavo che la Rsens a livello dell'acqua stabile e temperatura stabile, mi fornisse un analogread() più stabile cosi come era quando la leggevo direttamente, però giustamente anche quello che dici sulla stabilizzazione via software è un'ulteriore step da fare.

Per quello che riguarda Lesto e le sue elaborazioni...
FIGHISSIMO, ma quante letture sono per sensore? è ottimo! ora che hai le medie devi calcolare la varianza delle varie letture del sensore rispetto alla media (per la stessa temp alla stessa profondità), così hai l'errore di base della sonda.
Poi confronti la varianza alle varie profondità/temperature ed infine la varianza rispetto alle altre sonde (iniziamo con una, le altre vederemo poi). La varianza è di quanti punti si discostano dalla media.
La varianza è la radice quadrata ( ( ( somma di per ogni valore letto  ( differenza tra valore letto e media) al quadrato ) ) fratto il numero di valori )


da http://it.wikipedia.org/wiki/Varianza

Dunque, ho campionato scartando sermpre le prime (100 circa) 100 letture per ogni profondità a 4 temperature diverse ossia 30, 25, 20 e 15 gradi, il tutti per tutti e tre i sensori, ho avuto premura di tenere il più possibile le temperature il più stabile possibile, alla fine quindi abbiamo
per ogni sensore un bel pò di dati.
Oggi pomeriggio ho studiato un pò come funziona la varianza, non credo di aver capito fino in fondo, però l'ho applicata alle tabelle, fortunatamente esisteva già come funzione, vedi se ho fatto bene i compiti se ne hai tempo, ad ogni modo ho calcolato
per ogni profondità la varianza,
quindi la varianza delle varianze,
ed in fondo al foglio la varianza delle varianze precedenti.

https://docs.google.com/spreadsheet/ccc?key=0Ah2GzeM3ZZu4dFg5cmRxVUVyQ2FpMFBtRklDN1JPd2c&usp=sharing

tra l'altro questo mi ha permesso di accorgermi di alcuni dati incongruenti che ho rimisurato, ricostruendo però mi sono accorto che avevo semplicemente sbagliato i copia/incolla... troppi dati  smiley-roll-sweat

Ciao stavo facendo un programma simile ma mi sono dovuto fermare non riesco a capire perchè la sonda del ph mi rileva solo 13 volte il valore poi si impalla. Qualcuno riesce a sistemarmi questo codice?????? smiley-cry...
vi prego!!!!!!

Ciao, non so se hai risolto, ho visto che Lesto ha provato ad aiutarti, io ho dato un'occhiata veloce ma sinceramente, non riesco a capire cosa possa succedere, l'unica cosa che mi viene in mente è che forse sia impostato troppo veloce la seriale, è vero che il PH può avere variazioni "repentine" in casi limite, ma quella velocità mi sembra veramente eccessiva, non mi viene in mente altro, ma fammi sapere come va e se risolvi, perché quel sensore lo avevo già adocchiato.  smiley-wink

buongiorno
ora ci riprovo a caricare il file e spero che si veda e che possiate consigliarmi e dirmi se per ora vanno bene i collegamenti ,
è ancora da finire e poi andra risistemato
grazie
simone

Ciai Simone,
apprezzo davvero tanto il tuo aiuto, ma credo sia prematuro disegnare il pcb ora, tutto il progetto è ancora un work in progres, rischi di lavorare tanto per poi dover modificare ogni volta tutto, poi fai tu, io ti sono comunque grato.
L'unica cosa è che se proprio vuoi disegnarlo, allora ti inviterei ad usare kicad, che è il programma che ho usato per disegnare lo schema, se vuoi ti mando il file originale, così puoi passare più facilmente al PCB.

Ciao a tutti e di nuovo grazie per il supporto che mi state dando.  smiley

Riccardo
« Last Edit: April 13, 2013, 01:53:53 pm by riciweb » Logged

Riccardo

Global Moderator
Italy
Online Online
Brattain Member
*****
Karma: 328
Posts: 22762
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Simon,
nel tuo precedente post, insieme al file .fdc allegato, potresti mettere il link al programma utilizzato?
Dovrebbe essere l'estensione dei file di FidoCad:


Quel software ha alcuni problemi:
1) è solo per Windows;
2) salva in un formato proprietario che non è apribile da Eagle;
3) non mi sembra più sviluppato.

Esiste FidoCadJ, scritto in Java e quindi multipiattaforma. Mi pare abbia uno script per poter esportare almeno i componenti più comuni per Eagle (non lo so per certo, leggo quello che c'è scritto sul forum). Ma se si deve imparare un Cad, tanto vale iniziare con Eagle, difficoltà per difficoltà...
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Interessante FidoCadJ.  smiley-wink
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si.. il programma che ho usato è FIDOCAD E FIDOCADj ,i file si possono aprire con java.
li ho usati svariate volte per fare le PCB e fino ad ora anno lavorato molto bene .
Comunque ora voglio provare anche Kicad cosi se gentilmente Riccardo mi potresti mandare anche il file provo a vedere cosa esce fuori (cosa riesco a combinare).
Lunico modo che ho a disposizione per fare le prove sono le basette millefori quindi sto cercando di riprodurre il circuito.
Per caso nessuno è riuscito a capirci qualcosa sull immagine che ho mandato cosi se per ora mi dite che ho fatto bene posso proseguire e cercare di arrivare al vostro livello.
sempre mille grazie a tutti

simon
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 67
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti e mi scuso in anticipo se vi disturbo ogni volta.
Sono alle prime armi ma ce la sto mettendo tutta per cercare di imparare.
Ho caricato lo Sketch e ora dovrei impostare L ora ma non sò ne dove e ne come, mi potete aiutare?
poi vi volevo chiedere, ho realizato piu o meno l' HW
tranne la parte con i mosfet e i led,
 volevo sapere dove va collegato il trasformatore a 12volt?
perche se non lo collego e anche se carico lo Sketch, penso che non si accende ne l' LCD e niente altro e non posso verificare se funziona
spero di essermi fatto capire e scusatemi per il disturbo
spero che mi posiate aiutare
grazie

simon
Logged

Rome
Offline Offline
Sr. Member
****
Karma: 9
Posts: 378
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Simon,
ti metto in allegato lo schema ed i componenti che ho abbozzato io per realizzarlo, ovviamnete li dovrai aggiungere alle librerie di kicad, gli altri li trovi tranquillamnet in rete, ma se hai difficoltà batti un colpo.

I 12 volt, vanno collegati a monte del regolatore di temzione (LM7805), in particolare il positivo al pin1 (INPUT) ed il negativo al pin2 (GND), i 12v li colleghi anche al Vin di Arduino, e controlli che tutte le masse siano collegate.

Una volta caricato lo sketch, è sufficientre premere OK per entrare nei menù.

Ciao Riccardo.

* schema.rar (6.18 KB - downloaded 29 times.)
Logged

Riccardo

Pages: 1 ... 10 11 [12] 13 14 ... 46   Go Up
Jump to: