Go Down

Topic: ShiftOut diversa (Read 397 times) previous topic - next topic

padoang

Volevo paragonare la velocita tra la ShiftOut della libreria di Arduino con una semplice scritta da me, ma quest'ultima non funziona. In particolare questo blocco non va:

mask=B10000000;
   for (n=0;n<=7;n++)
      {
      valBit=valByte & mask;
      if (valBit!=0)
         digitalWrite(pinData,HIGH);
      else
         digitalWrite(pinData,LOW);
      delay(1);
      digitalWrite(pinClock,HIGH);
      delay(1);
      digitalWrite(pinClock,LOW);
      delay(1);
      //digitalWrite(pinData,LOW);
      mask=mask>>1;
      }

leo72

Intanto io toglierei i delay, non credo ti servano. Le operazioni di digitalWrite portano via già del tempo di suo, dovrebbe essere sufficiente.
Poi metti il controllo nel for a n<8.

padoang

Mi rispondo: la routine anche senza i delay e' corretta. Ma funziona solo se definisco mask come int e non come char.
giorgio

leo72

Il tipo "char" è un byte che contiene anche il segno. Prova ad usare il tipo "byte", che è un unsigned char.

Go Up