帮我编写这个程序
//code
const int buttonPin = 10;
int buttonState = 0;
void setup(){
Serial.begin(9600);
//initialize pin 2 - 9 as output
for(int i=2;i<=9;i++){
pinMode(i,OUTPUT);
}
pinMode(buttonPin, INPUT);
}
void loop(){
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
s1();
s2();
s3();
s4();
}
}
void s1(){
int i = 2 ;
for(int z=0;z<=1;z++){
for(int x=i;x<=9;x++){
digitalWrite(i,HIGH);
digitalWrite(x-1,LOW);
delay(500);
i = i + 1;
}
i = 2;
if(i = 2){
digitalWrite(9,LOW);
}
}
}
void s2(){
int y = 9;
for(int i=0;i<=1;i++){
for(int x=2;x<=5;x++){
if(y>=1){
digitalWrite(x,HIGH);
digitalWrite(y,HIGH);
delay(500);
y = y - 1;
}
}
off();
y = 9;
delay(500);
}
}
void s3(){
for(int i=0;i<=2;i++){
for(int z=2; z<=9;z++){
if(z % 2 == 0){
digitalWrite(z,HIGH);
}
}
delay(500);
for(int z=2; z<=9;z++){
if(z % 2 == 0){
digitalWrite(z,LOW);
}
}
delay(500);
for(int z=2; z<=9;z++){
if(z % 2 != 0){
digitalWrite(z,HIGH);
}
}
delay(500);
for(int z=2; z<=9;z++){
if(z % 2 != 0){
digitalWrite(z,LOW);
}
}
delay(500);
}
}
void s4(){
for(int i=0;i<=2;i++){
for(int x=2;x<=9;x++){
digitalWrite(x,HIGH);
delay(500);
}
off();
delay(500);
}
}
void off(){
for(int i=2;i<=9;i++){
digitalWrite(i,LOW);
}
}
答案 0 :(得分:0)
你的意思是那样的?我使用了内部上拉和按钮作为低电平有效开关,因此我使用了与LOW进行比较:
const int btn = 4;
byte btn_tim_on = 0;
byte btn_tim_off = 0;
byte btn_val = 0;
void setup() {
pinMode(btn, INPUT_PULLUP);
Serial.begin(57600); // debug purposes
}
void loop() {
if (digitalRead(btn) == LOW) {
if (++btn_tim_on == 5) { // 5 checks before it's considered as key press and every 256*4ms repeat
++btn_val;
}
btn_tim_off = 80; // about 0.32 second to confirm
} else {
btn_tim_on = 0; // reset button pressed timer
if (btn_tim_off > 0) {
if (--btn_tim_off == 1) { // call action
Serial.println(btn_val); // print in serial monitor
switch (btn_val) {
case 1: s1(); break;
case 2: s2(); break;
case 3: s3(); break;
case 4: s4(); break;
default: Serial.println(F("no action")); break;
}
}
} else {
btn_val = 0; // reset button press counter
}
}
delay(4);
}
// where to place s1, s2, s3 and s4 ...
// playing these actions is blocking, so no keys are detected during "play"