BitWrite e DigitalRead

Ciao a tutti,
ho provato a cercare in giro ma non ho trovato post a riguardo..
Vorrei capire se posso fare una cosa del genere:

byte var = B00000000;
bitwrite (var,0,digitalread(inputpin1));
bitwrite (var,1,digitalread(inputpin2));
bitwrite (var,2,digitalread(inputpin3));
bitwrite (var,3,digitalread(inputpin4));

So che potrei farlo su arduino e compilarlo ma non ho sottomano un pc con l'ide installato e mi sto scribacchiando il codice su un foglio di testo per poi portarlo in "produzione" appena rientro a casa

La necessità sarebbe quella di scrivere lo stato di un pin ingresso in una variabile byte

grazie
ciao

Non mi risulta che a funzione BitWrite faccia parte del "corredo" di arduino...

Comunque se ti può servire, io per gestire i singoli bit mi avvalgo di queste macro:

#define setBit(var, bitnum)   (var)|=(1<<(bitnum))
#define resBit(var, bitnum)   (var)&=~(1<<(bitnum))
#define clearBit(var, bitnum) (var)&=~(1<<(bitnum))
#define testBit(var, bitnum)  (var)&(1<<(bitnum))

che puoi utilizzare nel tuo esempio così:

byte var = B00000000;
if(digitalread(inputpin1)) {setBit(var, 0);}else{resBit(var, 0);}
if(digitalread(inputpin2)) {setBit(var, 1);}else{resBit(var, 1);}
if(digitalread(inputpin3)) {setBit(var, 2);}else{resBit(var, 2);}
if(digitalread(inputpin4)) {setBit(var, 3);}else{resBit(var, 3);}

n.b. clearBit() e resBit() sono la stessa cosa ma a volte mi risulta più chiaro differenziare nella rilettura del codice :wink:

ma questo? http://arduino.cc/en/Reference/BitWrite

:-[ Ha ragione brainbooster!!!! :-[

non avevo controllato nella sezione " Language (extended) " .. e sono talmente abituato alle mie piccole funzioni che non l'avevo mai cercato così "a fondo"...

Chiedo scusa ::slight_smile:

tranquillo, tanto nessuno si aspetta che chi scrive sul forum ricordi tutta la reference a memoria :slight_smile: e poi meglio una cosa non detta che una detta sbagliata no?

in pratica con Bitwrite(); si sostituisce a setbit(); e resbit();
molto comodo, ma in alcuni casi è meglio distinguerli non trovate?