Go Down

Topic: ShiftOut diversa (Read 406 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy