Merhabalar,
5*4 bir keypad kullanarak belli fonksiyonları çağırmak istiyorum. Ancak tıkandım. Önce F1 tuşuna, sonra 1 tuşuna basınca belirlediğim 1. fonksiyonu çalıştırmasını istiyorum. Ya da önce F1 tuşuna ardından 2 tuşuna basınca belirlediğim 2. fonksiyonu çalıştırmak istiyorum. Ancak işin içerisinden çıkamadım.
Kullandığım keypad:
#include<Keypad.h>
#define calisma_suresi 100
#define role1 4
#define motor_role 3
char tus_takimi[5][4]={
{'S', '0', 'D', 'R'},
{'7', '8', '9', 'E'},
{'4', '5', '6', 'A'},
{'1', '2', '3', 'Y'},
{'F', 'G', '#', '*'}
};
byte satir_pinleri[4]={13,12,11,10};
byte sutun_pinleri[5]={9,8,7,6,5};
Keypad tuslar = Keypad(makeKeymap(tus_takimi) , sutun_pinleri , satir_pinleri , 5 , 4);
void role_1_fonk()
{
digitalWrite(role1,HIGH); //Role açılıyor
digitalWrite(motor_role,HIGH);
delay(calisma_suresi); //Çalışma süresi kadar açık kalıyor
digitalWrite(motor_role,LOW);
digitalWrite(role1,LOW); //Role kapanıyor
delay(calisma_suresi);
}
void setup()
{
Serial.begin(9600);
pinMode(role1,OUTPUT);
pinMode(motor_role,OUTPUT);
}
void loop()
{
char tus = tuslar.getKey();
if(tus=='1')
{
Serial.println(tus);
role_1_fonk();
}
}
Bu kod şu anda sadece 1 tuşuna bastığımda fonksiyonu çalıştırıp röleyi açıyor. Ancak dediğim gibi önce F1 tuşuna basıp sonrasında 1’i tuşladığımda çalışmasını istiyorum.
Not: Tuş atmasını ancak bu şekilde doğru sonuç alabildiğim için dağınık.