Advertisement
Al_Ninyo

весь кубик

Jan 9th, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.69 KB | None | 0 0
  1. const int latchPin = 8; // Пин подключен к ST_CP входу 74HC595
  2. const int clockPin = 12; // Пин подключен к SH_CP входу 74HC595
  3. const int dataPin = 11; // Пин подключен к DS входу 74HC595
  4.  
  5. int LayerPin[] = {4,5,6,7}; // указываем пины, к которым подключены слои
  6.  
  7. unsigned int DATA = 0;
  8. int i = 0;
  9.  
  10. void setup() {
  11.   pinMode(latchPin, OUTPUT);
  12.   pinMode(dataPin, OUTPUT);
  13.   pinMode(clockPin, OUTPUT);
  14.  
  15.   // гасим все слои на всякий случай
  16.   for(int layer = 0; layer < 4; layer++){
  17.     pinMode(LayerPin[layer], OUTPUT);
  18.     digitalWrite(LayerPin[layer], LOW);
  19.   }
  20. }
  21.  
  22. // функция передачи данных в сдвиговый регистр для зажигания светодиодов
  23. void doMagicWithRegisters(int whatToPush) {
  24.   digitalWrite(latchPin, LOW);
  25.  
  26.   shiftOut(dataPin, clockPin, MSBFIRST, (whatToPush>> 8));
  27.   shiftOut(dataPin, clockPin, MSBFIRST, whatToPush);
  28.  
  29.   // "защелкиваем" регистр, чтобы биты появились на выходах регистра
  30.   digitalWrite(latchPin, HIGH);
  31. }
  32.  
  33. void LayersOff() { // функция для выключения всех слоёв
  34.   for(int layer = 0; layer < 4; layer++){
  35.     digitalWrite(LayerPin[layer], LOW);
  36.   }
  37. }
  38.  
  39. void LayersOn() { // функция для включения всех слоёв
  40.   for(int layer = 0; layer < 4; layer++){
  41.     digitalWrite(LayerPin[layer], HIGH);
  42.   }
  43. }
  44.  
  45. void loop() {
  46.   // зажигаем слои
  47. LayersOn();
  48.  
  49.   for (int n = 0; n < 16; n++) {
  50.     DATA ^=  (1 << n);
  51.   doMagicWithRegisters(DATA);
  52.   }
  53.   delay(1000);
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement