CODE | Shift Register 8-Bit Binary Counter - Arduino Project 017

RonWang3 years ago (2023-10-07)电子编程 COD35

In this project, you’re going to use additional ICs (Integrated Circuits) in the form of shift registers in order to drive LEDs to count in binary (I will explain what binary is soon). Specifically, you will drive eight LEDs independently using just three output pins from the Arduino.

Project 17 Shift Register 8-Bit Binary Counter

/* Coding Ron Wang
   Sep.10th 2024
   Autaba support for coding hardware
   Project 17 Shift Register 8-Bit Binary Counter
 */
int latchPin = 8; //Pin connected to Pin 12 of 74HC595 (Latch)
int clockPin = 12; //Pin connected to Pin 11 of 74HC595 (Clock)
int dataPin = 11; //Pin connected to Pin 14 of 74HC595 (Data)
void setup() {
 //set pins to output
 pinMode(latchPin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 pinMode(dataPin, OUTPUT);
}
void loop() {
 //count from 0 to 255
 for (int i = 0; i < 256; i++) {
 //set latchPin low to allow data flow
 digitalWrite(latchPin, LOW);
 shiftOut(i);
 //set latchPin to high to lock and send data
 digitalWrite(latchPin, HIGH);
 delay(1000);
 }
}
void shiftOut(byte dataOut) {
 // Shift out 8 bits LSB first, on rising edge of clock
 boolean pinState;
 digitalWrite(dataPin, LOW); //clear shift register ready for sending data
 digitalWrite(clockPin, LOW);
 for (int i=0; i<=7; i++) { // for each bit in dataOut send out a bit
 digitalWrite(clockPin, LOW); //set clockPin to LOW prior to sending bit
 // if the value of DataOut and (logical AND) a bitmask
 // are true, set pinState to 1 (HIGH)
 if ( dataOut & (1<<i) ) {
 pinState = HIGH;
 }
 else {
 pinState = LOW;
 }
 //sets dataPin to HIGH or LOW depending on pinState
 digitalWrite(dataPin, pinState); //send bit out on rising edge of clock
 digitalWrite(clockPin, HIGH);
 }
 digitalWrite(clockPin, LOW); //stop shifting out data
}

Arduino Shift Register 8-Bit Binary Counter Circuit

Arduino Shift Register 8-Bit Binary Counter Schematic

Share with Friends:

Related Articles

Resistor-Electrical Components

Resistor-Electrical Components

A resistor is a passive two-terminal electrical component that implements electrical resistance as a…

CODE | Variables - Arduino Programming Basic

CODE | Variables - Arduino Programming Basic

Arduino 程序基础,介绍Arduino程序的基本组成,第一部分编写了10个例子,关于变量及变量名称,串口监视器,if循环,for循环,while循环等。第二部分介绍了函数,全局变量,局部变量和静…

How to use the Soldering Electric Maker Basic Technology

How to use the Soldering Electric Maker Basic Technology

如何使用电络铁?初级电子制作与维修之焊接知识Gather Tools: You will need a soldering iron, solder, a soldering iron stand,…

Electric Maker Beginner Tools Kit

Electric Maker Beginner Tools Kit

This assortment of tools has everything you need to get started tinkering with Sparkfun products and…

Python Programming Languages Suitable for Children

Python Programming Languages Suitable for Children

Python 适合儿童的编程语言Scratch图形编程优点在于图形化拖拽的方式简化了编程的理解,而C,JAVA,JAVASCRIPT,PYTHON等编程语言相对枯燥复杂,涉及复杂编程语法,变量规则,函…

Install PrestaShop 1.7 Version

Install PrestaShop 1.7 Version

现在很多国内的公司为了拓展对外业务,开始采用更先进的电子商务软件,如美国的Amazon,加拿大的Shopify,法国的PrestaShop等都有很多用户在使用,对于商业初期的低成本尝试,开源软件Pre…

Post a Comment

Anonymous

Feel free to share your thoughts and opinions here.