555 e pulsein

dovrei richiamare pulsein e poi alzare lo stato di un pin per alcuni istanti, il problema è che non so come fare.

float T=0;

void setup() 
{
  Serial.begin(9600);
}


void loop() 
{
 T = pulseIn(8,HIGH,2000000);
  digitalWrite(12,HIGH);
  delay(1);
  digitalWrite(12,LOW);
  Serial.println(T);

cosi non funziona, stessa cosa se pulsein lo metto dopo l'accensione del pin.

devo ricorrere a gli interrupt o mi sfugge qualcosa?

pulseIn blocca il controller. Devi dare l' impulso prima di chiamare pulseIn.
Ciao Uwe

dici una cosa del genere?

float T=0;

void setup() 
{
  Serial.begin(9600);
}


void loop() 
{
  digitalWrite(12,HIGH);
  delay(1);
  digitalWrite(12,LOW);
   T = pulseIn(8,HIGH,2000000);
  Serial.println(T);
}

ho gia provato e non funziona, credo sia colpa di come è fatta pulsein, che trovando il pin gia a stato alto aspetta che passi a basso e poi ancora alto prima di iniziare a "contare" il tempo

forse se spieghi un pò meglio quello che vuoi fare riusciamo anche a darti una mano.

chi e' che dà un'impulso che tu possa leggere con la Pulsein ? e' esterno o da un'altro pin di Arduino ?

non avete tutti i torti :grin:

vorrei fare un misuratore di capacità, sfruttando la configurazione monostabile del 555.

dovrei far iniziare il ciclo del 555 e sapere quanto tempo è a livello alto la sua uscita, ma pulsein non riesco a farla funzionare, essendo che appena alzo lo stato del pin il 555 alza la sua uscita e pulsein aspetta un altro cambio stato.

c'e qualche modo sw per farlo o devo ricorrere a hw esterno?

un po OT ma non troppo, ho visto ardutestere TestatoTester, che sarebbero anche meglio.

ho visto che la cosa sembra essere morta, pensate possa valere la pena indagare piu a fondo o non si riesce a farne nulla?

visto che ci sono mille mila Esempi , hai dato un'occhiata ?

Scusa, mi sono espresso male , ho gia dato un occhio, e il sistema col 555 lo preferisco, mi riferivo a come coniugare l'accensione del 555 con pulsein

invece della pulseIn usa degli Interrupt.
Quando avvii il 555 assegni ad una variabile il valore di millis() e con una ISR controlli quanto tempo e’ trascorso sino al prossimo fronte di discesa

oppure come fanno Qui , con due Interrupt.
Con il fronte di salita danno lo Start, con quello di discesa lo Stop

perfetto! era lo spunto che mi serviva, ho gia raffinato un po il codice e rispetto ad un tester che misura le capacita si discosta di pochissimo, 1% su 0.1uF e 0.3% su 47uF!

stavo pensando, per aumentare la precisione o diminuire il tempo necessario per la misurazione, sarebbe comodo poter cambiare resistenza al volo, lo schema è questo:

sarebbe possibile farlo connettendo o meno le resistenze a vcc?

in tal caso, oltre che con un relè, si potrebbe fare con un transistor?
un bjt andrebbe bene (magari applicando qualche correzione via sw) o bisogna ricorrere a un fet vista la loro bassa caduta di tensione?

ci sono anche multiplexer analogici, come ad esempio il CD4051 a 8 porte, o il CD4067 con 16 porte.
o il CD4066 con 4 porte separate

stavo pensando che alla fine, il progetto lo rendero standalone, e lo alimenterò con una batteria a 9v.

una cosa come lo schema allegato potrebbe andare bene? per staccare o meno l’alimentazione poi metterei qualche transistor sui 5v di riferimento.

credo che i multiplexer analogici non vadano bene perche non devono solo dare una tensione di segnale, ma anchge dare qualche ma di corrente, e guardando il datasheet del 4066 vedo che ha una resistenza di 150-250 ohm, un po troppa per cio che devo fare

Cattura.PNG