Arduino 및 8비트 시프트 레지스터로 LED 제어
시프트 레지스터란?
한마디로 설명하면 "적은 핀으로 더 많이 출력할 수 있다"
Arduino의 경우 GPIO의 수가 한정되어 있으므로, 시프트 레지스터를 사용하는 것으로 배선이 깨끗이라고 생각합니다.
작동 원리를 이해하는 것은 어렵지만 먼저 손을 움직여 확인합시다.
이 기사가 매우 유용합니다.
LED를 제어해보기
배선도는 아래와 같습니다. 3선의 출력으로 8개의 LED를 제어하고 있습니다
우선은 1개만 점등하는 코드
#define SRCLK (5)//シフトレジスタのクロック信号
#define RCLK (6)//ストレージレジスタのクロック信号
#define SER (7)//シリアル入力
void setup() {
pinMode(SRCLK, OUTPUT);
pinMode(RCLK, OUTPUT);
pinMode(SER, OUTPUT);
byte b = B00000001;
digitalWrite(RCLK, LOW);
shiftOut(SER, SRCLK, LSBFIRST , b);
digitalWrite(RCLK, HIGH);
}
void loop() {
}
연속으로 켜지는 코드
#define SRCLK (5)//シフトレジスタのクロック信号
#define RCLK (6)//ストレージレジスタのクロック信号
#define SER (7)//シリアル入力
void setup() {
pinMode(SRCLK, OUTPUT);
pinMode(RCLK, OUTPUT);
pinMode(SER, OUTPUT);
}
// パターン
const uint8_t PATTERNS[] = {
0b00000001,
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000,
};
void loop() {
// パターンの数
int pattern_num = sizeof(PATTERNS)/sizeof(PATTERNS[0]);
for (uint8_t i=0; i<pattern_num; i++) {
// 8ビット分のデータをシフトレジスタへ送る
shiftOut(SER, SRCLK, LSBFIRST, PATTERNS[i]);
// シフトレジスタの状態をストレージレジスタへ反映させる
digitalWrite(RCLK, LOW);
digitalWrite(RCLK, HIGH);
delay(500);
}
}
Reference
이 문제에 관하여(Arduino 및 8비트 시프트 레지스터로 LED 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taiyyytai/items/7b63aa273f6edf2a0878텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)