Skip to content

Instantly share code, notes, and snippets.

@mamemomonga
Created March 21, 2015 16:54
Show Gist options
  • Save mamemomonga/b756e1f0429ccfd5c67e to your computer and use it in GitHub Desktop.
Save mamemomonga/b756e1f0429ccfd5c67e to your computer and use it in GitHub Desktop.
SN74HC595 をつかったLチカ
#include <SPI.h>
// SN74HC595 をつかったLチカ
// AVRボート
// Arduino | SN74HC595
// ---------|----------------
// SS(D10) | RCLK(12)
// MOSI(D11)| SER(14)
// MISO(D12)| NC(接続しない)
// SCK(D13) | SRCLK(11)
// 複数接続する場合には、QH' と SER を接続する
// RCLK, SRCLKは並列に接続。シフトレジスタはデータを押し込んでいくから、
// 複数の場合は最も後方のものをプロセッサに接続する。
#define SS 10
// シフトレジスタの数
#define SREG_NUM 2
// パターン
byte pattern[]={
B10000000, B00000000,
B01000000, B00000000,
B00100000, B00000000,
B00010000, B00000000,
B00001000, B00000000,
B00000100, B00000000,
B00000010, B00000000,
B00000001, B00000000,
B00000000, B10000000,
B00000000, B01000000,
B00000000, B00100000,
B00000000, B00010000,
B00000000, B00001000,
B00000000, B00000100,
B00000000, B00000010,
B00000000, B00000001,
B00000000, B00000000,
B00000000, B00000001,
B00000000, B00000010,
B00000000, B00000100,
B00000000, B00001000,
B00000000, B00010000,
B00000000, B00100000,
B00000000, B01000000,
B00000000, B10000000,
B00000001, B00000000,
B00000010, B00000000,
B00000100, B00000000,
B00001000, B00000000,
B00010000, B00000000,
B00100000, B00000000,
B01000000, B00000000,
B10000000, B00000000,
B00000000, B00000000,
};
byte pattern_len=34;
void setup() {
SPI.begin();
SPI.setBitOrder(LSBFIRST);
SPI.setClockDivider(SPI_CLOCK_DIV2); // 16MHz/2 = 8MHz
SPI.setDataMode(SPI_MODE2);
pinMode(SS,OUTPUT);
digitalWrite(SS,HIGH);
}
void loop() {
for(unsigned int pat=0; pat<pattern_len * SREG_NUM; pat+=SREG_NUM) {
digitalWrite(SS,LOW);
for(unsigned int sr=0; sr< SREG_NUM; sr++) {
SPI.transfer(pattern[pat+sr]);
}
digitalWrite(SS,HIGH);
delay(10);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment