const int dataPin595 = 5; /* DS */
const int clockPin595 = 6; /* SHCP */
const int latchPin595 = 7; /* STCP */
const int dataPin165 = 10; /* Q7 */
const int clockPin165 = 9; /* CP */
const int latchPin165 = 8; /* PL */
const int clockEnablePin165 = 11; /* CE */
// const int buttonA = 2; // start button
// const int buttonB = 4; // stop button
// const int buttonC = 3; // internal button C
int pattern1 = 0b10000000;
int pattern0 = 0b00000000;
int pattern2 = 0b01000000;
// IN2Pin = QO 595
// IN1Pin = Q1 595
// buttonA = D0 165
// buttonB = D1 165
// buttonC = D2 165
void setup() {
pinMode(dataPin595, OUTPUT);
pinMode(clockPin595, OUTPUT);
pinMode(latchPin595, OUTPUT);
pinMode(dataPin165, INPUT);
pinMode(clockPin165, OUTPUT);
pinMode(latchPin165, OUTPUT);
pinMode(clockEnablePin165, OUTPUT);
// pinMode(buttonA, INPUT_PULLUP);
// pinMode(buttonB, INPUT);
// pinMode(buttonC, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
digitalWrite(latchPin165, LOW);
delayMicroseconds(5);
digitalWrite(latchPin165, HIGH);
delayMicroseconds(5);
digitalWrite(clockPin165,HIGH);
digitalWrite(clockEnablePin165, LOW);
byte incoming = shiftIn(dataPin165,clockPin165 ,MSBFIRST );
digitalWrite(clockEnablePin165,HIGH);
Serial.print("Pin States:\r\n");
Serial.println(incoming, BIN);
delay(500);
if (incoming == B11111100){
digitalWrite(latchPin595, LOW);
shiftOut(dataPin595, clockPin595, LSBFIRST, pattern1);
digitalWrite(latchPin595, HIGH);
delay(100);
Serial.println("Start forward");
}
if (incoming == B11111011 ){
digitalWrite(latchPin595, LOW);
shiftOut(dataPin595, clockPin595, LSBFIRST, pattern2);
digitalWrite(latchPin595, HIGH);
// motorPush = 0;
// motorPull = 1;
delay(100);
Serial.println("Start backward");
}
if (incoming == B11111101 ){
digitalWrite(latchPin595, LOW);
shiftOut(dataPin595, clockPin595, LSBFIRST, pattern0);
digitalWrite(latchPin595, HIGH);
Serial.println("stop");
Serial.println("Stop");
delay(100);
}
}
// // Pulling the ball
// //if (digitalRead(buttonA) == LOW && digitalRead(buttonB) == LOW && digitalRead(buttonC) == HIGH) //On a press
// if
// {
// // motor running forward
// //digitalWrite(IN2Pin,HIGH);
// digitalWrite(latchPin595, LOW);
// shiftOut(dataPin595, clockPin595, LSBFIRST, pattern1);
// digitalWrite(latchPin595, HIGH);
// Serial.println("forward");
// }
// // coming back
// if (digitalRead(buttonA) == HIGH && digitalRead(buttonB) == HIGH && digitalRead(buttonC) == LOW)// switch after serving the ball
// {
// // motor running forward
// //digitalWrite(IN1Pin,HIGH);
// digitalWrite(latchPin595, LOW);
// shiftOut(dataPin595, clockPin595, LSBFIRST, pattern2);
// digitalWrite(latchPin595, HIGH);
// Serial.println("backward");
// }
// // Stop
// if ( digitalRead(buttonA) == HIGH && digitalRead(buttonB) == LOW && digitalRead(buttonC) == HIGH )// switch after serving the ball
// {
// // motor stops on the way back
// //digitalWrite(IN1Pin,LOW);
// //digitalWrite(IN2Pin,LOW);
// digitalWrite(latchPin595, LOW);
// shiftOut(dataPin595, clockPin595, LSBFIRST, pattern0);
// digitalWrite(latchPin595, HIGH);
// Serial.println("Stop");
// }
//165*******************************
// digitalWrite(load165, LOW);
// delayMicroseconds(5);
// digitalWrite(load165, HIGH);
// delayMicroseconds(5);
// digitalWrite(clockIn165, HIGH);
// digitalWrite(clockEnablePin165, LOW);
// byte incoming = shiftIn(dataIn165, clockIn,MSBFIRST );
// digitalWrite(clockEnablePin165, HIGH);
// Serial.print("Pin States:\r\n");
// Serial.println(incoming, BIN);
// delay(300);
// void loop() {
// // Load data from 74HC165
// digitalWrite(latchPin, LOW);
// delayMicroseconds(5); // Allow time for data to be latched
// digitalWrite(latchPin, HIGH);
// byte buttonState = shiftIn(dataPin, clockPin, MSBFIRST);
// // Assuming switches are connected to A and B, which are the first two bits (Q0 and Q1)
// bool switch1 = bitRead(buttonState, 0);
// bool switch2 = bitRead(buttonState, 1);
// // Toggle LED if either switch is pressed
// if (switch1 || switch2) {
// digitalWrite(ledPin, !digitalRead(ledPin));
// delay(500); // Simple debounce delay
// }
// }
// 595******************************
// digitalWrite(latchPin, LOW);
// shiftOut(dataPin, clockPin, LSBFIRST, pattern);
// digitalWrite(latchPin, HIGH);
// delay(500);
// pattern = ~pattern; // Invert the pattern
// if (digitalRead(buttonA) == HIGH && digitalRead(buttonB) == LOW)
// {
// delay(50);
// Serial.println("666");
// }
// if (digitalRead(buttonB) == HIGH && digitalRead(buttonA) == LOW)
// {
// Serial.println("888");
// }