2016-04-12 38 views
-1

Şu an son yıl çalışma projemde çalışıyorum, arduino due numaralı telefonu kullanıyorum ve otonom olan bir tekerlekli sandalyeye yerleştirilen ultrasonik sensörler.seri haberleşme arduino ve MATLAB

bu yüzden benim problemim sensörleri mesafeleri okuyorum ve bunları bulanık mantık denetleyici bloğunda kullanmak için matlab simulink adresine göndermem gerekiyor ama seri monitörde ne gönderiyorum ardiuno gelen matlab Simulink'de bunları kullanmak için seri bağlantı noktasını kullanarak bir dize türü olduğundan, nasıl ben veri (mesafeleri) alabilirsiniz #distance1#distance2#...#distance10# ".

i arduino kodunu değiştirmek zorunda veya i kullanmalısınız musunuz "gibi bir şey Bazı bloklar simulink? herhangi bir yanıt yararlı olabilir

cevap

1

Girişi ayırıcıya göre ayrıştırmanız gerekir. Genellikle sensörü örneklemelisiniz.

Girişinizin karma olarak bölünmesini istiyorsunuz. Muhtemelen sensörün sıklığına göre her 5. sinyalini okumalısınız

str = input; % from arduino buffer 
delimiter = "#"; 
C = strsplit(str,delimiter) 
C = int(C) % type case to an int 

: Sen gibi bir şey kullanmalısınız. Sensör saniyede 100 ölçüm alırsa muhtemelen işlenmesi için sadece 20'ye ihtiyacınız vardır.

Belki
C = C[1:5:end] 

...

bir yere sensörün veri sayfasından hata std kullanmak isteyebilirsiniz sinyali işlenmesi: gibi bu görünüyor. Girdiyi muhtemelen simulink'e geçmeden önce veya ilk bloklardan biri olarak ayrıştırın. Bu size kalmış (en iyi uygulama olup olmadığını bilmiyorum).

Umarız bu yardımcı oldu!

str bölünmüş için dokümanlar burada: Sana Ürdün Stewart teşekkür için http://au.mathworks.com/help/matlab/ref/strsplit.html

+0

bu büyük yardımı olabilir –