私は私の甥のためのパズルに取り組んでいます。私は現在arduinoメガ、SDカードリーダーとキーパッドを持っています。すべてが正しく配線されており、現在プログラムされていますので、オーディオファイルよりも正しいパスワードを入力すると緑色のLEDが点灯します。私が苦労しているところでは、プログラムする方法がわからないので、間違ったパスコードを入力すると赤いLEDが点滅し、コードは0にリセットされます。私の現在のパスワードは1,2,3パスコードの間に乱数を追加すると、1,5,2,3、または1,3,2,2,3でもオーディオファイルが再生され、緑のLEDが点灯します。助言がありますか?
#include
#include
#include
#define SD_ChipSelectPin 53
TMRpcm tmrpcm;
char* password = "123";
int position = 0;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = { 8, 7, 6, 9 };
byte colPins[COLS] = { 5, 4, 3, 2 };
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int R = 12;
int G = 13;
void setup(){
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
LockedPosition(true);
tmrpcm.speakerPin = 46;
if (!SD.begin(SD_ChipSelectPin)) {
return;
}
}
void loop()
{
char key = keypad.getKey();
if (key == '*' || key == '#')
{
position = 0;
LockedPosition(true);
}
if (key == password[position])
{
position ++;
}
if (position == 3)
{
LockedPosition(false);
}
delay(100);
}
void LockedPosition(int locked)
{
if (locked)
{
digitalWrite(R, HIGH);
digitalWrite(G, LOW);
position=0;
}
else
{
digitalWrite(R, LOW);
digitalWrite(G, HIGH);
tmrpcm.setVolume(6);
tmrpcm.play("matt.wav"); ;
delay(10000);
digitalWrite(G,LOW);
}
}