Arduino와 8 비트 시프트 레지스터로 7 세그를 제어합니다.
5270 단어 전자 공작Arduino전기 회로IoT7segmentLED
소개
표시계의 부품으로서 모든 곳에서 사용되고 있습니다. 그러나 LED와 달리 단순히 전압을 가해도 숫자는 표시되지 않습니다. 또한 아무래도 배선이 많아지기 때문에 시프트 레지스터도 활용하여 사용법을 마스터합시다.
7 세그먼트 LED 회로
아래 그림과 같이 a ~ g + DP (도트)까지 8 핀이 있습니다. 그 핀에 입력이 있으면 그 위치가 빛납니다.
또, 공통 핀(com)이 「+」또는 「-」의 2 종류의 회로가 있으므로 사용하는 경우는 잘 확인합시다.
배선도
이와 같이 배선을 실시합니다. 특히 프로그램은 필요하지 않습니다. 실행하면 모두 점등한다고 생각합니다. 지금은 3.3V와 GND 밖에 사용하고 있지 않기 때문에 제어다운 움직임은 할 수 없습니다.
실제로는 이것을 GPIO 핀에 삽입&입력을 주는 것으로 제어할 수 있습니다만, 그렇게 되면 8pin도 소비해 버려, 조금 아무것도 없다.
시프트 레지스터를 사용하여 배선을 정돈
시프트 레지스터를 추가하여 3선으로 입력을 제공할 수 있습니다. 숫자는 시리얼로 입력할 수 있으므로 간단한 코드로 숫자를 순차적으로 표시하는 코드도 쉽게 걸립니다
#define SRCLK (5)//シフトレジスタのクロック信号
#define RCLK (6)//ストレージレジスタのクロック信号
#define SER (7)//シリアル入力
void setup() {
pinMode(SRCLK, OUTPUT);
pinMode(RCLK, OUTPUT);
pinMode(SER, OUTPUT);
}
// 点灯パターン
const uint8_t PATTERNS[] = {
B01110111,
B00010001,
B01101011,
B00111011,
B00011101,
B00111110,
B01111110,
B00010111,
B01111111,
B00111111
};
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);
}
}
결론 & 참고 문헌
7세그나 시프트 레지스터 등이 등장하면 조금 착용해 버리는 분도 많다고 생각합니다. 하지만 원리는 어렵지 않고 시프트 레지스터는 함수가 하드화되었다고 생각하면 마음이 편하지 않을까요? 우선은 손을 움직여 트라이 해 봅시다!
7 세그먼트 LED란?
Arduino에서 시프트 레지스터 (SN74HC595)를 사용하여 8 개의 LED를 치카 치카
Reference
이 문제에 관하여(Arduino와 8 비트 시프트 레지스터로 7 세그를 제어합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taiyyytai/items/6bc81144f46852783a76텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)