Ho un problema con bitRead.
Se eseguo bitRead passando nel serial monitor la lettera 'A', in modo che la funzione diventa così bitRead('A', 0), ottengo giustamente il valore 1, perchè il valore ASCII di 'A' è 1000001 e la prima posizione è 1.
Tutto è ok.
I problemi nascono quando io cerco di eseguire bitRead dopo tutte le altre funzioni.
Nel mio codice, bitRead ritorna sempre zero e non capisco perchè.
Sembra che la variabile 'Valbit' viene in qualche modo 'sporcata' dalle funzioni precedenti, e il risultato finale è sempre 0.
Il problema non si verifica quando eseguo bitRead da sola, senza le altre funzioni precedenti.
Perchè è così?
Grazie a tutti per l'aiuto.
char Valbit;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if (Serial.available()>0){
Valbit=Serial.read();
Serial.print("VALUE= ");
Serial.print(Valbit);
Serial.print(" DECIMAL VAL= ");
Serial.print(Valbit,DEC);
Serial.print(" BINARY VAL= ");
Serial.println(Valbit,BIN);
//bitSet(Valbit, 1); Sets (writes a 1 to) the given bitPositionof variable x
byte bitset=bitSet(Valbit, 0);
Serial.print("bitSet= ");
Serial.write(bitset);
Serial.print(" DECIMAL bitSet= ");
Serial.print(bitset,DEC);
Serial.print(" BINARY bitSet= ");
Serial.println(bitset,BIN);
//bitClear(x, bitPosition); Clears (writes a 0 to) the given bitPosition of variable x
byte bitclear=bitClear(Valbit, 0);
Serial.print("bitClear= ");
Serial.write(bitclear);
Serial.print(" DECIMAL bitClear= ");
Serial.print(bitclear,DEC);
Serial.print(" BINARY bitClear= ");
Serial.println(bitclear,BIN);
//bitWrite(x, bitPosition, value) Sets the given value (as 0 or 1) of the bit at the given bitPositionof variable x
byte bitwrite=bitWrite(Valbit, 4,0);
Serial.print("bitWrite= ");
Serial.write(bitwrite);
Serial.print(" DECIMAL bitwrite= ");
Serial.print(bitwrite,DEC);
Serial.print(" BINARY bitwrite= ");
Serial.println(bitwrite,BIN);
//bitRead(x, bitPosition); Returns the value (as 0 or 1) of the bit at the given bitPositionof variable x
int bitread=bitRead(Valbit, 0);
Serial.print("bitRead= ");
Serial.println(bitread);
}
}