Arduino millis ile aynı anda birden fazla işlem yaptırmak - 2.bölüm - Ders 26 -

preview_player
Показать описание
Arduino içerisinde millis ve micros komutları ile aynı anda aynı zamanda yapılacak işlerin kontrolü sağlanmaktadır. Bir işlem yaparken arada gecen zamanı yada geçmesini istediğimiz zamanı bu komutlar ile sağlarız. Zaman komutlarıyla bir ledin yanması, bir fanın çalışma süresi, bir sensörün ölçüm aralığı gibi bir çok donanımı kontrol edebiliriz. Delay ve delaymicroseconds arduino içerisinde kullanıldığı satırda algoritmayı bekletirken millis ve micros komutları algoritmayı bekletmeden işlemler yapmaktadır. Bu videomuzda zaman fonksiyonlarının genel ve kullanım mantığını örnekle anlatmaya çalıştım, videoyu izleyerek detayları hakkında bilgi sahibi olabilirsiniz.

#delay #delaymicroseconds #millis

Dersimizde kullandığımız malzemeler ve kodlar:
1 Adet Arduino uno r3
3 Adet Led
3 Adet 330R direnç
1 adet bread board ve bağlantı kabloları
Kuracağınız algoritma mantığına uygun donanımlar seçebilirsiniz.

Elektronik ürünleri satın alabileceğiniz

Ayrıca;

İyi Seyirler.

Bu video hoşunuza gittiyse ve yeni ekleyeceğimiz videolar hakkında anında haberdar olmak için kanalımıza abone olmayı ve beğen butonuna tıklamayı unutmayınız.

Fotoğraf işleme, Video İşleme ve Robotik Kodlama hakkında herşey bu kanalda.
Fotoğrafta Kompozisyon ve Photoshop ile fotoğraf işleme.
After effects ve Premierde Video kurgu ve düzenleme.
Arduino ile Robotik Kodlama dersleri.
Sayısal elektronik devreleri…
Рекомендации по теме
Комментарии
Автор

Hocam siz resmen ışığı görmeye yardımcı oluyorsunuz, bu kadar güzel ve sürükleyici bir anlatım yok

erhanaktepe
Автор

Sizin gibi bilgisini paylaşan eğiten öğreten insanlara hayranım hocam teşekkürler.

unlunl
Автор

Hocam çok teşekkür ederiz bizi bilgilendiriyorsunuz

celalkalaycoglu
Автор

Güzel bir paylaşım olmuş emeğinize sağlık

oyungezegeni
Автор

Hocam elinize sağlık. Çok güzel ve detaylı bir video olmuş. Millis tam oturmamıştı ama aturmaya başladı.

Fakat aklıma takılan birşey var, bu led yakmalarını buton basılınca nasıl başlatılırız. Yani buton yada başka bir girdiye göre led yakmak istediğimizde millis i nasıl kullanacağız. Bunu tam olarak anlayamadım.

technicahmett
Автор

emeğinize sağlık hocam çok çok teşekkürler

ahmetaydin
Автор

hocam çok güzel bi çalışma olmuş benim aklıma takılan bir durum oldu ben nema 17 step motor kullanırken adımlar arası bekleme delayMicroseconds ile yapıyordum ve fonksiyon içinde mesela 3veya4 motor kullanırken motorlara tek tek hareket vermek istediğim zaman motor bi ses çıkarıp hareket etmiyordu bunun sebebi araya bekleme komutu olarak kullandığım delay fonksiyonu mu sebep oluyor ve adımlar arası bekleme süresini millis olarak nasıl kullanabilirim ( mail yerine yorum olarak yazdım belki ihtiyacı olan birisi de faydalanır) şimdiden teşekkürler :)

mustafasartas
Автор

Hocam öncelikle videolarin akiciligi cok iyi bu konuda basarilarinin devamini dilerim amator olarak arduino switch case break kullanarak led animasyon yapmaya calisiyorum fakat bazi animasyonlarda delay cok kullandigimdan animasyon degisimi icin araya giremiyorum yardimci olursaniz cok memnun olurum

muratkoroglu
Автор

Hocam aşağıdaki kodda led 1 er saniye aralıklarla yanıp sönüyor, ve delay kullanmadan örneklerinizdeki gibi millis ile yaptım. Fakat bir noktada tıkandım.

if (brakestatus == 0) {
if (now - before > 1000) {
ledstatus = !ledstatus;
digitalWrite(led, ledstatus);
before = now;
}
}
else {
analogWrite(led, 255);
}

Ben led in yaklaşık 60 milisaniye yanıp, 1 saniye kadar sönük kalmasını ve bunu tekrarlamasını istiyorum. Ama yukarıdaki kodda 1 saniye yanıp 1 saniye sönüyor.

anlimaca
Автор

Millis komutunun ne olduğunu anlaaya çalışanlar mutlaka sizi dinlemeli.

ahmetozdemir
Автор

hocam bizim işlemcimiz aynı anda sadece bir işelmi gerçekleştiryordu şimdi kırmızı lede 500ms verdik yeşil lede 1000 ms verdik 1000ms anında ikisininde yanması gerekiyor işlemci ikisini aynı anda nasıl çalıştırıyor.

caglarsayim
Автор

Hocam merhaba, zaman fonksiyonu demişken. Watch dog timer dan bahsedermisiniz neredeyse hiç Türkçe kaynak yok

ozankavci
Автор

hocam serial ekranda rakamlar sürekli üzerine koyarak gidiyor. bildiğim kadarıyla belirli bir sayıya geldiğinde durması gerekiyor yanılıyormuyum

cevatozturkmicrotekelektro
Автор

1 jojstick 2 adet step motor 4 kanal röle 2 arduino 2 nrf24 antenli alet aldım. İş makinesini uzaktan kontrol etmeye çalışıyorum. Uzaktan marş yaptırdım. 1. Röle kontak, 2. Röle kızdırma bujisi, 3. Röle marş motoru, 4. Röle korna. Buraya kadar yaptım. Şimdi 1. Step motor gaz pedalına, 2. Step motoru direksiyona takmak istiyorum. Mekanik işini ben yapacağım ancak uzaktan kumanda ve kodları için yardım lazım.🙏

fzlsr
Автор

hocam ben arduino nano da hc06 ile uzaktan kontrollü araç uygulamamda ayrıca polis çakarı fonksiyonu ekledim fakat çakar çalışınca fonksiyonu çalışınca uzaktan kontrol sırasında sıkıntı yaşıyorum ya almıyor yada takılı kalıyor. lütfen bana yardımcı olur musunuz

sinandemir
Автор

Elimde boyle bir kod var
Birinci butonu kullanırken aynı anda ikinci kodu nasıl kullanabilirim tesekkurler

int butonpin = A1;
int butonpin2 = A2;
int butonpin3 = A3;

int role_1 = 12;
int role_2 = 11;


int butondurum = 0;
int butondurum2 = 0;
int butondurum3 = 0;


void setup(){

pinMode(butonpin, INPUT);
pinMode(butonpin2, INPUT);
pinMode(butonpin3, INPUT);

pinMode(role_1, OUTPUT);
pinMode(role_2, OUTPUT);

}

void loop(){
butondurum = digitalRead(butonpin);
butondurum2 = digitalRead(butonpin2);
butondurum3 = digitalRead(butonpin3);

digitalWrite(role_2, HIGH );
if (butondurum == HIGH) {

digitalWrite(role_2, LOW);
delay(209);
digitalWrite(role_1, LOW);
delay(209);
digitalWrite(role_1, HIGH);
delay(409);
digitalWrite(role_2, HIGH);

delay(16000);
}
else {

digitalWrite(role_1, HIGH), (role_2, HIGH);
}
if (butondurum2 == HIGH) {

digitalWrite(role_2, LOW);
delay(209);
digitalWrite(role_1, LOW);
delay(209);
digitalWrite(role_1, HIGH);
delay(409);
digitalWrite(role_2, HIGH);

delay(6500);
}
else {
digitalWrite(role_1, HIGH), (role_2, HIGH);
}
if (butondurum3 == HIGH) {

digitalWrite(role_2, LOW);
delay(209);
digitalWrite(role_1, LOW);
delay(209);
digitalWrite(role_1, HIGH);
delay(409);
digitalWrite(role_2, HIGH);

delay(4000);
}
else {
digitalWrite(role_1, HIGH), (role_2, HIGH);
}

}

vetkangalae
Автор

şu millis komutunu insanların kafasını karma karışık yapan bir konu. yok önceki zaman yoık şimdiki zaman vs. bunun yerine şöyle basit bir kod var örneğin işlemi 1 saniyede bir işlem yapmak istiyorsanız if (millis() % 1000 == 0) { yazarak devam edin hepsi bu kadar. Bu kod, zamanlayıcı olarak millis() fonksiyonunu kullanarak her saniyenin bölü 1000'inde (yani her saniyenin başında) istediğiniz işlemi yapar. süre 5 saniye ise if (millis() % 5000 == 0) { olarak değiştirin değeri
kolay gelsin

fusunkaratas
Автор

başarılı olmuş sizden bir ricam var ben motor kullanıcam 3v var 6v var 12v var ; ben bunlara elektirik bilgim az hangi direnç kullanmalıyım bunun videosunu bulamadım her videoda az az bahsetmişler yeterli değil, örneğin 3-6v yazan motor aldım bu kaç amper çeker buna kaç pil gerekir direnç hangisi yeterlidir vs vs

HO-cjut
Автор

Sayın hoca selamlar,

millis() fonsiyonunu kullanarak butonlar ve metot kullanarak bie seneryo oluşturdum şöyle ki;

yeşil ledi 500ms kırmızı ledi 750ms ve beyaz ledi 1000 ms aralıklarla yaktırmak istiyorum ancak bunu metot kullanarak herbirinin butonunan basıldığında yapsın istiyorum ve durdur butonuna bastığımda ise bütün ledlerimin sönmesini istiyorum.
Söndürme işlemini dış keme kullanarak yapabiliriz ancak farklı ve daha pratik bir yolu var mıdır? Kodum sağlıklı çalışmıyor...
Serial Monitor da hep yeşil dönüyor....
Yazdığım kodu paylaşıyorum yardımınızı istirham ediyorum saygılar...



unsigned long simdikizaman;
unsigned long oncekizaman_yesil=0;
unsigned long oncekizaman_kirmizi=0;
unsigned long oncekizaman_beyaz=0;

bool led_durum_yesil=HIGH;
bool led_durum_kirmizi=HIGH;
bool led_durum_beyaz=HIGH;

int basla_yesil=7;
int basla_kirmizi=8;
int basla_beyaz=9;
int durdur=1;

int led_yesil=3;
int led_kirmizi=4;
int led_beyaz=5;

void setup() {
pinMode(basla_yesil, INPUT_PULLUP);
pinMode(basla_kirmizi, INPUT_PULLUP);
pinMode(basla_beyaz, INPUT_PULLUP);
pinMode(durdur, INPUT_PULLUP);

pinMode(led_yesil, OUTPUT);
pinMode(led_kirmizi, OUTPUT);
pinMode(led_beyaz, OUTPUT);

Serial.begin(9600);
}

void loop() {
simdikizaman=millis();


yesil();
}
else
kirmizi();
}
else
beyaz();
}

;{
durdurx();
}

}

void durdurx()
{

digitalWrite(led_yesil, LOW);
digitalWrite(led_kirmizi, LOW);
digitalWrite(led_beyaz, LOW);
}


void yesil()
{


{
Serial.println("yesil");


digitalWrite(led_yesil, led_durum_yesil);

}
}

void kirmizi()
{


{
Serial.println("kirmizi");


digitalWrite(led_kirmizi, led_durum_kirmizi);

}
}

void beyaz()
{


{
Serial.println("beyaz");


digitalWrite(led_beyaz, led_durum_beyaz);

}
}

Автор

Hocam merhaba, peki bu millis komutunu yeni bir fonksiyon içerisine atayıp sadece o fonksiyon ile gecikme verebilirmiyiz bilgilendirirmisiniz ?

ismetatalay