Öppna din dörr med en speciell knock med Arduino, Android-telefon och 1Sheeld (4 / 5 steg)
Steg 4: Arduino skiss
nu hämta Arduino IDE och bränna denna kod
I princip koden höra och spara knock och jämför med några andra knock att öppna dörren
#include < OneSheeld.h >
int pin1 = 9.
int pin2 = 10;
int pin3 = 11;
int pin4 = 12.
int led4 = 13.
int counter = 0;
int SEK = 0;
int höra [20] = {};
int sparade [20] = {};
int flagc = 0;
int flaggor = 0;
int flagf = 0;
int jag = 0;
int ii = 0;
void setup()
{
OneSheeld.begin();
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(pin4,OUTPUT);
pinMode(led4,OUTPUT);
}
void loop()
{
om (Keypad.isRowPressed(0) & & Keypad.isColumnPressed(3))
{
set();
}
annars om (Keypad.isRowPressed(1) & & Keypad.isColumnPressed(3))
{
Record();
}
annars om (Keypad.isRowPressed(2) & & Keypad.isColumnPressed(3))
{
check();
}
annat {
flagf = 0;
digitalWrite(pin1,LOW);
digitalWrite(pin2,LOW);
digitalWrite(pin3,LOW);
digitalWrite(pin4,LOW);
digitalWrite(led4,LOW);
}
}
void clc)
{
räknare = 0;
för (int jag = 0; jag < = 20; i ++)
{
höra [i] = 0;
sparade [i] = 0;
}
Jag = 0;
II = 0;
digitalWrite(led4,LOW);
}
void set()
{
om (flagf == 0)
{
CLC();
}
IF(MIC.getValue() > 80 & & flaggor == 0)
{
digitalWrite(led4,HIGH);
sparade [ii] = millis() - SEK;
SEC = millis();
II ++;
flaggor = 1;
}
om (Mic.getValue() < 80)
{
digitalWrite(led4,LOW);
flaggor = 0;
}
flagf = 1;
}
void (rekord)
{
IF(MIC.getValue() > 80 & & flagc == 0)
{
digitalWrite(led4,HIGH);
höra [i] = millis() - SEK;
SEC = millis();
i ++;
flagc = 1;
}
om (Mic.getValue() < 80)
{
digitalWrite(led4,LOW);
flagc = 0;
}
}
void check)
{om (jag == ii)
{
för (int j = 1; j < = jag, j ++)
{
int x = höra [j];
int y = sparade [j];
om (x + 400 > = y & & x-400 < = y)
{
räknaren ++;
}
}
om (counter == jag)
{
digitalWrite(pin1,HIGH);
digitalWrite(pin2,HIGH);
digitalWrite(pin3,HIGH);
digitalWrite(pin4,HIGH);
}
}
räknare = 0;
för (int jag = 0; jag < = 20; i ++)
{
höra [i] = 0;
}
Jag = 0;
}