Kişisel Sayfaları
İlgi Alanları
İş Tecrubesi
Eğitim Geçmişi
Dil Becerileri
Son Forum Aktiviteleri
26 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 butonla art arda yazı yazdırabilir miyim?
ü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 {}
}