아두이노 시프트 레지스터 예제

칩에는 출력에 사용할 수 있는 8개의 핀이 포함되어 있으며, 각 핀은 레지스터의 비트와 연결되어 있습니다. 74HC595 IC의 경우, 우리는 QH를 통해 QA로 이들을 참조하십시오. Arduino를 통해 이러한 출력에 쓰기 위해, 우리는 시프트 레지스터에 바이너리 값을 보내야하고, 그 숫자에서 시프트 레지스터는 사용할 출력을 알아낼 수 있습니다. 예를 들어 이진 값 10100010을 보낸 경우 아래 이미지에서 녹색으로 강조 표시된 핀이 활성화되고 빨간색으로 강조 표시된 핀은 비활성 상태가 됩니다. 이제 우리는 IC (집적 회로)의 세계로 단계하려고합니다. 이 회로에서는 시프트 레지스터(직렬-병렬 변환기라고도 함)를 사용하는 방법에 대해 모두 알아봅니다. 시프트 레지스터는 보드에 세 개의 핀을 사용하여 레드 보드 또는 Arduino Uno R3에 추가 8 개의 출력을 제공합니다. 이 회로의 경우 시프트 레지스터를 사용하여 8개의 LED를 제어하는 연습을 합니다. 이제 몇 가지 코드를 넣을 준비가 되었습니다! 컴퓨터에 Arduino를 연결하고 다음 스케치를 업로드하십시오: 함수 updateShiftRegister() – 먼저 래치 핀을 LOW로 설정한 다음 래치 핀을 다시 올려놓기 전에 Arduino 함수 shiftOut()을 호출합니다. 이 설정은 모든 출력 핀을 항상 활성화하고 주소 지정할 수 있게 합니다. 이 설정의 한 가지 결함은 프로그램이 실행되기 전에 회로에 전원을 공급할 때마다 마지막 상태 또는 임의로 켜지는 조명으로 끝난다는 것입니다. 당신은 너무 당신의 아두 이노 보드에서 MR과 OE 핀을 제어하여이 방법을 해결할 수 있지만,이 방법은 작동하고 더 열린 핀을 떠날 것이다. 루프 함수 : 처음에는 변수 `led`의 모든 비트를 0으로 설정하여 모든 LED를 끕니다.

그런 다음 updateShiftRegister()라는 사용자 지정 함수를 호출하여 모든 LED가 꺼지도록 `led` 패턴을 시프트 레지스터로 보냅니다. 우리는 업데이트 ShiftRegister () 나중에 작동하는 방법을 다룰 것입니다. 언젠가 또는 다른 당신은 당신의 아두 이노 보드에 핀이 부족하고 시프트 레지스터로 확장해야 할 수 있습니다. 이 예제는 74HC595를 기반으로 합니다. 데이터시트는 74HC595를 ”출력 래치가 있는 8비트 직렬, 직렬 또는 병렬 출력 시프트 레지스터”로 참조합니다. 3 상태.” 즉, 마이크로 컨트롤러에서 몇 핀만 차지하면서 한 번에 8개의 출력을 제어하는 데 사용할 수 있습니다. 여러 레지스터를 함께 연결하여 출력을 더욱 확장할 수 있습니다. (사용자는 또한 자신의 부품 번호에 ”595”또는 ”596”와 다른 드라이버 칩을 검색 할 수 있습니다, 많은이있다. 예를 들어 STP16C596은 16개의 LED를 구동하고 일정한 전류 소스가 내장된 계열 저항을 제거합니다.) SPI 또는 직렬 주변 인터페이스라는 인터페이스를 사용하여 시프트 레지스터(및 기타 많은 부분)와 통신합니다.

이 인터페이스는 데이터 줄과 함께 작동하는 별도의 클럭 라인을 사용하여 아두 이노에서 고속으로 데이터를 이동합니다. MSBFIRST 매개 변수는 개별 비트를 보낼 순서를 지정합니다.이 경우 가장 중요 한 비트를 먼저 보냅니다. 우리는 ShiftRegister74HC595.h 라이브러리에서 예제 스케치를 사용합니다. 이러한 종류의 교육은 아두 이노와 쉽게 작업 할 수 있습니다. 감사. 595에는 두 개의 레지스터(”메모리 컨테이너”로 생각할 수 있음)가 있으며, 각각 8비트의 데이터만 있습니다. 첫 번째 는 시프트 레지스터라고 합니다. 시프트 레지스터는 IC 회로 깊숙이 자리잡고 있으며, 조용히 입력을 수락합니다. 비트를 설정 한 후 우리는 우리가 그것을 데이터를 보내려고하는 교대 레지스터를 나타내기 위해 래치 핀에 씁니다. 이 작업을 수행하면 Arduino의 호의로 제공되는 shiftOut 메서드를 호출합니다.

Kommentarer inaktiverade.