Paso 8: El código
#include < Tone.h >
#define ERROR_WINDOW 50
#define intervalo 100
#define DEBUG_ON
int micVal = 0;
int micPin = 1;
Altavoz de tono;
int whichButton;
variable para limitar el botón conseguir controlar cada ciclo de
lastChecked largo = 0;
void setup() {}
Serial.Begin(9600);
Speaker.Begin(8);
}
void loop() {}
micVal = analogRead(micPin);
micVal = restringir (abs(micVal-512)-25,0,512);
Serial.println (micVal, DEC);
Si (micVal > = 50) {}
Si (millis() - lastChecked > intervalo) {}
Si (int buttNum = buttonPushed(0)) {}
{if(whichButton!=buttNum)}
interruptor (buttNum) {}
caso 1:
Speaker.Play(micVal/2);
rotura;
caso 2:
Speaker.Play(micVal);
rotura;
caso 3:
Speaker.Play(micVal+micVal/4);
rotura;
caso 4:
Speaker.Play(micVal+micVal/2);
rotura;
caso 5:
Speaker.STOP();
rotura;
}
whichButton = buttNum;
}
}
lastChecked = millis(); restablecer el valor de lastChecked
}
}
}
int buttonPushed (int pinNum) {}
variable para almacenar el valor leído
int val = 0;
habilitar el pullup interna de 20 k
digitalWrite((14+pinNum), HIGH);
leer la entrada de pin
Val = analogRead(pinNum);
#ifdef DEBUG_ON
Serial.println(Val);
#endif
/ * No use la posición superior ya que es lo mismo que el valor de todos los abiertos interruptor cuando está habilitado el interno 20K ohm pullup.
Si (val > = 923 y val < = 1023)
Serial.println ("este es el límite superior");
Si (val > = (825-ERROR_WINDOW) y val < = (825 + ERROR_WINDOW)) {/ / 825
retorno 1;
} else if (val > = (630-ERROR_WINDOW) y val < = (630 + ERROR_WINDOW)) {/ / 630
retorno 2;
} else if (val > = (435-ERROR_WINDOW) y val < = (435 + ERROR_WINDOW)) {/ / 435
retorno 3;
} else if (val > = (230-ERROR_WINDOW) y val < = (230 + ERROR_WINDOW)) {/ / 230
retorno 4;
} else if (val > = 0 y val < = (14 + ERROR_WINDOW)) {}
Retorno 5;
} else
return 0;
}