Non ho ancora capito come costruire un codice per far leggere ad arduino più sensori insieme. Le varie guide che trovo su internet seguono stili completamente diverse dal mio libro.
Chi mi può aiutare?
Non ho ancora capito come costruire un codice per far leggere ad arduino più sensori insieme. Le varie guide che trovo su internet seguono stili completamente diverse dal mio libro.
Chi mi può aiutare?
Le varie guide che trovo su internet seguono stili completamente diverse dal mio libro.
Una frase così a noi non dice purtroppo niente!!
Per leggere più ingressi contemporaneamente se fossero digitali potresti fare:
void setup()
{
for(byte pin=2; pin<6; pin++)
pinMode( pin, INPUT );
}
void loop()
{
boolean StatoPin2 = digitalRead( 2 );
boolean StatoPin3 = digitalRead( 3 );
boolean StatoPin4 = digitalRead( 4 );
boolean StatoPin5 = digitalRead( 5 );
}
In questo modo leggi 4 pin digitali uno di seguito all'altro a distanza di pochi microsecondi, che per noi umani equivale a dire contemporaneamente
Il discorso vale anche per gli ingressi analogici, solo che devi sostituire il tipo di variabile con "int" e la funzione con "analogRead()"
La Tua domanda é molto generica.
Piú sensori possono essere letti solo uno dopo l' altro.
A secondo del tipo di sensore si deve leggere in modo diverso.
Ciao Uwe
se sono digitali puoi leggere i registri e quindi 8 pin contemporaneamente. Arduino Reference - Arduino Reference
però non credo proprio che sia quello che ti serva, e sicuramente quasta via ti complica la vita
Io direi che noi (loro) si possono sbattere come vogliono a risponderti, ma dovresti porre la domanda in un modo migliore. Te lo dice una persona che si è presa e si prende le migliori partacce, ma piano piano sto imparando. Siamo persone che chiedono e già questo ci dovrebbe far capire che stiamo usufruendo del tempo di altre persone per nostri scopi, quindi almeno spendere un pò di più del nostro tempo per farne spendere di meno a chi ci aiuta
Scusa lo scioglilingua, ma così perdi un pò di tempo a leggere (tempo tuo) :)!!!
Ciao!
f.schiano:
Siamo persone che chiedono e già questo ci dovrebbe far capire che stiamo usufruendo del tempo di altre persone per nostri scopi, quindi almeno spendere un pò di più del nostro tempo per farne spendere di meno a chi ci aiuta
Giustissimo ![]()
Troppo spesso sui forum, parlo in generale, ci sono "personaggi" che fanno richieste assurde, pretendono risposte immediate, non danno nessun dettaglio, e si "arrabbiano" se non ricevono in breve tempo le risposte.
Spesso e volentieri fornire tutti i dettagli del problema, quindi ampia descrizione, schemi, foto, eventuali link, permette di risolvere in tempi brevi ed evita di far perdere tempo a chi risponde.
stefa24:
ciao
vedi questo
http://www.gioblu.com/index.php?option=com_content&view=article&id=73:tutorial-gpio-port-expander-e-arduino&catid=39:comunicazione&Itemid=6
non centra un fico secco!!
OK, vi invio il mio sketch.
#include <LiquidCrystal.h>
int pin = 0; // analog pin
int tempc = 0,tempf=0; // temperature variables
int samples[8]; // variables to make a better precision
int maxi = -100,mini = 100; // to start max/min temperature
int i;
void setup()
{
Serial.begin(9600); // start serial communication
}
void loop()
{
for(i = 0;i<=7;i++){ // gets 8 samples of temperature
samples = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
_ tempc = tempc + samples*;_
_ delay(1000);_
_}_
tempc = tempc/8.0; // better precision
tempf = (tempc * 9)/ 5 + 32; // converts to fahrenheit
if(tempc > maxi) {maxi = tempc;} // set max temperature
if(tempc < mini) {mini = tempc;} // set min temperature
Serial.print(tempc,DEC);
Serial.print(" Celsius, ");
Serial.print(tempf,DEC);
Serial.print(" fahrenheit -> ");
Serial.print(maxi,DEC);
Serial.print(" Max, ");
Serial.print(mini,DEC);
Serial.println(" Min");
tempc = 0;
delay(1000); // delay before loop
_}*_
Con questo leggo la temperaturatura da un sensore, ma vorrei che insieme fosse letto il sensore dell'umidità. Come vi dicevo queste stringhe non sempre sono riportate sul mio manuale e quindi non so come, e dove, inserire i prossimi dati per le letture corrette
Per primo che sensore hai?
Stai facendo 8 letture di temperatura con intervallo di 1 secondo. Se vuoi anche misurare l'umiditá basta quando leggi il sensore di temperatura leggere anche il sensore di umiditá e sommarlo in un altra variabile. Poi trasformare il valore letto in percentuale di umiditá. La formula e i fattori di calcolo dipendono dal sensore.
Ciao Uwe
Ho questo sensore qui
Adesso capisco il Tuo problema. Il sensore che hai cambia la sua capacitá in funzione dell'umiditá.
Non so aiutarti.
La cosa piú semplice é che Ti compri un altro sensore come esempio :
http://www.robot-italy.com/product_info.php?cPath=15_160&products_id=1695 con un interfaccia digitale
http://www.robot-italy.com/product_info.php?cPath=15_51&products_id=1355 analogico (una tensione proporzionale alla umiditá).
Ciao Uwe
in che senso cambia la sua capacità, come se fosse un condensatore?
edit: sì, quindi in pratica fai così:
collegi il + al pin 1 e gnd con resistenza da 2,2k e il - al pin 2, nomi di fantasia eh.
1 sarà un output digitale, il 2 un input analogico.
Quando devi fare una lettura, metti il 5 ad high, e controlli da questo momento quanto tempo ci vuole che in pin 6 diventi 0V (in pratica hai il tempo di carica, che sarà uguale al tempo di scarica). a fine carica metti il pin 1 a low, e prima della prossima lettura attendi il tempo di scarica, altrimenti ti sfasa la lettura.
Sí, da 163pF a 201pF.
http://www.parallax.com/Portals/0/Downloads/docs/prod/sens/27920_HS1101-Datasheet.pdf
Ciao Uwe
Ho capito, butto il sensore
perchè lo butti?
ti ho scritto come fare, pittosto spediscimelo che lo uso io ![]()
Perchè ho qualche difficoltà a compilare lo sketch correttamente
posta lo sketch e gli eventuali errori di compilazione, una mano te la do volentieri, se non altro perchè è la prima volta che sento di sensori del genere (con arduino e l'elettronica in generale ho iniziato da poco, un'anno tra qualche giorno)
Il problema è che non ho capito molto bene il funzionamento del sensore
il sensore funziona da condensatore... se non sai cos'è un condesatore immaginati una batteria scarica, ma particolare. Quando è carica, apre il circuito (cioè non fa passare corrente, come se spegnessi la luce).
successivamente, per scaricare il condensatore, basta toglierli la corrente "di carica" e lui si scarica da solo.
quindi
A---C---B
A = corrente di carica
C = condensatore
B = corrente di scarica
Quando C è scarico, B=A=0
diamo corrente 5V in A otterremo
B=A=5V
Quando C è carico, A=5v, B=0!
a questo punto spegnamo A...
A=0, B=5v!
Ora, il tempo di carica è (in un condensatore) sempre uguale al tempo di scarica.
Il tuo sensore è in grado di variare il tempo di carica/scarica: è questo valore che devi misurare!
Ho capito, vediamo se con la mia piccola piccola guida ne ricavo qualcosa. Dubito però visto che insegna i passaggi base.