Arduino Uno ile birden fazla geçersiz döngü yapabilir miyim?
toplum (2) programming
Bir problemim var. Motorlu, ön ve arka farlarla bir araba yapmak istiyorum. Onları aynı anda ama farklı döngülerde çalıştırmak istiyorum.
Bu benim kodum.
Arduino Uno kullanıyorum. Tüm boş döngülere aynı anda başlayabilir miyim?
katma 29 Nisan 2017 en 11:01 yazar Robbe düzenlendi 11 Nisan 2018 en 08:58
Sadece derlemeye çalışıyorum, size bir cevap vermeli ...
katma 29 Nisan 2017 en 11:36, yazar Louis Rhys, kaynak
Diğerlerinin de belirttiği gibi, hayır çoklu döngü fonksiyonuna sahip olamazsınız. Yapmanız gereken, yaklaşımınızı değiştirmeye çalışmaktır, böylece yapmaya çalıştığınız her şey, bloke olmadan sırayla yapılabilir (yani: gecikme işlevi kullanımını kaldırın). JRobert'in bazı önerilerini genişleterek, İşte bu işlevleri "aynı anda çalıştırmayı" nasıl yapacağımı şöyle:
Bu yaklaşım aynı anda her üç fonksiyonun çalışmasını simüle edecektir. Her işlev bir seferde bir tane çalıştırır. Ancak, gecikme ışık1/2 işlevlerinden kaldırıldığından, yürütmeyi duraklatmak yerine 'bekleme' süresi boyunca hızla sona erer. Bu, motorların çalışmasına ve ışıkların aynı anda yanıp sönmesine izin verecektir.
katma 30 Nisan 2017 en 07:53 yazar Noldor130884
Ne yapmaya çalışıyorsun? Bu döngüler aynı anda çalışması mı gerekiyor (mümkün değil)? Veya birbiri ardına? "Gerçek hızlı" yeterince iyi ise "eşzamanlı" ile oldukça yakınlaşabilirsiniz. İhtiyacın olacak
Her döngü işlevine yeni, benzersiz bir ad verin;
İlk iki döngüden her birini, toplam 5 işlev için delay() s'de bölün;
İşlevlerin her birini gereksinim duyduğunuz oranda çalıştırmak için SimpleTimer gibi bir zamanlayıcı kitaplığı kullanın.
ve tek döngü() işlevinden, her şeyi devam ettirmek için SimpleTimer'ın '.run ()' işlevini çağırmaya devam edin.
DigitalRead() ve digitalWrite() çağrılarını doğrudan okumak ve yazmak istediğiniz port ve bit ile yazmak için bireysel işlevlerin hızını artırabilirsiniz.
katma 29 Nisan 2017 en 03:40 yazar caryden
Bunları aynı anda ancak farklı bir döngüde çalıştırmak istiyorum.
Her şeyden önce, bir seferde sadece bir şey yapabilirsiniz. Yani bu dışarıda.
İkincisi, art arda birden çok döngü çalıştırmak için (her seferinde bir tane), bu oldukça kolaydır:
İşe yarayıp yaramadığını bu döngüleri nasıl kodladığınıza bağlı olacaktır.
katma 29 Nisan 2017 en 04:41 yazar dannyf
Birden fazla aynı işleve sahip olmak uygun bir C/C ++ değil, yani derlemeyecektir (jfpoilpret'in yorumunun önerdiği gibi). Arduino dünyasında program akışı düşüncesiyle de uyumlu değil - çizimler - en yüksek (kullanıcı tarafından erişilebilir) seviyede iki yöntemin olduğu yerler: void setup() ve void loop() . setup , programınızın başında tam olarak bir kez çalıştırılır. Bundan sonra döngü sonsuza dek ilmeklenir (dolayısıyla ad). Amaçlanan program akışını uygulamak için kodunuzu doğru şekilde yapılandırmanız gerekir, yani kendi işlevlerinizi loop 'dan çağırın. Çalışmaya değer dersler içeren www.arduino.cc hakkında daha fazla bilgi edinin.
katma 29 Nisan 2017 en 12:05 yazar tjt263
Birden fazla döngüyü aynı anda iptal etmek için bir Arduino Due Boarduna ihtiyacınız var. Bu #include kütüphanesiyle uyumlu tek kart
see : https://www.arduino.cc/en/Tutorial/MultipleBlinks
katma 11 Nisan 2018 en 08:49 yazar Trelos Sinthetis Trelosin8etis