cihat
cihat
Antalya
01/11/2017 tarihinden beri üye
50 GY Puanı
55K GY Sırası

Kişisel Sayfaları

İlgi Alanları

2 Rozet
1 Sertifika
1 Soru Sordu
1 Cevap Verdi
0 Blog Yazısı
0 Etiket Takibi

Hakkında

İş Tecrubesi

Kullanıcıya ait İş tecrübesi bilgisi bulunmamaktadır.

Eğitim Geçmişi

Kahramanmaraş Sütçü İmam Üniversitesi
| Aralık 2020 - Aralık 2020

Sertifikalar & Başarılar

GY Sertifikaları (1)
Arduino 101 Sertifikası
Veriliş Tarihi: Kasım 2017
Diğer Sertifikaları (0)
Kullanıcıya ait sertifika bulunmamaktadır.
Test Sonuçları (0)

Kullanıcıya ait test sonucu bulunmamaktadır.

Dil Becerileri

Son Forum Aktiviteleri

2
Tümünü Gör

6 butonla art arda yazı yazdırabilir miyim?

şu şekilde yazdım:

#include <SPI.h>
#include <DMD2.h>
#include <fonts/SystemFont5x7.h>
SoftDMD dmd(1,1);
DMD_TextBox box(dmd);
const int buton1=22;
const int reset2=25;
const int buton2=24;
const int reset1=23;
const int buton3=26;
const int reset3=27;

 void setup() {
  Serial.begin (9600);
  dmd.setBrightness (255);
  dmd.begin();
  dmd.selectFont(SystemFont5x7);  
   pinMode (buton1,INPUT);
  pinMode (reset1,INPUT);
  pinMode (buton2,INPUT);
  pinMode (reset2,INPUT);
  pinMode (buton3,INPUT);
  pinMode (reset3,INPUT);
 
}
void loop() {
  if (digitalRead(buton1)==HIGH)
  {box.println("KIS-1");  
  }    
  else if (digitalRead(buton2)==HIGH)
  {box.println("KIS-2");
  } 
  else if (digitalRead(buton3)==HIGH)
  {box.println("KIS-3");
  }      
  else if (digitalRead(reset1)==HIGH)
  {box.println ("       ");}  
  else if (digitalRead(reset2)==HIGH)
  {box.println ("       ");}  
  else if (digitalRead(reset3)==HIGH)
  {box.println ("       ");}  
   else {} 

}

iyi günler cümleten

arduinio mega ile yapmak istediğim şu şekilde

buton1,buton2,buton3,reset1,reset2,reset3 şeklinde 3 butonum var. buton1 e bastığımda p10 panelde "kısım1" yazacak ; reset1 e bastığımda ise bu yazanı söndürecek.sırasıyla buton2 "kısım 2" yazacak reset2 sönürecek aynı şekilde de 3. buton...

yalnız önemli bir nokta buton1 e basıldı "kısım1" yazdı; sonrasında buton 2 ye basıldığında panelde sırasıyla "kısım1" ve "kısım2" yazacak; diyelim reset 2 ye bastık kısım2 sönecek kısım 1 yanmaya devam edecek ta ki reset1 e basana kadar.

if else ile programı yazdım, fakat hem eksik hem de  bir kez bastıktan sonra diğer butona bastığımda en az 10sn bastıktan sonra alıyor. direnç port ayarı vs hepsi tamam 

bu problemi çözmek için kesme mi kullanmalıyım?

eğer ki kullanacaksam belki 16 buton bağlamam gerekirse nasıl bir kesme kullanmalıyım?

şimdiden yardımlarınız için teşekkürler

6 yıl 5 ay önce yanıtladın

6 butonla art arda yazı yazdırabilir miyim?

21 Kasım 2017 tarihinde cevaplandı

üstadım cevabınız için çok teşekkür ederim.kesinlikle faydalı oldu.geri dönüşü biraz geç yazdığım için de kusruma bakmayın.bu projeyi kamuya fayda amaçlı hazırlıyorum. aynı zamanda memur olduğumuzdan bos vaktimde uğraşabiliyorum. yazdığınıza göre programı yazdım . fakat istenmeyen 2 durum oluşuyor.

1.si bu 3 lü durum için 2^3 +1=9 koşul yazmamız gerekiyor. fakat 8 veya daha fazla kısım yaptığımızda kombinasyon çok büyük oluyor.

2.si buzzer bağlayıp delay ile beklettiğimiz ms süre içerisinde -tam beklemeye girdiği süre içinde ise- başka butonu algılamıyor. (yani 1000 ms delay yapıp önce buton1 e sonra buton2 ye bastığımızda 1000 ms aralıkla hem buzzer calışıp hem sıralı KIS-1 ve KIS-2 yanıyor.fakat ilk 1000ms de reset butonunu algılamıyor sonraki 1000ms de algılıyor. ya da tam tersi.)

bu durumu araştırmalarıma göre sanırsam kesmelerle çözeceğiz. fakat nasıl bir interrupt yazabiliriz? dış interrupt veya dış interrupt hangisini kullanacağız. bir çözümünüz var mıdır.kodlar aşağıda:

#include <SPI.h>
#include <DMD2.h>
#include <fonts/Droid_Sans_16.h>
#include <fonts/SystemFont5x7.h>
SoftDMD dmd(1,1);
DMD_TextBox box(dmd);
const int buton1=22;
const int reset2=25;
const int buton2=24;
const int reset1=23;
const int buton3=26;
const int reset3=27;
const int buzzer=28;
int b1;
int b2;
int b3;
int C = 262;
int F = 494;

 void setup() {
  Serial.begin (9600);
  dmd.setBrightness (255);
  dmd.begin();
  dmd.selectFont(Droid_Sans_16);  
   pinMode (buton1,INPUT);
  pinMode (reset1,INPUT);
  pinMode (buton2,INPUT);
  pinMode (reset2,INPUT);
  pinMode (buton3,INPUT);
  pinMode (reset3,INPUT);
 pinMode (buzzer,OUTPUT);
}
void loop() {
  if (digitalRead(buton1)==HIGH)
  {b1=true;}
   else {}  
   if (digitalRead(buton2)==HIGH)
  {b2=true;}
   else {}  
  if (digitalRead(buton3)==HIGH)
  {b3=true;}  
   else {}     
  if (digitalRead(reset1)==HIGH)
  {b1=false;} 
   else {}  
  if (digitalRead(reset2)==HIGH)
  {b2=false;} 
   else {}  
   if (digitalRead(reset3)==HIGH)
  {b3=false;} 
   else {} 
  if(b1 && !b2 && !b3)
  {box.println("KIS-1");  
  tone(buzzer,C);
  delay(1000);
  noTone(buzzer);
  delay (1000);}
  else if(!b1 && b2 && !b3) 
  {box.println("KIS-2");
   tone(buzzer,C);
  delay(1000);
  noTone(buzzer);
  delay (1000);}
 else if(!b1 && !b2 && b3)
  {box.println("KIS-3");
   tone(buzzer,C);
  delay(1000);
  noTone(buzzer);
  delay (1000);}
 else if(!b1 && !b2 && !b3)
  {box.println ("");
  
  noTone(buzzer);
  delay (1000);}
  else if (b1 && b2 && !b3)
 { box.println ("KIS-1");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);
  box.println ("KIS-2");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);}
   else if (!b1 && b2 && b3)
 { box.println ("KIS-2");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);
  box.println ("KIS-3");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);}
     else if (b1 && !b2 && b3)
 { box.println ("KIS-1");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);
  box.println ("KIS-3");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);}
  else if (b1 && b2 && b3)
  {box.println ("KIS-1");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);
  box.println ("KIS-2");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);
  box.println ("KIS-3");
  tone(buzzer,F);
  delay(1000);
  noTone(buzzer);
  delay (1000);}
   else {} 

}