Здравейте,
от доста време насам съм започнал да изработвам устройство за управление чрез DTMF от общ характер. Като начало ще го разработя да си паля колата зимата
Идеята е освен самото запалване да може да се контролират 5-6 консуматора (вентилатор на парното, светлини и други).
За приемник и декодер на DTMF използвам чип 8870.
Поради недостига на свободно време е силно изразен в моето ежедневие, съм стигнал до "разкодирането" на постъпващите цифри и съм забил тук.
int Q1_PIN = 2;
int Q2_PIN = 4;
int Q3_PIN = 7;
int Q4_PIN = 8;
int StD_PIN = 13;
int LED_PIN = 3;
int tempNum;
char tempChar;
int inKey[3]; //array for incomming password store
int myKey[3] = {1, 2, 3, 4}; //Password
void setup()
{
pinMode(Q1_PIN, INPUT);
pinMode(Q2_PIN, INPUT);
pinMode(Q3_PIN, INPUT);
pinMode(Q4_PIN, INPUT);
pinMode(StD_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
analogWrite(LED_PIN,255);
delay(100);
for(int i=255;i>=10;i--)
{
analogWrite(LED_PIN,i);
delay(4);
}
Serial.begin(9600);
Serial.println("Ready for DTMF...");
}
void loop()
{
while (digitalRead(StD_PIN) == 0); //waiting for StD signal
int q1= digitalRead(Q4_PIN);
int q2= digitalRead(Q3_PIN);
int q3= digitalRead(Q2_PIN);
int q4= digitalRead(Q1_PIN);
if (q4 == HIGH){
tempNum = 1; //make tempNum equal 1 if q4 is high
}
else{
tempNum = 0; // if q1 is low make it zero
}
if (q3 == HIGH) tempNum = tempNum + 2; //add "2" to tempNum if q3 is high
if (q2 == HIGH) tempNum = tempNum + 4; //add "4" to tempNum if q2 is high
if (q1 == HIGH) tempNum = tempNum + 8; //add "8" to tempNum if q1 is high
switch (tempNum) {
case 10:
tempNum = 0;
break;
case 11:
tempChar = '*';
break;
case 12:
tempChar = '#';
break;
case 13:
tempChar = 'A';
break;
case 14:
tempChar = 'B';
break;
case 15:
tempChar = 'C';
break;
case 0:
tempNum = 16;
tempChar = 'D';
break;
}
Serial.println(tempNum);
while (digitalRead(StD_PIN) == 1); //waiting for StD signal
}
Алгоритъма който желая да постигна е следния:
1.Въвеждане на парола (4 символа)
Сверяване на паролата if(inKey==myKey)...
1.1 Грешна парола (изчакване 20 сек)
1.2 Вярна парола (продължаваме)
Разбирам, че това е в основата на целия проект, но познанията ми не достигат за да продължа нататък. Надявам се някой да ми даде пример как да записвам подаваните стойности в масив или по друг начин.
Поздрави, Калин