95 lines
2.3 KiB
Text
95 lines
2.3 KiB
Text
//164 pins
|
|
int clearPin = 2; // enablepin
|
|
int dataPin = 3;
|
|
int clockPin = 4;
|
|
|
|
//165 pins
|
|
int inclearPin = 11; // enablepin
|
|
int indataPin = 9;
|
|
int inclockPin = 10;
|
|
int inloadPin = 12; // toggling this tells the 165 to read the value into its memory for reading
|
|
|
|
int temp = 0;
|
|
|
|
void setup() {
|
|
|
|
//start serial
|
|
Serial.begin(9600);
|
|
|
|
//164
|
|
pinMode(clearPin, OUTPUT);
|
|
digitalWrite(clearPin, 1); // enable output, you could also tie this pin to VCC
|
|
pinMode(dataPin, OUTPUT);
|
|
pinMode(clockPin, OUTPUT);
|
|
|
|
//165
|
|
pinMode(inclearPin, OUTPUT);
|
|
digitalWrite(inclearPin, 0); // enable input, you could also tie this pin to GND
|
|
pinMode(indataPin, INPUT);
|
|
pinMode(inclockPin, OUTPUT);
|
|
pinMode(inloadPin, OUTPUT);
|
|
|
|
|
|
//we want to set the 164's outputs to any combination of 1's and 0's we want
|
|
//going to set the 164 outputs to 11101101 or on,on,on,off,on,on,off,on if you prefer, where on is 5v and off is grnd
|
|
//1st bit
|
|
digitalWrite(clockPin, 0);
|
|
digitalWrite(dataPin, 1);
|
|
digitalWrite(clockPin, 1);
|
|
//2nd bit
|
|
digitalWrite(clockPin, 0);
|
|
digitalWrite(dataPin, 1);
|
|
digitalWrite(clockPin, 1);
|
|
//3rd bit
|
|
digitalWrite(clockPin, 0);
|
|
digitalWrite(dataPin, 1);
|
|
digitalWrite(clockPin, 1);
|
|
//4th bit
|
|
digitalWrite(clockPin, 0);
|
|
digitalWrite(dataPin, 0);
|
|
digitalWrite(clockPin, 1);
|
|
//5th bit
|
|
digitalWrite(clockPin, 0);
|
|
digitalWrite(dataPin, 1);
|
|
digitalWrite(clockPin, 1);
|
|
//6th bit
|
|
digitalWrite(clockPin, 0);
|
|
digitalWrite(dataPin, 1);
|
|
digitalWrite(clockPin, 1);
|
|
//7th bit
|
|
digitalWrite(clockPin, 0);
|
|
digitalWrite(dataPin, 0);
|
|
digitalWrite(clockPin, 1);
|
|
//8th bit
|
|
digitalWrite(clockPin, 0);
|
|
digitalWrite(dataPin, 1);
|
|
digitalWrite(clockPin, 1);
|
|
|
|
}
|
|
|
|
// now its time to read the values that we outputted back in
|
|
|
|
void loop() {
|
|
|
|
digitalWrite(inloadPin, 0); // read into register (tells the 165 to take a snapshot of its input pins)
|
|
digitalWrite(inloadPin, 1); // done reading into register, ready for us to read
|
|
|
|
for(int i=0; i<=7; i++){ // read each of the 165's 8 inputs (or its snapshot of it rather)
|
|
|
|
// tell the 165 to send the inputs pin state
|
|
digitalWrite(inclockPin, 0);
|
|
// read the current output
|
|
temp = digitalRead(indataPin); // read the state
|
|
// tell the 165 we are done reading
|
|
digitalWrite(inclockPin, 1);
|
|
|
|
Serial.print (temp);
|
|
|
|
}
|
|
|
|
Serial.println ("");
|
|
Serial.println ("--------");
|
|
|
|
delay(2000);
|
|
|
|
}
|