zdenekpetrzd

74HC595 dual

May 26th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. int dataPin = A1;
  2. int clockPin = A2;
  3. int latchPin = A3;
  4.  
  5.  
  6. // Zpoždění mezi změnami stavu pinu
  7. #define diagDelayMicros 27
  8.  
  9. // Pole se zapisovanými hodnotami
  10. int diagnostika1[24] = {1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0};
  11. int diagnostika2[24] = {0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};
  12.  
  13.  
  14. // Inicializace programu
  15. void setup() {
  16. // Nastavení komunikačních pinů jako výstupní
  17. pinMode(dataPin, OUTPUT);
  18. pinMode(clockPin, OUTPUT);
  19. pinMode(latchPin, OUTPUT);
  20. // Nastavení základního stavu latch pinu na log. 1
  21. digitalWrite(latchPin,HIGH);
  22. }
  23. // Nekonečná smyčka programu
  24. void loop() {
  25. // Pro možnost zápisu do posuvných registrů je nutné nastavit latch na log. 0 a navrácení latch pinu na log. 1
  26. digitalWrite(latchPin,LOW);
  27. // Zápis pole hodnot na každou jednotku diagnostiky zvlášť
  28. zapisNaVystupPosuv(diagnostika1, 24);
  29. zapisNaVystupPosuv(diagnostika2, 24);
  30. digitalWrite(latchPin,HIGH);
  31. // Zpoždění před dalším zápisem hodnot
  32. delay(1000);
  33. }
  34. // Funkce pro zápis pole hodnot na posuvné registry
  35. void zapisNaVystupPosuv(int vstupniPole[], int pocetCisel) {
  36. for(int i=0; i<pocetCisel; i++){
  37. digitalWrite(dataPin, vstupniPole[i]);
  38. delayMicroseconds(diagDelayMicros);
  39. digitalWrite(clockPin, HIGH);
  40. delayMicroseconds(diagDelayMicros);
  41. digitalWrite(clockPin, LOW);
  42. }
  43. }
Advertisement
Add Comment
Please, Sign In to add comment