Butona bastıktan sonra yanıp devamında sönecek?

  • Konbuyu başlatan explopix
  • Başlangıç tarihi
E

explopix

Ziyaretçi
Arkadaşlar Merhaba, Arduinoda butona bastıktan sonra 1 dk boyunca yanan ve devamında sönen ledin koduna ihtiyacım var. Bu işlemi de millis fonksiyonu ile yapmam gerekiyor. (delay işimi görmez, butona basıp ledi yaktığımda arka tarafta diğer kodların işleve devam etmesi gerekmekte.) Not: Bahsettiğim fonksiyonda program çalıştığı anki millis değeri ile de değil, butona bastıktan sonra 1 dk yanacak, burayı çözemiyorum. Şimdiden teşekkür ederim... Şöyle düşünün; programı set ettim, arduino fonksiyonlarını yapıyor, sensörleri dinliyor, sensörün (buton diyelim) birinden işaret gelirse 1dk boyunca led yanacak ancak o arada diğer sensörleri de dinlemeye devam edecek.
 
  • Beğen
Tepkiler: seyyarbilimadamı
E

explopix

Ziyaretçi
iki kod u aynı anda çalıştırıp tepki alabilip burada o kodları paylaşanı alkışlarım:)
:)

Bu arada eklemeyi unuttum, butona da basılı tuttuğumu düşünün, lamba sönünce elimi çekeceğim gibi... ASlında kodun bu kısmını paylaşsam sanırım daha anlaşılır olacak; Programın diğer kısımlarında şartlı olarak motor çalışıyor. Motor çalışırsa (şartlar oluşup) 1 dk sonra kendiliğinden durmasını istiyorum. Şunu yazıyorum ama olmuyor tabi ki;

C++:
if(mode==true)
{
sesle_uyutma();

if(motor_durumu == true)
{
unsigned long simdi = millis();
unsigned long onceki = 0;
if (simdi - onceki >=2000)
{
onceki = simdi;
digitalWrite(motor,LOW);
motor_durumu = false;
}
}
}
motor sesle_uyutma() fonksiyonu içinde çalışıyor. Farklı bir fonksiyonda çalışan motora süre koymaya çalışıyorum. (Not: diğer fonksiyon içinde süre koyarsam loop döngüsünden çıkacağı için tekrar çalışmayacaktır, o yüzden zamanlamayı bu fonksiyon içine yazmam gerektiğini düşünüyorum.) 2000 değerini kontrol edebilmek için kısa tuttum.
 
E

ersinertan

Ziyaretçi
Burda öncekini sıfıra değilde void loopta öncekine sürekli milis ata yani yüksri taşı Çalışır
 
E

explopix

Ziyaretçi
timer kesmesini incelediğimde belli sürelerle ve periyotlardan bahsedilmekte. ben bu motorun çalışıp durmasını bir periyoda sokmak istemiyorum ki, ses algılarsa 1 dk çalışsın ve dursun istiyorum. Ola ki sesi algıladı ve çalıştı, durması için geçecek olan 1 dk süre boyunca da diğer işlemlerine devam etsin istiyorum. periyotluk bir durum yok sanki?
 
F

function

Ziyaretçi
farklı sürelerde farklı farklı şeyler yapıcaksan tnow1 tnow2 üstteki ifin içinde arttır. milisle rahat bi şekilde yapılır uğraş olmazsa bana yaz hallederiz

C++:
TNOW=millis();
if(TNOW>1000)
{
noInterrupts ();
timer0_millis = 0;
interrupts ();
tnow++;
}

if(tnow==60)//1 dk oldu
{
ne yapmak istiyorsan burda yaptır sonra
tnow=0;
}
 
E

explopix

Ziyaretçi
Hocam çalıştıramadım? "ne yapmak istiyorsan burda yaptır sonra" dediğin yere motoru durduruyorum değil mi? Ayrıca if(tnow>1000) neden kullandın onu çözemedim?
farklı sürelerde farklı farklı şeyler yapıcaksan tnow1 tnow2 üstteki ifin içinde arttır. milisle rahat bi şekilde yapılır uğraş olmazsa bana yaz hallederiz

C++:
TNOW=millis();
if(TNOW>1000)
{
noInterrupts ();
timer0_millis = 0;
interrupts ();
tnow++;
}

if(tnow==60)//1 dk oldu
{
ne yapmak istiyorsan burda yaptır sonra
tnow=0;
}
 
F

function

Ziyaretçi
o büyük TNOW oraya sürekli okuma yapıyorsun ikinci ife ne yazarsan ne kadar süre yazarsan o kadar sürede onu yapar. milis komutu belli bir süreden sonra yanlıs hatırlamıyorsam 30 saniye falandı üstünü taşıyamıyor dolayısıyla her saniyede dolduğunda onu sıfırlıyorsun ki düzgün saysın
Hocam çalıştıramadım? "ne yapmak istiyorsan burda yaptır sonra" dediğin yere motoru durduruyorum değil mi? Ayrıca if(tnow>1000) neden kullandın onu çözemedim?
 
E

explopix

Ziyaretçi
o büyük TNOW oraya sürekli okuma yapıyorsun ikinci ife ne yazarsan ne kadar süre yazarsan o kadar sürede onu yapar. milis komutu belli bir süreden sonra yanlıs hatırlamıyorsam 30 saniye falandı üstünü taşıyamıyor dolayısıyla her saniyede dolduğunda onu sıfırlıyorsun ki düzgün saysın
hocam peki söylediğin yöntem void loop dışında herhangi bir döngüde de olsa çalışır mı? Kısacası (size zahmet) aşağıda belirttiğim kodda bunu uygulayabilir miyiz? (kodda anlık gürültüyü görmeyip gürültü varsa motor çalışsın yapmaya çalıştım o yüzden diğer millis fonksiyonları)

C++:
void sesle_uyutma()
{
int sensor_durumu = digitalRead(ses_sensoru);
if (sensor_durumu == 1)
{
algilama_araligi_baslangic = millis();
if (millis()-algilama_araligi_baslangic <= 400)
{
if (sensor_durumu == 1)
{
ses++;
}
if(ses >=ses_algi_sayisi)
{
Serial.println("ses algilandi: ");
lcd.clear();
lcd.print("Motoru calistir");
digitalWrite(motor,HIGH); //Bu motor 1 dk sonra duracak
ses=0;
}
}
algilama_araligi_baslangic=0;
}
}
 
F

function

Ziyaretçi
hocam peki söylediğin yöntem void loop dışında herhangi bir döngüde de olsa çalışır mı? Kısacası (size zahmet) aşağıda belirttiğim kodda bunu uygulayabilir miyiz? (kodda anlık gürültüyü görmeyip gürültü varsa motor çalışsın yapmaya çalıştım o yüzden diğer millis fonksiyonları)

C++:
void sesle_uyutma()
{
int sensor_durumu = digitalRead(ses_sensoru);
if (sensor_durumu == 1)
{
algilama_araligi_baslangic = millis();
if (millis()-algilama_araligi_baslangic <= 400)
{
if (sensor_durumu == 1)
{
ses++;
}
if(ses >=ses_algi_sayisi)
{
Serial.println("ses algilandi: ");
lcd.clear();
lcd.print("Motoru calistir");
digitalWrite(motor,HIGH); //Bu motor 1 dk sonra duracak
ses=0;
}
}
algilama_araligi_baslangic=0;
}
}
Loop dışında sadece değeri kontrol edin tnow u yanı
 
E

explopix

Ziyaretçi
Loop dışında sadece değeri kontrol edin tnow u yanı
Hocam çok profesyonel değilim, biraz hazırcılık olacak ancak, yukarıdaki parçaya motorun çalışma süresini ekleme şansınız var mı? digitalWrite(motor,HIGH); //Bu motor 1 dk sonra duracak dediğim yere...
 
G

GokhanAkpinar

Ziyaretçi
kardeş milissiz yaparsın şöyle olmazmı ?

C++:
if buton == HİGH { digitalwrite(LED,HİGH); delay (60000); digitalwrite(LED, LOW); }
if LED== HIGH { işlev }
böyle olabilirmi ?
 
E

explopix

Ziyaretçi
kardeş milissiz yaparsın şöyle olmazmı ?

C++:
if buton == HİGH { digitalwrite(LED,HİGH); delay (60000); digitalwrite(LED, LOW); }
if LED== HIGH { işlev }
böyle olabilirmi ?
senin kodunla sadece 1 sensörü kontrol edersin biri aktif olunca diğerine bakmaz bu arkadaş öyle istemiyor hepsi kontrol edilsin istiyor
 
G

GokhanAkpinar

Ziyaretçi
senin kodunla sadece 1 sensörü kontrol edersin biri aktif olunca diğerine bakmaz bu arkadaş öyle istemiyor hepsi kontrol edilsin istiyor
arkadaşın dediği led aktif olunca arkadakş işlevleri yerine getircem dedi ? butona bastım ledi 1 dk yaktı ötekinden eğer led yanıksa dedi oayada diğer sensörleri kontrol ettirir orda işlev yazdığım yere istediğin kodu yazarsın led yanık olduğu sürece çalışır
 
E

explopix

Ziyaretçi
arkadaşın dediği led aktif olunca arkadakş işlevleri yerine getircem dedi ? butona bastım ledi 1 dk yaktı ötekinden eğer led yanıksa dedi oayada diğer sensörleri kontrol ettirir orda işlev yazdığım yere istediğin kodu yazarsın led yanık olduğu sürece çalışır
delay ! arduinoyu durduruyor, diğer kodların tamamı durdu. Sinan hocamın da dediği gibi, şimdi onu inceleyeceğim, sanırım çözülecek...
 
H

hassasbeyin

Ziyaretçi
başlangıç degeri için zmnsuan= millis(), kontrol değeri için zmnsonan= millis(), geçen süre için tzmn= zmnsonan-zmnsuan , kontrol için if tzmn >= 6000 ledpin =LOW şeklinde mantıkla çözebilirsin
 

Robotikforum.net Nedir?

  • Robotikforum.net 2020 yılında kurulup yayın hayatına başlayan ve Türkiye’de robotik kodlama alanının gelişimine katkıda bulunmak için bu alan ile ilgilenen bireylerin bir birleri ile yardımlaşmaları ve fikir danışmalarını sağlayarak daha iyi öğrenmek için her bir bireyin bilgisini ve tecrübesini alarak kendini geliştirebileceği ve sorularına cevap bulabileceği bir platform olarak kurulmuştur.

Bilgilendirme!!!

İçerik sağlayıcı paylaşım sitelerinden biri olan www.robotikforum.net Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur.

Sayfamızı beğendin mi?

X Merhaba ziyaretçi Robotikforum.net adresine hoşgeldin. Robotikforum.net
adresi gelişen teknoloji ile günden güne yaygınlaşan robotik teknolojileri
hakkında yardımlaşabileceğin ve tartışabileceğin bir platformdur.
Aramıza katılmaya ne dersin?
Kayıt Ol