This is a GR peach project demonstrating shift registers 595 and 165

Dependencies:   Arduino mbed

Fork of mbed_shiftreg_2 by GR_Peach_Abhinav_Rahul

Committer:
akverma
Date:
Tue Jan 03 18:02:16 2017 +0000
Revision:
6:5889eff2e861
Parent:
3:1696c69e3109
Child:
7:2c0917fbf656
Shiftreg_3 for 8pin system;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akverma 3:1696c69e3109 1 #include<iostream>
RahulSitaram 0:b9fbca7b029d 2 #include "mbed.h"
RahulSitaram 0:b9fbca7b029d 3 //#include <bitset>
RahulSitaram 0:b9fbca7b029d 4 #include "arduino.h"
RahulSitaram 0:b9fbca7b029d 5
akverma 3:1696c69e3109 6 #define delay_time 0
akverma 3:1696c69e3109 7 #define outlets 1
akverma 3:1696c69e3109 8
RahulSitaram 0:b9fbca7b029d 9 //using namespace mbed::mbed;
RahulSitaram 0:b9fbca7b029d 10
RahulSitaram 0:b9fbca7b029d 11 //DigitalOut lat(P8_11);
RahulSitaram 0:b9fbca7b029d 12 //DigitalOut dat(P8_13);
RahulSitaram 0:b9fbca7b029d 13 //DigitalOut clk(P4_4);
RahulSitaram 0:b9fbca7b029d 14 Serial pc(USBTX, USBRX); // tx, rx
akverma 3:1696c69e3109 15 DigitalOut latch = P8_11;
akverma 3:1696c69e3109 16 DigitalOut CLK_595 = P8_13;
akverma 6:5889eff2e861 17 DigitalOut data_out_pins[outlets][3] =
akverma 6:5889eff2e861 18 {{P4_4, P4_5, P4_6}};
akverma 3:1696c69e3109 19 DigitalIn data_in_pins[outlets] = {P4_7};
akverma 3:1696c69e3109 20 DigitalOut CLK_165(P2_14);
akverma 3:1696c69e3109 21 DigitalOut load(P2_15);
RahulSitaram 0:b9fbca7b029d 22
RahulSitaram 0:b9fbca7b029d 23 uint8_t data_read;
RahulSitaram 1:b42fa19eeea8 24 bool c1[4];
RahulSitaram 1:b42fa19eeea8 25 bool c2[4];
RahulSitaram 1:b42fa19eeea8 26 bool c3[4];
RahulSitaram 1:b42fa19eeea8 27 bool c4[4];
akverma 3:1696c69e3109 28 uint8_t data_in[outlets];
akverma 3:1696c69e3109 29 uint8_t data_out[outlets][3] = {{0xC5, 0xB2, 0x68}};
RahulSitaram 1:b42fa19eeea8 30
akverma 3:1696c69e3109 31 void shift(){
akverma 3:1696c69e3109 32 // DigitalOut lat = pins[row_no][0];
akverma 3:1696c69e3109 33 // DigitalOut dat = pins[row_no][1];
akverma 3:1696c69e3109 34 // DigitalOut clk = pins[row_no][2];
akverma 3:1696c69e3109 35 CLK_595 = 0;
akverma 3:1696c69e3109 36 latch = 0;
akverma 3:1696c69e3109 37 int init = 0x80;
akverma 3:1696c69e3109 38 for(int i=0; i<8; i++)
akverma 3:1696c69e3109 39 {
akverma 3:1696c69e3109 40 for (int j=0; j<outlets; j++)
akverma 3:1696c69e3109 41 {
akverma 3:1696c69e3109 42 data_out_pins[j][0] = data_out[j][0] & (init>>i);
akverma 3:1696c69e3109 43 data_out_pins[j][1] = data_out[j][1] & (init>>i);
akverma 3:1696c69e3109 44 data_out_pins[j][2] = data_out[j][2] & (init>>i);
RahulSitaram 0:b9fbca7b029d 45 }
akverma 3:1696c69e3109 46 CLK_595 = 1;
akverma 3:1696c69e3109 47 CLK_595 = 0;
akverma 3:1696c69e3109 48 }
akverma 3:1696c69e3109 49 latch = 1;
akverma 3:1696c69e3109 50 latch = 0;
RahulSitaram 0:b9fbca7b029d 51 }
RahulSitaram 0:b9fbca7b029d 52
akverma 3:1696c69e3109 53 void shift_read(){
akverma 3:1696c69e3109 54 load = 0;
akverma 3:1696c69e3109 55 load = 1;
akverma 3:1696c69e3109 56 for (int i=0; i<outlets; i++)
RahulSitaram 0:b9fbca7b029d 57 {
akverma 3:1696c69e3109 58 data_in[i] = (data_in[i]<<1)|data_in_pins[i];
RahulSitaram 0:b9fbca7b029d 59 }
akverma 3:1696c69e3109 60 for(int i=0; i<8; i++)
akverma 3:1696c69e3109 61 {
akverma 3:1696c69e3109 62 for (int i=0; i<outlets; i++)
akverma 3:1696c69e3109 63 {
akverma 3:1696c69e3109 64 data_in[i] = (data_in[i]<<1)|data_in_pins[i];
akverma 3:1696c69e3109 65 }
akverma 3:1696c69e3109 66 CLK_165 = 0;
akverma 3:1696c69e3109 67 CLK_165 = 1;
RahulSitaram 0:b9fbca7b029d 68 }
akverma 3:1696c69e3109 69 }
akverma 3:1696c69e3109 70
akverma 3:1696c69e3109 71 void call(){
akverma 3:1696c69e3109 72 data_out[0][0] = pc.getc();
akverma 3:1696c69e3109 73 shift();
akverma 3:1696c69e3109 74 }
RahulSitaram 0:b9fbca7b029d 75
RahulSitaram 0:b9fbca7b029d 76 int main() {
RahulSitaram 2:a07ae6396167 77 pc.attach(&call);
akverma 3:1696c69e3109 78 long time_counter1 = 0;
akverma 3:1696c69e3109 79 wait_ms(500);
akverma 3:1696c69e3109 80 cout<<"Starting: "<<endl;
RahulSitaram 0:b9fbca7b029d 81 wait_ms(500);
RahulSitaram 1:b42fa19eeea8 82 while(1){
akverma 3:1696c69e3109 83 shift();
akverma 3:1696c69e3109 84 shift_read();
akverma 3:1696c69e3109 85 time_counter1++;
akverma 3:1696c69e3109 86 if (time_counter1 == 1000000)
akverma 3:1696c69e3109 87 {
akverma 3:1696c69e3109 88 pc.printf("%X\n", data_in[0]);
akverma 3:1696c69e3109 89 time_counter1 = 0;
RahulSitaram 1:b42fa19eeea8 90 }
akverma 3:1696c69e3109 91 }
RahulSitaram 0:b9fbca7b029d 92 }