本帖最后由 fbojue 于 2012-11-28 20:11 编辑
- //Pin connected to SH_CP of 74HC595
- int clockPin_1 = 2;
- //Pin connected to ST_CP of 74HC595
- int latchPin_1 = 3;
- ////Pin connected to DS of 74HC595
- int dataPin_1 = 4;
- int f_bit;
- int f_bits;
- int f_bits1;
- int f_bits2;
- int f_bits3;
- int f_bits4;
- byte final[1];
- byte numbers[1];
- int switchPin1=11;
- int switchPin2=10;
- int switchPin3=9;
- int switchPin4=8;
- int state1=1;
- int state2=1;
- int state3=1;
- int state4=1;
- void setup() {
- Serial.begin(9600);
- pinMode(switchPin1, INPUT);
- pinMode(switchPin2, INPUT);
- pinMode(switchPin3, INPUT);
- pinMode(switchPin4, INPUT);
-
- //set pins to output so you can control the shift register
- pinMode(latchPin_1, OUTPUT);
- pinMode(clockPin_1, OUTPUT);
- pinMode(dataPin_1, OUTPUT);
- }
- void loop() {
- digitalWrite(latchPin_1, LOW);
- final[f_bit]=B00000000;
-
- state1=digitalRead(switchPin1);
- state2=digitalRead(switchPin2);
- state3=digitalRead(switchPin3);
- state4=digitalRead(switchPin4);
-
- numbers[f_bits]=1;
- //=====================================//
- if(state1==0){
- while(1){
- _one();
- }
- }
- //=====================================//
-
- shiftOut(dataPin_1, clockPin_1, MSBFIRST, final[f_bit]);
- digitalWrite(latchPin_1, HIGH);
- Serial.print("switch1: ");
- Serial.print(state1);
- Serial.println();
- Serial.print("switch2: ");
- Serial.print(state2);
- Serial.println();
- Serial.print("switch3: ");
- Serial.print(state3);
- Serial.println();
- Serial.print("switch4: ");
- Serial.print(state4);
- Serial.println();
- Serial.println("LOOP");
- delay(1);
- }
- //================[1]==================//
- void _one(){
- if(state1==0){
- while (1){
- final[f_bits1]=numbers[f_bits];
-
- shiftOut(dataPin_1, clockPin_1, MSBFIRST, final[f_bits1]);
- digitalWrite(latchPin_1, HIGH);
-
- state1=digitalRead(switchPin1);
- state2=digitalRead(switchPin2);
- state3=digitalRead(switchPin3);
- state4=digitalRead(switchPin4);
-
- Serial.print("switch1: ");
- Serial.print(state1);
- Serial.println();
- Serial.print("switch2: ");
- Serial.print(state2);
- Serial.println();
- Serial.print("switch3: ");
- Serial.print(state3);
- Serial.println();
- Serial.print("switch4: ");
- Serial.print(state4);
- Serial.println();
- Serial.println("_one_1");
-
- if(state2==0){
- break;
- }
- }
- }else if( state2==0){
- while (1){
-
- final[f_bits2]=numbers[f_bits]*3;
-
- shiftOut(dataPin_1, clockPin_1, MSBFIRST, final[f_bits2]);
- digitalWrite(latchPin_1, HIGH);
-
- state1=digitalRead(switchPin1);
- state2=digitalRead(switchPin2);
- state3=digitalRead(switchPin3);
- state4=digitalRead(switchPin4);
- Serial.print("switch1: ");
- Serial.print(state1);
- Serial.println();
- Serial.print("switch2: ");
- Serial.print(state2);
- Serial.println();
- Serial.print("switch3: ");
- Serial.print(state3);
- Serial.println();
- Serial.print("switch4: ");
- Serial.print(state4);
- Serial.println();
- Serial.println("_one_2");
-
- if(state3==0){
- break;
- }
- }
-
- }else if(state3==0){
- while (1){
-
- final[f_bits3]=numbers[f_bits]*7;
-
- shiftOut(dataPin_1, clockPin_1, MSBFIRST, final[f_bits3]);
- digitalWrite(latchPin_1, HIGH);
-
- state1=digitalRead(switchPin1);
- state2=digitalRead(switchPin2);
- state3=digitalRead(switchPin3);
- state4=digitalRead(switchPin4);
-
- Serial.print("switch1: ");
- Serial.print(state1);
- Serial.println();
- Serial.print("switch2: ");
- Serial.print(state2);
- Serial.println();
- Serial.print("switch3: ");
- Serial.print(state3);
- Serial.println();
- Serial.print("switch4: ");
- Serial.print(state4);
- Serial.println();
- Serial.println("_one_3");
-
- if(state4==0){
- break;
- }
- }
-
- } else if(state4==0){
- while (1){
-
- final[f_bits4]=numbers[f_bits]*15;
-
- shiftOut(dataPin_1, clockPin_1, MSBFIRST, final[f_bits4]);
- digitalWrite(latchPin_1, HIGH);
-
- state1=digitalRead(switchPin1);
- state2=digitalRead(switchPin2);
- state3=digitalRead(switchPin3);
- state4=digitalRead(switchPin4);
- Serial.print("switch1: ");
- Serial.print(state1);
- Serial.println();
- Serial.print("switch2: ");
- Serial.print(state2);
- Serial.println();
- Serial.print("switch3: ");
- Serial.print(state3);
- Serial.println();
- Serial.print("switch4: ");
- Serial.print(state4);
- Serial.println();
- Serial.println("_one_4");
- }
- }
- }
- //=====================================//
复制代码
现在我的代码是这样的。关于以下这段我有个问题: - if(state1==0){
- while(1){
- _one();
- }
- }
复制代码
如果我不加条件只调用_one();的话,没有问题,但是一加条件,查看monitor的时候发现无论按哪个按钮,print的东西都是对的,但是就是灯不亮,只会亮第一个你按下的按钮控制的灯。
因为之后我会加很多东西,想确保只在一个条件下这部分函数才会起作用,我不知道该怎么办了TAT。。。
求帮助!!!
|