const int FS = 0;//发球按键
const int SJ = 1;//随机发射按键
//74HC165
const int dataPin_165 = 2; //74HC165-dataPin
const int clockPin_165 = 3; //74HC165-clockPin
const int latchPin_165 = 4; //74HC165-latchPin
const int CLK_INH = 12;
//四位数码管
const int DIO = 5; //数码管DIO
const int RCLK = 6;//数码管RCLK
const int SCLK = 7;//数码管SCLK
//74HC595
const int clockPin_595 = 8; //74HC595-clockPin
const int latchPin_595 = 9; //74HC595-latchPin
const int dataPin_595 = 10; //74HC595-dataPin
//模拟量输入
const int DWQ = A0;//调速电位器
const int XYG = A1;//X摇杆
const int YYG = A2;//Y摇杆
// 定义四个点亮时长(毫秒)
const int durations[] = {5000, 10000, 15000, 20000};
unsigned long startTime2 = 0; //电机2随机启动时间
unsigned long startTime3 = 0; //电机3随机启动时间
unsigned long dj_2_Duration = 0; //电机2随机运行时间
unsigned long dj_3_Duration = 0; //电机3随机运行时间
unsigned long currentTime2 =0;//电机2随机运行比较时间
unsigned long currentTime3 =0;//电机3随机运行比较时间
void setup() {
Serial.begin(9600);
//两个按键
pinMode(FS,INPUT_PULLUP);
pinMode(SJ,INPUT_PULLUP);
//四位数码管
pinMode(SCLK,OUTPUT);
pinMode(RCLK,OUTPUT);
pinMode(DIO,OUTPUT);
//74HC165
pinMode(dataPin_165, INPUT);
pinMode(clockPin_165, OUTPUT);
pinMode(latchPin_165, OUTPUT);
digitalWrite(latchPin_165, LOW);
//74HC595
pinMode(dataPin_595, OUTPUT);
pinMode(clockPin_595, OUTPUT);
pinMode(latchPin_595, OUTPUT);
}
void loop()
{
//定义摇杆模拟量
int left_right = analogRead(XYG);
int up_down = analogRead(YYG);
// Serial.println(read165(),BIN);
// Serial.println("------");
// byte sda=0b00100000;
// if(sda == read165())
// {
// Serial.println("::1");
// }else
// {
// Serial.println("::0");
// }
// if(left_right<450)//左右摇杆,向右
// {
// Serial.print("left_right:");
// Serial.println(left_right);
// if(read165()!=0b00100000)//3号判断电机2正限位是否被触发
// {
// //电机2正转
// dj_2_Z();
// }else
// {
// Serial.print("right_stop:");
// //电机停止
// dj_S();
// }
// }else if(left_right>580)//左右摇杆,向左
// {
// Serial.print("left_right:");
// Serial.println(left_right);
// if(read165()!=0b00010000)//4号判断电机2负限位是否被触发
// {
// //电机2反转
// dj_2_F();
// }else
// {
// Serial.print("left_stop:");
// //电机停止
// dj_S();
// }
// }else//左右摇杆,居中
// {
// //电机停止
// dj_S();
// }
// if(up_down>580)//上下摇杆,向上
// {
// Serial.print("up_down:");
// Serial.println(up_down);
// if(read165()!=0b00100000)//5号判断电机3正限位是否被触发
// {
// //电机3正转
// dj_3_Z();
// }else
// {
// Serial.print("up_stop:");
// //电机停止
// dj_S();
// }
// }else if(up_down<450)//上下摇杆,向下
// {
// Serial.print("up_down:");
// Serial.println(up_down);
// if(read165()!=0b00010000)//6号判断电机3负限位是否被触发
// {
// //电机3反转
// dj_3_F();
// }else
// {
// Serial.print("down_stop:");
// //电机停止
// dj_S();
// }
// }else //上下摇杆,居中
// {
// //电机停止
// dj_S();
// }
read165();
delay(2000);
}
byte read165()//74HC165读取函数,将165中的Q0-Q7存储成一个字节,低位在前高位在后1000 0000代表Q0触发
{
byte byteValue = 0; // 用于存储转换后的字节值
digitalWrite(latchPin_165, LOW);
delayMicroseconds(1); // 短暂延迟确保稳定
digitalWrite(latchPin_165, HIGH); // Shift out the next bit
delayMicroseconds(1); // 短暂延迟确保稳定
// Step 2: Shift
for (int i = 0; i < 8; i++) {
digitalWrite(clockPin_165, HIGH); // Shift out the next bit
delayMicroseconds(1); // 短暂延迟确保稳定
digitalWrite(CLK_INH, LOW);
bool bit = digitalRead(dataPin_165);
// if (bit == HIGH) {
// byteValue |= (1 << i);
// } else {
// byteValue |= (0 << i);
// }
byteValue = (byteValue << 1) | bit;
digitalWrite(CLK_INH, HIGH);
delayMicroseconds(1); // 短暂延迟确保稳定
}
Serial.println("******");
Serial.print(byteValue,BIN);
Serial.println();
return byteValue;
}