Chapter 13 – Experiment 06 – INTEGRATED CIRCUIT

Time to start playing with chips, or integrated circuits (ICs) as they
like to be called. The external packaging of a chip can be very
deceptive. For example, the chip on the Microcontroller board (a
microcontroller) and the one we will use in this circuit (a shift
register) look very similar but are in fact rather different. The price
of the Microcontroller chip on the board is a few dollars while the
74HC595 is a couple dozen cents. It’s a good introductory chip, and once
you’re comfortable playing around with it and its datasheet the world of
chips will be your oyster. The shift register (also called a serial to
parallel converter), will give you an additional 8 outputs (to control
LEDs and the like) using only three Microcontroller pins. They can also be
linked together to give you a nearly unlimited number of outputs using
the same four pins. To use it you “clock in” the data and then lock it
in (latch it). To do this you set the data pin to either HIGH or LOW,
pulse the clock, then set the data pin again and pulse the clock
repeating until you have shifted out 8 bits of data. Then you pulse the
latch and the 8 bits are transferred to the shift registers pins. It
sounds complicated but is really simple once you get the hang of it.

integrated-circuit

integrated-circuit

Code

/*     ———————————————————
*     |  Arduino Experimentation Kit Example Code             |
*     |  CIRC-02 .: 8 LED Fun :. (Multiple LEDs)   |
*     ———————————————————
*
*  A few Simple LED animations
*
* For more information on this circuit http://tinyurl.com/d2hrud
*
*/

//LED Pin Variables
int ledPins[] = {2,3,4,5,6,7,8,9}; //An array to hold the pin each LED is connected to
//i.e. LED #0 is connected to pin 2, LED #1, 3 and so on
//to address an array use ledPins[0] this would equal 2
//and ledPins[7] would equal 9

/*
* setup() – this function runs once when you turn your Arduino on
* We the three control pins to outputs
*/
void setup()
{

//Set each pin connected to an LED to output mode (pulling high (on) or low (off)
for(int i = 0; i < 8; i++){         //this is a loop and will repeat eight times
pinMode(ledPins[i],OUTPUT); //we use this to set each LED pin to output
}                                   //the code this replaces is below

/* (commented code will not run)
* these are the lines replaced by the for loop above they do exactly the
* same thing the one above just uses less typing
pinMode(ledPins[0],OUTPUT);
pinMode(ledPins[1],OUTPUT);
pinMode(ledPins[2],OUTPUT);
pinMode(ledPins[3],OUTPUT);
pinMode(ledPins[4],OUTPUT);
pinMode(ledPins[5],OUTPUT);
pinMode(ledPins[6],OUTPUT);
pinMode(ledPins[7],OUTPUT);
(end of commented code)*/
}

/*
* loop() – this function will start after setup finishes and then repeat
* we call a function called oneAfterAnother(). if you would like a different behaviour
* uncomment (delete the two slashes) one of the other lines
*/
void loop()                     // run over and over again
{
oneAfterAnotherNoLoop();   //this will turn on each LED one by one then turn each off
//oneAfterAnotherLoop();   //does the same as oneAfterAnotherNoLoop but with
//much less typing
//oneOnAtATime();          //this will turn one LED on then turn the next one
//on turning the
//former off (one LED will look like it is scrolling
//along the line
//inAndOut();              //lights the two middle LEDs then moves them out then back
//in again
}

/*
* oneAfterAnotherNoLoop() – Will light one LED then delay for delayTime then light
* the next LED until all LEDs are on it will then turn them off one after another
*
* this does it without using a loop which makes for a lot of typing.
* oneOnAtATimeLoop() does exactly the same thing with less typing
*/
void oneAfterAnotherNoLoop(){
int delayTime = 100; //the time (in milliseconds) to pause between LEDs
//make smaller for quicker switching and larger for slower
digitalWrite(ledPins[0], HIGH);  //Turns on LED #0 (connected to pin 2 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[1], HIGH);  //Turns on LED #1 (connected to pin 3 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[2], HIGH);  //Turns on LED #2 (connected to pin 4 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[3], HIGH);  //Turns on LED #3 (connected to pin 5 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[4], HIGH);  //Turns on LED #4 (connected to pin 6 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[5], HIGH);  //Turns on LED #5 (connected to pin 7 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[6], HIGH);  //Turns on LED #6 (connected to pin 8 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[7], HIGH);  //Turns on LED #7 (connected to pin 9 )
delay(delayTime);                //waits delayTime milliseconds

//Turns Each LED Off
digitalWrite(ledPins[7], LOW);  //Turns on LED #0 (connected to pin 2 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[6], LOW);  //Turns on LED #1 (connected to pin 3 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[5], LOW);  //Turns on LED #2 (connected to pin 4 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[4], LOW);  //Turns on LED #3 (connected to pin 5 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[3], LOW);  //Turns on LED #4 (connected to pin 6 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[2], LOW);  //Turns on LED #5 (connected to pin 7 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[1], LOW);  //Turns on LED #6 (connected to pin 8 )
delay(delayTime);                //waits delayTime milliseconds
digitalWrite(ledPins[0], LOW);  //Turns on LED #7 (connected to pin 9 )
delay(delayTime);                //waits delayTime milliseconds
}

/*
* oneAfterAnotherLoop() – Will light one LED then delay for delayTime then light
* the next LED until all LEDs are on it will then turn them off one after another
*
* this does it using a loop which makes for a lot less typing.
* than oneOnAtATimeNoLoop() does exactly the same thing with less typing
*/
void oneAfterAnotherLoop(){
int delayTime = 100; //the time (in milliseconds) to pause between LEDs
//make smaller for quicker switching and larger for slower

//Turn Each LED on one after another
for(int i = 0; i <= 7; i++){
digitalWrite(ledPins[i], HIGH);  //Turns on LED #i each time this runs i
delay(delayTime);                //gets one added to it so this will repeat
}                                  //8 times the first time i will = 0 the final
//time i will equal 7;

//Turn Each LED off one after another
for(int i = 7; i >= 0; i–){  //same as above but rather than starting at 0 and counting u
//p
//we start at seven and count down
digitalWrite(ledPins[i], LOW);  //Turns off LED #i each time this runs i
delay(delayTime);                //gets one subtracted from it so this will repeat
}                                  //8 times the first time i will = 7 the final
//time it will equal 0

}

/*
* oneOnAtATime() – Will light one LED then the next turning off all the others
*/
void oneOnAtATime(){
int delayTime = 100; //the time (in milliseconds) to pause between LEDs
//make smaller for quicker switching and larger for slower

for(int i = 0; i <= 7; i++){
int offLED = i – 1;  //Calculate which LED was turned on last time through
if(i == 0) {         //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will
offLED = 7;        //turn on LED 2 and off LED 1)
}                    //however if i = 0 we don’t want to turn of led -1 (doesn’t exist)
//instead we turn off LED 7, (looping around)
digitalWrite(ledPins[i], HIGH);     //turn on LED #i
digitalWrite(ledPins[offLED], LOW); //turn off the LED we turned on last time
delay(delayTime);
}
}

/*
* inAndOut() – This will turn on the two middle LEDs then the next two out
* making an in and out look
*/
void inAndOut(){
int delayTime = 100; //the time (in milliseconds) to pause between LEDs
//make smaller for quicker switching and larger for slower

//runs the LEDs out from the middle
for(int i = 0; i <= 3; i++){
int offLED = i – 1;  //Calculate which LED was turned on last time through
if(i == 0) {         //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will
offLED = 3;        //turn on LED 2 and off LED 1)
}                    //however if i = 0 we don’t want to turn of led -1 (doesn’t exist)
//instead we turn off LED 7, (looping around)
int onLED1 = 3 – i;       //this is the first LED to go on ie. LED #3 when i = 0 and LED
//
//#0 when i = 3
int onLED2 = 4 + i;       //this is the first LED to go on ie. LED #4 when i = 0 and LED
//
//#7 when i = 3
int offLED1 = 3 – offLED; //turns off the LED we turned on last time
int offLED2 = 4 + offLED; //turns off the LED we turned on last time

digitalWrite(ledPins[onLED1], HIGH);
digitalWrite(ledPins[onLED2], HIGH);
digitalWrite(ledPins[offLED1], LOW);
digitalWrite(ledPins[offLED2], LOW);
delay(delayTime);
}

//runs the LEDs into the middle
for(int i = 3; i >= 0; i–){
int offLED = i + 1;  //Calculate which LED was turned on last time through
if(i == 3) {         //for i = 1 to 7 this is i minus 1 (i.e. if i = 2 we will
offLED = 0;        //turn on LED 2 and off LED 1)
}                    //however if i = 0 we don’t want to turn of led -1 (doesn’t exist)
//instead we turn off LED 7, (looping around)
int onLED1 = 3 – i;       //this is the first LED to go on ie. LED #3 when i = 0 and LED
//
//#0 when i = 3
int onLED2 = 4 + i;       //this is the first LED to go on ie. LED #4 when i = 0 and LED
//
//#7 when i = 3
int offLED1 = 3 – offLED; //turns off the LED we turned on last time
int offLED2 = 4 + offLED; //turns off the LED we turned on last time

digitalWrite(ledPins[onLED1], HIGH);
digitalWrite(ledPins[onLED2], HIGH);
digitalWrite(ledPins[offLED1], LOW);
digitalWrite(ledPins[offLED2], LOW);
delay(delayTime);
}
}

3 comments

  1. [...] Chapter 11 – Experiment 04 – TEMPERATURE SENSOR Chapter 12 – Experiment 05 – PUSHBUTTON Chapter 13 – Experiment 06 – INTEGRATED CIRCUIT Chapter 14 – Experiment 07 – MATH IS FUN! Chapter 15 – Experiment 08 – INTERACTIVITY [...]

  2. The code does not correspond to the given circuit.

    The code corresponds to a circuit without a shift register. The eight resistors should be connected directly to the pins 2 to 9 of the micro-controller.

  3. This kind of tale continues to be appended to add a new declaration through Dorian Nakamoto been given with
    Drive 19th as soon as Newsweek was first contacted right by means
    of Mr. Nakamoto’s lawyer, denying their position with Bitcoin.

    Satoshi Nakamoto holds right at the end of his / her sunbaked driveway
    searching timorous. Along with annoyed.

    He is donning the rumpled T-shirt, older glowing blue jeans in addition to light health club socks,
    with out footwear, just like they have still left the home on the
    go. His or her head of hair will be unkempt, as well as he’s got the actual thousand-mile focus
    involving somebody who has gone days without having sleep.

Leave a Reply to bitcoins Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


istanbul evden eve nakliyat istanbul evden eve nakliyat istanbul evden eve nakliyat sarıyer evden eve nakliyat beylikdüzü evden eve nakliyat şişli evden eve nakliyat