centralina dati

salve a tutti sono nuovo in questo mondo quindi spero che portiate pazienza con me.
sto lavorando a questo progetto da un po' di tempo con ottimi risultati ,pero adesso devo evolverlo per avere una serie di dati in più.
adesso mi trovo davanti a due problemi che non riesco a risolvere,praticamente il primo e che dovrei unire due sketch (che provati singolarmente funzionano a dovere) in uno solo quindi il set-up resta uguale ma cambia solo il loop che dovrebbe fare prima "test_1" ,pausa (in millis),test_2 e il secondo e aggiungere al "test_2" un potenziometro digitale che posso regolare indipendentemente dallo svolgimento del programma (cioè con step diversi dal resto del programma).

test_1.ino (2.23 KB)

test_2.ino (2.4 KB)

potenziometro_2.ino (458 Bytes)

Benvenuto. Essendo il tuo primo post, nel rispetto del regolamento, ti chiediamo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO... Grazie.
Qui una serie di link utili, non inerenti al tuo problema:

ciao zen_riberto,

sicuro che lo sketch test_1 faccia quello che vuoi!?...ci sono degli if dove confronti millis() con una temperatura ed un altro con un analogRead()!?

poi ti consiglio di evitare di chiamare variabili con i namespace di arduino...i namespace sono delle parole chiave che hanno già dei loro significati e si riconoscono perchè nel momento che le scrivi assumono un colore diverso dal nero (o arancio o celeste)

stesso per test_2

Ciao Orso vedo che quando scarico i dati dal seriale con PLX-DAQ il risultato e quello che mi serve ,sicuramente anzi si può migliorare ma al momento devo risolvere i due problemi che mi si presentano per andare avanti con i miei test perche devo capire se sto andando verso la direzione giusta!

ok...ma c'è tanta confusione...aiutarti così, almeno per me, è difficile... ti spiego:

in test_1 c'è scritto:

// dichiarazioni variabili:
int sensorValue=0;

// nel setup():
sensorValue=millis();

// nel loop:

if(time>sensorValue+50)               // tempo sensore di posizione
  {sensorValue = analogRead(A0);
   float voltage = sensorValue * (5.0 / 1023.0);}

dove la varibile time, che è un namespace come ti dicevo, la indicizzi ad ogni ciclo del loop con millis()...a sto punto metti millis() diretto...tralasciando anche che nel setup() vuoi assegnare una unsigned long (millis()...32 bit) ad una int (16 bit)...ma poi verifiche se time, che ripeto è millis(), è maggiore di una lettura di un ingresso analogico (valore massimo 1023)+50...dopo il primo secondo sarà sempre vera.

ok ci lavoro e del resto cosa ne pensi ???una confusione!!

prova a spiegare, passo per passo, cosa vuoi fare e vediamo...comunque test_1 e test_2 sono quasi identici

allora ti spiego il tutto
1° uso plx_daq per scaricare i dati in excel dove vado a fare i miei grafici, quindi da qui controllo arduino.
il test_1 inizia a girare poi si ferma e qui io volevo fare una pausa (delay o millis) per poi far partire il test_2 e quindi fermare il loop.
nel seriale quindi vedo i dati dei vari "print"del test_1 e a seguire (dopo la pausa)i dati del test_2 tipo

data time,scale;sensor;tempo;temperatura
data time,scale;sensor;tempo;temperatura
data time,scale;sensor;tempo;temperatura
pausa
data time,scale;sensor;tempo;temperatura
data time,scale;sensor;tempo;temperatura
data time,scale;sensor;tempo;temperatura

poi l'altro problema e gestire il potenziometro digitale nel test_2 in maniera indipendente dallo scorrere del test_2
mi spiego meglio :il potenziometro controlla una scheda di potenza che mi fa variare il voltaggio ad un motore , quindi deve avere un delay/millis indipendente dal resto del test_2

ciao...poi vedo che usi una varibile row che incrementi ad ogni ciclo e se arriva a 20 ti cambia alcune uscite...quindi quante volte vorresti stampare/inviare i dati?

nel test_1 attualmente ne uso 30 e nel test_2 devo verificare perche la cosa e legata al potenziometro digitale ,praticamente il risultato e' un grafico forza /velocità/posizione quindi il potenziometro mi aumenta la posizione di uno step alla volta e tra step e step ci dovrebbero essere almeno quarto row di dati... casino!

una cosa alla volta...test_1

tralasciando cosa istanzi ed inizializzi...vedo che le azioni di lettura e scrittura vengono eseguite tutte nel loop().

subito accendi un LED rosso
poi un LED giallo lampeggia ogni 250 ms
poi fai una cosa che non capisco cosa volevi fare (tempo ciclo!?)
poi fai una stampa di 4 valori (scale.get_units(), sensorValue, tempo, temperatura)
poi spegni tutto...ed accendi un relè.

la questione è...ogni quanto vuoi, o puoi, fare la verifica e quindi la stampa di questi valori e per quante volte in totale?...cioè tra leggere sensorValue e temperatura deve passare un tot di tempo o no?