Arduino 4 buton ile 4 LED kontrolü

KeremClk

Hectopat
Katılım
10 Aralık 2020
Mesajlar
22
Daha fazla  
Cinsiyet
Erkek
Selamlar dostlar, babam ile beraber bir işe giriştik sabah beri uğraşıyoruz. Derslerim için aldığı Arduino'yu bu sabah kaldırdı beni, bunu öğret bana dedi ve şu an eve akıllı giriş gibi bir sistem kodlamaya başladık beraber. Daha şu an için ufak adımlar ama eğer ki gerçekten iyi bir düzeye gelirse buradan da kaynak kodlarını atarım fakat şu an için yardıma ihtiyacım var.

Soru şu, 4 butonumuz var ve 4 LED 1. butona basılınca 1 ve 2 No'lu LED'ler yanacak, 2.butona basınca 3 ve 4 No'lu LED'ler yanacak. Eğer ki 3. butona basılırsa hepsi birden yanacak ve son olarak 4. butona basılırsa hepsi sönecek. Aslında bunu yapmayı becerdik ama sorun şu oldu, 1. butona basmadan diğer butonlar işlevsiz kalıyordu. Yani seri bağlı bir devre gibi ilerliyordu. En baştakine basılmadığı sürece devam etmiyor şeklinde oldu.

Umarım anlatabilmişimdir derdimi. Şu anda denediğim kodlar var, onu aşağıya bırakıyorum. Yanlış yaptığım yer varsa ya da ne yapmam gerekiyorsa söylerseniz sevinirim. Bu arada devreyi Arduino ile kurmadım. Proteus programından kurdum ve çalışıp çalışmadığına oradan bakıyorum.

Kod:
int led=13,led1=12,led2=11,led3=10,buton1=1,buton2=2,buton3=3,buton4=4;
int durum1,durum2,durum3,durum4;
int sayac=0;
void setup() {
pinMode(led,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(buton1,INPUT);
pinMode(buton2,INPUT);
pinMode(buton3,INPUT);
pinMode(buton4,INPUT);
}
void loop() {
durum1=digitalRead(buton1);
durum2=digitalRead(buton2);
durum3=digitalRead(buton3);
durum4=digitalRead(buton4);

switch(durum1)
{
case 1:
digitalWrite(led,HIGH);
delay(50);
digitalWrite(led1,HIGH);
delay(50);
durum1=0;
break;}

switch(durum2)
{
case 1:
digitalWrite(led2,HIGH);
delay(50);
digitalWrite(led3,HIGH);
delay(50);
durum2=0;
break;}

switch(durum3)
{
case 1:
digitalWrite(led,HIGH);
delay(50);
digitalWrite(led1,HIGH);
delay(50);
digitalWrite(led2,HIGH);
delay(50);
digitalWrite(led3,HIGH);
delay(50);
durum3=0;
break;}

switch(durum4)
{
case 1:
sayac++;
break;}

if(sayac,1){
digitalWrite(led,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
sayac=0;
}
}
 
C++:
#define led1 13
#define led2 12
#define led3 11
#define led4 10
int buton1 = 1;
int buton2 = 2;
int buton3 = 3;
int buton4 = 4;

int buton_deger1;
int buton_deger2;
int buton_deger3;
int buton_deger4;

void setup() {
  pinMode(led4,OUTPUT);
  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(buton1,INPUT);
  pinMode(buton2,INPUT);
  pinMode(buton3,INPUT);
  pinMode(buton4,INPUT);
}

void loop() {
  buton_deger1 = digitalRead(buton1);
  buton_deger2 = digitalRead(buton2);
  buton_deger3 = digitalRead(buton3);
  buton_deger4 = digitalRead(buton4);
 
  if(buton_deger1 == 1){
    durum1();
  }
  else if(buton_deger2 == 1){
    durum2();
  }
  else if(buton_deger3 == 1){
    durum3();
  }
  else if(buton_deger4 == 1){
    durum4();
  }
}
void durum1(){
  digitalWrite(led1, 1);
  digitalWrite(led2, 1);
}
void durum2(){
  digitalWrite(led3, 1);
  digitalWrite(led4, 1);
}
void durum3(){
  digitalWrite(led1, 1);
  digitalWrite(led2, 1);
  digitalWrite(led3, 1);
  digitalWrite(led4, 1);
}
void durum4(){
  digitalWrite(led1, 0);
  digitalWrite(led2, 0);
  digitalWrite(led3, 0);
  digitalWrite(led4, 0);
}

Şunu deneyebilir misin? Kendim sıfırdan yazdım, şimdilik bir hata görünmüyor.
 
C++:
#define led1 13.
#define led2 12.
#define led3 11.
#define led4 10.
int buton1 = 1;
int buton2 = 2;
int buton3 = 3;
int buton4 = 4;

int buton_deger1;
int buton_deger2;
int buton_deger3;
int buton_deger4;

void setup() {
pinMode(led4,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(buton1,INPUT);
pinMode(buton2,INPUT);
pinMode(buton3,INPUT);
pinMode(buton4,INPUT);
}

void loop() {
buton_deger1 = digitalRead(buton1);
buton_deger2 = digitalRead(buton2);
buton_deger3 = digitalRead(buton3);
buton_deger4 = digitalRead(buton4);

if(buton_deger1 == 1){
durum1();
}
else if(buton_deger2 == 1){
durum2();
}
else if(buton_deger3 == 1){
durum3();
}
else if(buton_deger4 == 1){
durum4();
}
}
void durum1(){
digitalWrite(led1, 1);
digitalWrite(led2, 1);
}
void durum2(){
digitalWrite(led3, 1);
digitalWrite(led4, 1);
}
void durum3(){
digitalWrite(led1, 1);
digitalWrite(led2, 1);
digitalWrite(led3, 1);
digitalWrite(led4, 1);
}
void durum4(){
digitalWrite(led1, 0);
digitalWrite(led2, 0);
digitalWrite(led3, 0);
digitalWrite(led4, 0);
}

Şunu deneyebilir misin? Kendim sıfırdan yazdım, şimdilik bir hata görünmüyor.

Hocam denedim fakat şöyle bir sorun ile karşılaşıyoruz. Sadece Arduino'nun 1. pinine bağlı olan buton çalışıyor, diğer butonlar çalışmıyor. Sadece sizin attığınız bu kodlarda değil, diğer kendi yazdıklarımda da aynı şey oluyor.
 
Hocam denedim fakat şöyle bir sorun ile karşılaşıyoruz sadece Arduino'nun 1. pinine bağlı olan buton çalışıyor diğer butonlar çalışmıyor.
Buton bozuk olabilir. Ya da Arduino'nun 2-3-4. pinleri. 1. ve 2. butonun yerini değiştirmeyi dene, bir de öyle bakalım.
 

Geri
Yukarı