C++ de yazılan bir arayüz programını Arduino ile iletişime geçirme

bilgisi olan yazarsa sevinirim

Serial ile haberlesebilirsiniz. C++ icin bir serial kutuphanesi illa vardir, onunla arduino ile haberlesilebilir. Python icin pyserial var.

bilgim var​​​​​​​​​​

4 Beğeni

:ok_hand:

Bu cevap tarihe geçmeli. Ayrıca soru da.

Teşekkür ederim, bu serial firmata gibi birsey mi? Daha once pyfirmata ile calistim ama hizli olmadigi icin verim alamadim

Serial iletisim yontemi, firmata ise serial uzerinden konusulan protokol. Serial kullanmissin yani.

Hizli olmadigini nereden cikardin?

Arduino üzerindeki koda bakarsan 0.01 saniyede bile programin ulastirilamadigi görülüyor

Hangi arduino uzerindeki hangi koddan bahsettigini anlamadim. (Masamdaki arduino’da blink kodu var, pyfirmata ile alakasiz)

Mikroislemcilere kod upload etmek bir takim EEPROM programlama islemlerinden gectigi icin I/O pini acip kapama gibi basit islemlerden uzun surer, normal. (Bu da kullandigin firmata kutuphanesinden bagimsiz bir sey.)

Sanırım ne demek istediğimi anlamadınız. Tabiki dediğiniz gecikme önlenemez ancak örnek vermek gerekirse bir step motoru tetiklerken saniyede 0.001 kez tetikletebilirsiniz. Arduinonun strandart firmatasını arduino yüklerseniz ve pyfirmata ile bir kod yazarsanız bu mümkün olmayacaktır. Çünkü Standart firmatanın kodunda zaten 0.01 saniyenin üstünde bir sürede kod tekrar okunur ve bu bir anlamda yavaşlamadır.

Tetikletmekten ziyade vurus daha dogru bir ifade.

Step motor ile alakali projelerim olmustu. Motor vuruslarini main thread’den ayri yapmak daha dogru. (Farkindayim, Arduino (veya avr) multithreading desteklemiyor. Fakat su library ile yapilabiliyor.)

Arduino does not support isolated parallel tasks (Threads), but we can make the main loop switch function execution conditionally and thus simulate threading with Protothread mechanism.

Bu kutuphane ile iki farkli thread olusturup biriyle serial veri gonderip digeriyle motor vuruslarini kontrol edebilirsiniz.


Bu arada eger probleminizin yavas firmata iletisiminin stepper motor vurus hizini etkiledigini soylemek yerine “bilgisi olan yazarsa sevinirim” yazarsaniz bizim vaktimizi calmis olursunuz. XY problemi konusunda daha dikkatli olunuz.

İlk mesajdan itibaren oku bakalım ben neyi ifade etmişimde kimler nerelere çekmiş. Ben zaten Çözüm diye işaretledim 1. msjı(sen yazmışsın) . Niye vaktinizi çalıyorum?

kapansın artık bu konu günler önce öğrenmek istediğimi buldum zaten

Sanirim ne demek istediginizi anlatamadiniz:

Burada bir programin upload edilmesinden bahsediliyor. Firmata komut yollamak icin tasarlanmis bir kutuphane ama turlu extension mekanizmalariyla (SYSEX mesajlariyla) upload destegi eklemek mumkun. Boyle bir sey olursa hem mesaj boyu, hem de bahsettigim mekanizmadan dolayi yavas olacaktir.

Motoru 17 dakikada bir tetiklemek kolay. Burada sanirim saniyede 1000 kere tetiklemek veya adim sinyalini .001s saniye boyunca yuksek tutmaktan bahsediyoruz.

Standart firmware 57600 baud’da calisiyor:

3 byte / (57600 bit/s / 11 bit/byte) = ~572.91667 µs = ~0.000573 s

.001’in yarisi degil ama .01 kadar da kotu degil. ~800 Hz’lik bir dalga uretilebilir gibi duruyor.

Tabi hizdan bahsederken gecikmeden bahsediyor da olabilirsin. Bu, en yuksek frekansli dalganin minimum yari dalgaboyu olmanin yaninda gecikmenin de alt siniri. Oku-cevap al-komut ver gibi bir zincir bahsettigin sureleri cok rahat gecebilir.

Ama anlatmadikca anlayamayiz iste.

(Konuyu kapatmak istemissin; cevap verme zorunlulugu hissetme lutfen. Ben forumu okuyan diger insanlara yazdim.)

2 Beğeni