kronometer yazılım için yardım

isma5

Üye
Katılım
23 Eyl 2007
Mesajlar
6
Puanları
1
Yaş
39
Sayın Yetkili arkadaşlar..

Ardiuno yazılımı için yeni başladım.
kronometre yazılımı var. butom bir kere bastığımda saymaya başlasın istemiyorum fakat butom basılı tuttuğumda saymaya başlıyor. çektiğimde duruyor.
buton bir kere basıldığında çalışsın tam 60dk olduğunda bazır çalsın ayrı bir butom basıldığında bazır sussun
Aşağıda yazılım var.
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int sec=00;
int mn=00;
//int hr=00;
const int butonPin = 1; // buton pin1
const int bazirPin = 13; // bazır pin13
int butonDurumu = 0; // start buton
int a;
void setup(){
lcd.begin(16,2);
//lcd.setCursor(0,0);
//lcd.print("Kronometre");
pinMode(butonPin,INPUT); // kronometre start çalıştırma
pinMode(bazirPin,OUTPUT); // bazir 60sn uyarı
digitalWrite(butonPin, HIGH);
}

void loop(){
butonDurumu = digitalRead(butonPin);
if (butonDurumu==HIGH)
{
a=1;
baslat();
}
}
void baslat(){
//if (butonDurumu==HIGH)
//while(1);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Kronometre");
lcd.setCursor(4,1);
//lcd.print(hr);
lcd.setCursor(6,1);
lcd.print(":");
lcd.print(mn);
lcd.setCursor(9,1);
lcd.print(":");
lcd.print(sec);
sec=sec+1;
delay(1000);
if (sec==10){
sec=00;
mn=mn+1;
}else;
if(mn==2){
mn=0;
digitalWrite(bazirPin,HIGH);
//hr=hr+1;
delay(1000);
digitalWrite(bazirPin,LOW);
sec=0;
mn=0;
}
}

Saygılarımla
 
kardeşim merak etme yardım her zaman var.
istiyorsun ki ben butona basayım saymaya başlasın. 60 saniye sonra buzzer çalsın butona basınca buzzer sussun.
basılı tutunca sayması normal. çünkü if kullanılmış.
millis fonksyonunu kullanarak bir süre tutma tekniği var.
ama while da kullanabilirsin. veya for. ben şahsen for u tavsie ederim.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
#define butonPin 4
#define bazirPin 5
int sure=0
int butonDurumu;
void setup(){
pinMode(bazirPin, OUTPUT);
pinMode(butonPin, INPUT);
}
void loop(){
lcd.clear();
sure=0;
lcd.home();
lcd.print("Kronometre");
butonDurumu = digitalRead(butonPin);
if(butonDurumu == HIGH){
for(sure=0; sure<=60; sure+=1){
lcd.setCursor(0,1);
lcd.print(sure);
delay(998);
//burada delay 1000 yazmamamın sebebi yukarıdaki lcd yazma işlemlerinin aldığı birkaç ms zaman //yüzünden sapmalar olması ihtimalidir. nolur nolmaz 998 yazdım.
}
}
digitalWrite(bazirPin, HIGH);
butonDurumu = digitalRead(butonPin);
if(butonDurumu==HIGH)
digitalWrite(bazirPin, LOW);
}


bir de bu kodu dene bakalım. bu arada buzzer ve butonun pinlerini değiştirdim. 1. pin pek uygun değil çünkü bilgisayara haberleşme sağlayan pin. projelerde kullanılmaması tavsiye edilir.
gördüğün gibi for ile 0 dan 60a sayıp bunu ekranda gösterebiliyoruz.
 
kardeşim merak etme yardım her zaman var.
istiyorsun ki ben butona basayım saymaya başlasın. 60 saniye sonra buzzer çalsın butona basınca buzzer sussun.
basılı tutunca sayması normal. çünkü if kullanılmış.
millis fonksyonunu kullanarak bir süre tutma tekniği var.
ama while da kullanabilirsin. veya for. ben şahsen for u tavsie ederim.

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
#define butonPin 4
#define bazirPin 5
int sure=0
int butonDurumu;
void setup(){
pinMode(bazirPin, OUTPUT);
pinMode(butonPin, INPUT);
}
void loop(){
lcd.clear();
sure=0;
lcd.home();
lcd.print("Kronometre");
butonDurumu = digitalRead(butonPin);
if(butonDurumu == HIGH){
for(sure=0; sure<=60; sure+=1){
lcd.setCursor(0,1);
lcd.print(sure);
delay(998);
//burada delay 1000 yazmamamın sebebi yukarıdaki lcd yazma işlemlerinin aldığı birkaç ms zaman //yüzünden sapmalar olması ihtimalidir. nolur nolmaz 998 yazdım.
}
}
digitalWrite(bazirPin, HIGH);
butonDurumu = digitalRead(butonPin);
if(butonDurumu==HIGH)
digitalWrite(bazirPin, LOW);
}


bir de bu kodu dene bakalım. bu arada buzzer ve butonun pinlerini değiştirdim. 1. pin pek uygun değil çünkü bilgisayara haberleşme sağlayan pin. projelerde kullanılmaması tavsiye edilir.
gördüğün gibi for ile 0 dan 60a sayıp bunu ekranda gösterebiliyoruz.

Sayın Berad Bey
öncelikle yardımlarınız için çoook teşekkürler.Tam istediğim gibi olmuş..
similasyonda denedim buton bastığımda kronometre saymaya başlıyor fakat bu arada buzer aktif oluyor. 60 dk olduğunda buzer sıfırlanmıyor. devamlı yanıyor.
aşağıda simulasyon resmini yoluyorum..
şimdiden teşekkürler.
upload_2018-3-2_22-28-40.png

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
#define butonPin 9
#define bazirPin 8
int sure=0;
int butonDurumu=0;
void setup(){
pinMode(bazirPin, OUTPUT);
pinMode(butonPin, INPUT);
}
void loop(){
lcd.clear();
sure=0;
lcd.home();
lcd.print("Kronometre");
butonDurumu = digitalRead(butonPin);
if(butonDurumu == HIGH){
for(sure=0; sure<=60; sure+=1){
lcd.setCursor(1,0);
lcd.print(sure);
delay(998);
//burada delay 1000 yazmamamın sebebi yukarıdaki lcd yazma işlemlerinin aldığı birkaç ms zaman //yüzünden sapmalar olması ihtimalidir. nolur nolmaz 998 yazdım.

}
}
digitalWrite(bazirPin, HIGH);
butonDurumu = digitalRead(butonPin);
if(butonDurumu==HIGH)
digitalWrite(bazirPin, LOW);
}
 
Moderatör tarafında düzenlendi:
Sayın Berat Bey Kardeşim ...
Sonunda biraz uğraşlar birde sizin sayenizde istediğim gibi çalıştırdım. Valla bu yazılımı için bir aydan beri uğraşıyorum ne diyeyim Allah başımızdan sizleri eksik etmesin amin. Ben son halini aşağıda sizlerle paylaşmak istiyorum fakat sizleri yine rahatsız edeceğim sabırlarınız ve her şey için teşekkürler..

#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
#define butonPin 9
#define bazirPin 8
int bazir=0;
int sure=0;
int butonDurumu=0;
void setup(){
pinMode(bazirPin, OUTPUT);
pinMode(butonPin, INPUT);
digitalWrite(bazirPin, LOW);
}
void loop(){
lcd.clear();
sure=0;
lcd.home();
//lcd.print("Kronometre");
butonDurumu = digitalRead(butonPin);
if(butonDurumu == HIGH){
digitalWrite(bazirPin, LOW); // bu satıra EKLEDİM istedigim gibi çalıştı:.....
for(sure=0; sure<=6; sure+=1){
lcd.setCursor(1,0);
lcd.print(sure);
delay(998);
//burada delay 1000 yazmamamın sebebi yukarıdaki lcd yazma işlemlerinin aldığı birkaç ms zaman //yüzünden sapmalar olması ihtimalidir. nolur nolmaz 998 yazdım.
}
digitalWrite(bazirPin, HIGH);
}else{
butonDurumu = digitalRead(butonPin);
if(butonDurumu==HIGH)
digitalWrite(bazirPin, LOW);
}
}
 

Yeni mesajlar

Forum istatistikleri

Konular
128,158
Mesajlar
915,525
Kullanıcılar
449,904
Son üye
teknikbilimlers31

Yeni konular

Çevrimiçi üyeler

Geri
Üst