弘毅 发表于 2012-2-12 12:50
可以尝试使用arduino的中断来进行处理这个问题 - int led = 13;
- volatile int state = LOW;
- long randNumber;
- int pin[] = {1,2,4,5,6,7,9,10};
- int digit[16][8]={
- {1,1,1,0,1,1,1,0},
- {0,0,1,0,1,0,0,0},
- {1,1,0,0,1,1,0,1},
- {0,1,1,0,1,1,0,1},
- {0,0,1,0,1,0,1,1},
- {0,1,1,0,0,1,1,1},
- {1,1,1,0,0,1,1,1},
- {0,0,1,0,1,1,0,0},
- {1,1,1,0,1,1,1,1},
- {0,1,1,0,1,1,1,1}
- };
- void setup()
- {
- pinMode(led, OUTPUT);
- for(int i = 0; i < 8; i++)
- {
- pinMode(pin[i], OUTPUT);
- }
- attachInterrupt(1, blink, RISING);
- }
- void rad()
- {
- randNumber = random(0,10);
- for(int j = 0; j < 8; j++)
- {
- if(digit[randNumber][j] == 1)
- digitalWrite(pin[j], HIGH);
- else
- digitalWrite(pin[j], LOW);
- }
- }
- void loop()
- {
- digitalWrite(led, state);
- if(state)
- {
- rad();
- delay(500);
- }
- }
- void blink()
- {
- state = !state;
- }
复制代码 结合了一下中断的代码,已经可以了,谢谢哈。 |