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

Dependencies:   Arduino mbed

Fork of mbed_shiftreg_3 by GR_Peach_Abhinav_Rahul

Committer:
RahulSitaram
Date:
Tue Jan 03 17:55:04 2017 +0000
Revision:
5:cfa7c7d886a7
Parent:
3:081ce87947b8
10 outlets;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RahulSitaram 3:081ce87947b8 1 #include<iostream>
RahulSitaram 0:b9fbca7b029d 2 #include "mbed.h"
RahulSitaram 0:b9fbca7b029d 3 //#include <bitset>
RahulSitaram 0:b9fbca7b029d 4 #include "arduino.h"
RahulSitaram 3:081ce87947b8 5
RahulSitaram 3:081ce87947b8 6 #define delay_time 0
RahulSitaram 3:081ce87947b8 7 #define outlets 11
RahulSitaram 5:cfa7c7d886a7 8
RahulSitaram 0:b9fbca7b029d 9 //using namespace mbed::mbed;
RahulSitaram 3:081ce87947b8 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
RahulSitaram 3:081ce87947b8 15 DigitalOut latch = P8_11;
RahulSitaram 3:081ce87947b8 16 DigitalOut CLK_595 = P8_13;
RahulSitaram 3:081ce87947b8 17 DigitalOut data_out_pins[outlets][3] = {
RahulSitaram 3:081ce87947b8 18 {P4_4, P4_5, P4_6},
RahulSitaram 3:081ce87947b8 19 {P1_2, P1_3, P10_12},
RahulSitaram 3:081ce87947b8 20 {P10_14, P10_13, P8_14},
RahulSitaram 3:081ce87947b8 21 {P1_8, P1_9, P1_10},
RahulSitaram 3:081ce87947b8 22 {P1_13, P1_15, P1_7},
RahulSitaram 3:081ce87947b8 23 {P10_0, P1_1, P1_0},
RahulSitaram 3:081ce87947b8 24 {P2_7, P2_6, P2_5},
RahulSitaram 3:081ce87947b8 25 {P2_3, P2_2, P2_1},
RahulSitaram 3:081ce87947b8 26 {P7_15, P8_1, P2_9},
RahulSitaram 3:081ce87947b8 27 {P4_0, P2_13, P5_7},
RahulSitaram 3:081ce87947b8 28 {P5_3, P5_2, P5_1},};
RahulSitaram 3:081ce87947b8 29 DigitalIn data_in_pins[outlets] = {P4_7,P10_15,P8_15,P1_11,P1_6,P1_12,P2_4,P2_0,P2_10,P5_6,P5_0};
RahulSitaram 3:081ce87947b8 30 DigitalOut CLK_165(P2_14);
RahulSitaram 3:081ce87947b8 31 DigitalOut load(P2_15);
RahulSitaram 3:081ce87947b8 32
RahulSitaram 0:b9fbca7b029d 33 uint8_t data_read;
RahulSitaram 1:b42fa19eeea8 34 bool c1[4];
RahulSitaram 1:b42fa19eeea8 35 bool c2[4];
RahulSitaram 1:b42fa19eeea8 36 bool c3[4];
RahulSitaram 1:b42fa19eeea8 37 bool c4[4];
RahulSitaram 3:081ce87947b8 38 uint8_t data_in[outlets];
RahulSitaram 3:081ce87947b8 39 uint8_t data_out[outlets][3] = {{0xC5, 0xB2, 0x68}};
RahulSitaram 3:081ce87947b8 40
RahulSitaram 3:081ce87947b8 41 void shift(){
RahulSitaram 3:081ce87947b8 42 // DigitalOut lat = pins[row_no][0];
RahulSitaram 3:081ce87947b8 43 // DigitalOut dat = pins[row_no][1];
RahulSitaram 3:081ce87947b8 44 // DigitalOut clk = pins[row_no][2];
RahulSitaram 3:081ce87947b8 45 CLK_595 = 0;
RahulSitaram 3:081ce87947b8 46 latch = 0;
RahulSitaram 3:081ce87947b8 47 int init = 0x80;
RahulSitaram 3:081ce87947b8 48 for(int i=0; i<8; i++)
RahulSitaram 3:081ce87947b8 49 {
RahulSitaram 3:081ce87947b8 50 for (int j=0; j<outlets; j++)
RahulSitaram 3:081ce87947b8 51 {
RahulSitaram 3:081ce87947b8 52 data_out_pins[j][0] = data_out[j][0] & (init>>i);
RahulSitaram 3:081ce87947b8 53 data_out_pins[j][1] = data_out[j][1] & (init>>i);
RahulSitaram 3:081ce87947b8 54 data_out_pins[j][2] = data_out[j][2] & (init>>i);
RahulSitaram 0:b9fbca7b029d 55 }
RahulSitaram 3:081ce87947b8 56 CLK_595 = 1;
RahulSitaram 3:081ce87947b8 57 CLK_595 = 0;
RahulSitaram 3:081ce87947b8 58 }
RahulSitaram 3:081ce87947b8 59 latch = 1;
RahulSitaram 3:081ce87947b8 60 latch = 0;
RahulSitaram 0:b9fbca7b029d 61 }
RahulSitaram 3:081ce87947b8 62
RahulSitaram 3:081ce87947b8 63 void shift_read(){
RahulSitaram 3:081ce87947b8 64 load = 0;
RahulSitaram 3:081ce87947b8 65 load = 1;
RahulSitaram 3:081ce87947b8 66 for (int i=0; i<outlets; i++)
RahulSitaram 0:b9fbca7b029d 67 {
RahulSitaram 3:081ce87947b8 68 data_in[i] = (data_in[i]<<1)|data_in_pins[i];
RahulSitaram 0:b9fbca7b029d 69 }
RahulSitaram 3:081ce87947b8 70 for(int i=0; i<8; i++)
RahulSitaram 3:081ce87947b8 71 {
RahulSitaram 3:081ce87947b8 72 for (int i=0; i<outlets; i++)
RahulSitaram 3:081ce87947b8 73 {
RahulSitaram 3:081ce87947b8 74 data_in[i] = (data_in[i]<<1)|data_in_pins[i];
RahulSitaram 3:081ce87947b8 75 }
RahulSitaram 3:081ce87947b8 76 CLK_165 = 0;
RahulSitaram 3:081ce87947b8 77 CLK_165 = 1;
RahulSitaram 0:b9fbca7b029d 78 }
RahulSitaram 3:081ce87947b8 79 }
RahulSitaram 3:081ce87947b8 80
RahulSitaram 3:081ce87947b8 81 void call(){
RahulSitaram 3:081ce87947b8 82 data_out[0][0] = pc.getc();
RahulSitaram 3:081ce87947b8 83 shift();
RahulSitaram 3:081ce87947b8 84 }
RahulSitaram 3:081ce87947b8 85
RahulSitaram 0:b9fbca7b029d 86 int main() {
RahulSitaram 2:a07ae6396167 87 pc.attach(&call);
RahulSitaram 3:081ce87947b8 88 long time_counter1 = 0;
RahulSitaram 3:081ce87947b8 89 wait_ms(500);
RahulSitaram 3:081ce87947b8 90 cout<<"Starting: "<<endl;
RahulSitaram 0:b9fbca7b029d 91 wait_ms(500);
RahulSitaram 1:b42fa19eeea8 92 while(1){
RahulSitaram 3:081ce87947b8 93 shift();
RahulSitaram 3:081ce87947b8 94 shift_read();
RahulSitaram 3:081ce87947b8 95 time_counter1++;
RahulSitaram 3:081ce87947b8 96 if (time_counter1 == 1000000)
RahulSitaram 3:081ce87947b8 97 {
RahulSitaram 3:081ce87947b8 98 //pc.printf("%X\n", data_in[0]);
RahulSitaram 3:081ce87947b8 99 cout<<"Flag"<<endl;
RahulSitaram 3:081ce87947b8 100 time_counter1 = 0;
RahulSitaram 1:b42fa19eeea8 101 }
RahulSitaram 3:081ce87947b8 102 }
RahulSitaram 0:b9fbca7b029d 103 }