在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用MATLAB GUI從基于Arduino的IR轉速表讀取RPM

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-21 16:37 ? 次閱讀

步驟1:在MATLAB

打開您的MATLAB,然后鍵入命令:“ guide”

如果一切正常,將打開一個窗口供您設計布局。如果無法獲取該窗口,請檢查您的MATLAB安裝中是否包含該模塊。我的MATLAB版本是R2012b,安裝了默認設置和軟件包。

讓我們假設您在輸入“指南”后會感覺很好。放置窗口組件如下:

-1切換按鈕

-2靜態文本

按圖片所示排列布局(實際上,布局要只要您易于使用和閱讀,就可以通過修改屬性檢查器中的“字符串”值來更改每個對象中的文本(任何您想要的內容)(選擇對象-右鍵單擊-屬性檢查器,或雙擊)

然后,保存該GUI圖形文件。

步驟2:編寫代碼

ARDUINO代碼

arduino的代碼與您在此處可以找到的代碼基本相同:https://www.instructables.com/id/Infrared-Tachomete 。..但因為這里我僅想要顯示rpm值(而不是rps值以及所有的“ rps”和“ rpm”文本),所以我編輯了一些行(那些具有Serial.print()的行,因為以前該程序旨在顯示讀數在記事本式串行監視器上,但現在我們只需要rpm值即可輸入到靜態文本字符串中)。好的,為了方便快捷,我將代碼復制到此處,您可以自行檢查以與之前的代碼進行比較。請記住,arduino代碼的主要目的只是將值傳遞給串行comm,因此該程序僅作為示例,如果您有自己的程序將任何讀取到的傳感器的值打印到串行,然后忽略此操作即可。

int sensorvalue;

int state1 = HIGH;

int state2;

float rps;

float rpm;

long prevMillis = 0;

long interval = 100;

long currentTime;

long prevTime = 1;

long diffTime;

int sensorthreshold = 30; // this value indicates the limit reading between dark and light,

// it has to be tested as it may change acording on the

// distance the leds are placed.

// to see what number is good, check the sensorvalue variable value

// as printed out in the serial monitor

void setup()

{

Serial.begin(9600);

pinMode(13,OUTPUT); // assign pin 13 led as indicator because we cannot se the IR light

}

void loop()

{

sensorvalue = analogRead(0); // read from pin 0

if(sensorvalue 《 sensorthreshold)

state1 = HIGH;

else

state1 = LOW;

digitalWrite(13,state1); // as iR light is invisible for us, the led on pin 13

// indicate the state of the circuit.

if(state2!=state1){ //counts when the state change, thats from (dark to light) or

//from (light to dark), remember that IR light is invisible for us.

if (state2》state1){

currentTime = micros(); // Get the arduino time in microseconds

diffTime = currentTime - prevTime; // calculate the time difference from the last sensors meet-up

rps = 1000000/diffTime; // calculate how many rev per second - good to know

rpm = 60000000/diffTime; // calculate how many rev per minute

unsigned long currentMillis = millis();

// print to serial at every interval - defined at the variables declaration

if(currentMillis - prevMillis 》 interval){ // see if now already an interval long

prevMillis = currentMillis;

Serial.println(rpm); // this line is edited from the code in the prev instructable

}

prevTime = currentTime;

}

state2 = state1;

}

/* only for testing to determine the sensorthreshold value

delay(500);

Serial.println(sensorvalue);

*/

}

MATLAB代碼

在MATLAB GUI布局設計窗口中,單擊“查看-編輯器”(或在工具欄中找到沒有手的紙和鉛筆的圖片)。將打開一個編輯器窗口,其中已經編寫了一些代碼,MATLAB為您編寫了它們,沒問題。只為切換按鈕編寫回調函數,其余代碼可以保留不變。就我而言,我將切換按鈕命名為OnOffToggle,因此編寫代碼的函數是函數OnOffToggle_Callback(hObject,eventdata,handles)。 rpmdata,所以我們只想將rpm數據打印到屏幕上即可。還有一件事,請確保在編寫代碼時將arduino連接到正確的COM端口。在這段代碼中,我寫了COM3,因為我將arduino連接到了COM3。

然后保存您的m文件。

下面是完整代碼(僅編輯OnOffToggle_Callback函數):

function varargout = gui(varargin)

% GUI MATLAB code for gui.fig

% GUI, by itself, creates a new GUI or raises the existing

% singleton*.

%

% H = GUI returns the handle to a new GUI or the handle to

% the existing singleton*.

%

% GUI(‘CALLBACK’,hObject,eventData,handles,。..) calls the local

% function named CALLBACK in GUI.M with the given input arguments.

%

% GUI(‘Property’,‘Value’,。..) creates a new GUI or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before gui_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to gui_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE‘s Tools menu. Choose “GUI allows only one

% instance to run (singleton)”。

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help gui

% Last Modified by GUIDE v2.5 14-Mar-2015 01:06:09

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct(’gui_Name‘, mfilename, 。..

’gui_Singleton‘, gui_Singleton, 。..

’gui_OpeningFcn‘, @gui_OpeningFcn, 。..

’gui_OutputFcn‘, @gui_OutputFcn, 。..

’gui_LayoutFcn‘, [] , 。..

’gui_Callback‘, []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before gui is made visible.

function gui_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to gui (see VARARGIN)

% Choose default command line output for gui

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes gui wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = gui_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

function currentEdit_Callback(hObject, eventdata, handles)

function currentEdit_CreateFcn(hObject, eventdata, handles)

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,’BackgroundColor‘), get(0,’defaultUicontrolBackgroundColor‘))

set(hObject,’BackgroundColor‘,’white‘);

end

function OnOffToggle_Callback(hObject, eventdata, handles)

button_state = get(hObject,’Value‘);

if button_state == get(hObject,’Max‘)

set(handles.OnOffToggle,’String‘,’Stop‘);

drawnow;

i=2;

while i 》 1

rpmdata = serial(’COM3‘,’BaudRate‘,9600); % this Baud rate should be the same as that in Arduino code

fclose(instrfindall);

fopen(rpmdata);

b = fscanf(rpmdata);

set(handles.textCurrent,’String‘,b);

drawnow;

delete(rpmdata)

if get(hObject,’Value‘) == get(hObject,’Min‘)

break

end

end

set(handles.OnOffToggle,’String‘,’Start‘);

drawnow;

rpmdata = serial(’COM3‘,’BaudRate‘,9600);

fclose(rpmdata);

end

步驟3:運行Rpm Reader

完成代碼后,連接arduino,然后轉動旋轉并運行程序(編輯器或布局編輯器窗口上的綠色三角形類似游戲的按鈕)。程序的一個窗口將會出現(我的如圖所示),單擊切換按鈕,您將在那里看到車輪的當前轉速。

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    186

    文章

    2983

    瀏覽量

    231264
  • Arduino
    +關注

    關注

    188

    文章

    6478

    瀏覽量

    188137
  • RPM
    RPM
    +關注

    關注

    0

    文章

    45

    瀏覽量

    17754
收藏 人收藏

    評論

    相關推薦

    用于課題的無線轉速霍爾傳感器,新人應該哪里開始學習

    完全沒電路的基礎,但是課題上導師要求設計一款無線的霍爾轉速傳感器,電池供電然后通過無線技術去讀取傳感器上的轉速。想請教下各位大佬應該哪里開始學習比較好,或者是有現成的產品可以去模仿學
    發表于 01-08 10:36

    霍爾開關AH402F在轉速表中的應用,替換HAL1881和SS460

    霍爾開關AH402F在轉速表中的應用,替換HAL1881和SS460
    的頭像 發表于 12-09 10:02 ?224次閱讀
    霍爾開關AH402F在<b class='flag-5'>轉速表</b>中的應用,替換HAL1881和SS460

    2010款起亞賽拉圖車發動機轉速表指針不動

    2010款起亞賽拉圖車發動機轉速表指針不動廣西普鑫澤源汽車銷售服務有限公司李康林故障現象故障診斷故障排除一輛2010款起亞賽拉圖車,搭載G4ED發動機,累計行駛里程約為17.2萬km。車主反映,車輛
    的頭像 發表于 10-31 08:03 ?275次閱讀
    2010款起亞賽拉圖車發動機<b class='flag-5'>轉速表</b>指針不動

    集成IR R600數據

    電子發燒友網站提供《集成IR R600數據.pdf》資料免費下載
    發表于 09-04 11:26 ?0次下載

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環境溫濕度數據及 OLED顯示

    Arduino Nano 和 NodeMCU ESP8266 讀取 DHT11 環境溫濕度數據及 OLED顯示
    的頭像 發表于 08-13 18:04 ?1379次閱讀
    <b class='flag-5'>Arduino</b> Nano 和 NodeMCU ESP8266 <b class='flag-5'>讀取</b> DHT11 環境溫濕度數據及 OLED顯示

    變頻器怎么外接電流轉速表

    需要外接電流轉速表來測量電機的電流和轉速。 電流的作用 電流是一種測量電路中電流大小的儀器。在變頻器系統中,電流
    的頭像 發表于 07-19 11:17 ?2749次閱讀

    簡單轉速表電路圖 轉速表的定義和應用

    轉速表,顧名思義,是用來測量和顯示旋轉設備轉速的儀表。它通常被安裝在需要監測轉速的設備上,如汽車發動機、電機、風扇、造紙機、塑料加工機械等。轉速表通過接收并處理來自旋轉設備的信號,將其
    的頭像 發表于 07-10 17:33 ?2096次閱讀
    簡單<b class='flag-5'>轉速表</b>電路圖 <b class='flag-5'>轉速表</b>的定義和應用

    來寫個代碼,改變你的電機轉速

    一、KV值"KV值"是一個常用的參數,它表示電機的轉速常數。KV值定義為電機在無負載條件下,每增加1伏特電壓時,電機轉速增加的轉數(rpm)。換句話說,KV值是電機轉速與供電電壓
    的頭像 發表于 07-03 08:10 ?1190次閱讀
    來寫個代碼,改變你的電機<b class='flag-5'>轉速</b>

    MATLAB GUI的暫停執行與繼續執行問題

    MATLAB小白發問,各位大神,我想在GUI界面放一個或者兩個按鈕,實現程序的暫停和繼續執行,比如:1到100計數,計到45,按暫停鍵暫停,再按或者按另一個按鈕,繼續計數,46開始
    發表于 06-21 12:34

    電機轉速快好還是轉速慢好一點

    在討論電機轉速快好還是轉速慢好之前,我們需要了解電機轉速的概念以及其在不同應用場景中的作用。電機轉速是指電機轉子每分鐘旋轉的圈數,通常用轉每分鐘(R
    的頭像 發表于 06-05 11:18 ?2913次閱讀

    電機轉速快怎么可以讓它轉慢點

    電機是一種將電能轉換為機械能的裝置,廣泛應用于工業、農業、交通等領域。電機的轉速是指電機轉子每分鐘旋轉的圈數,通常用轉每分鐘(RPM)來表示。 1.2 影響電機轉速的因素 電機轉速
    的頭像 發表于 06-05 11:14 ?5710次閱讀

    日本制造的110V交流無刷電機

    有哪個大佬知道這是日本哪個品牌的無刷電機,怎么接調速器,怎么接轉速表,要接哪幾條線,求大佬指點一下
    發表于 05-15 18:23

    Profile電機的時候轉速顯示NaN RPM是什么意思?

    Profile電機的時候轉速顯示NaN RPM,什么意思?
    發表于 04-12 07:28

    如何使用GPIO上的開關改變Sensorless BLDC轉速?

    請問各位先進 可否于程序中使用連接在GPIO上的開關,透過HAL_GPIO庫+MC庫改變SensorlessBLDC轉速 例如開關off,BLDC=5000RPM 開關on, BLDC=20000RPM 有范例代碼可參考嗎?謝
    發表于 04-02 07:22

    STMCK中MC_ProgramSpeedRampMotor1函數設置的最低轉速是多少?

    使用電機庫電機可以達到最高轉速,但是如果設置小了,某個方向基本不轉, 比如最高轉速5000RPM,使用MC_ProgramSpeedRampMotor1(5000/6/50,0)設置后應該就是5000/50=100
    發表于 03-27 07:14
    主站蜘蛛池模板: 美女视频黄视大全视频免费网址 | 优优国产在线视频 | 日韩在线三级 | 伊人精品成人久久综合欧美 | 欧美大香a蕉免费 | 宅宅午夜亚洲精品 | 4虎影院在线观看 | 色天天综合久久久久综合片 | 青草视频网站在线观看 | 精品福利视频网 | 欧美一级一一特黄 | 四虎影院在线免费 | 黄录像欧美片在线观看 | 中国一级特黄真人毛片免费看 | 色噜噜狠狠成人网 | 精品国产自在在线在线观看 | 影音先锋在线亚洲精品推荐 | 99久久婷婷国产综合精品电影 | www.日本黄色 | 久久天天躁夜夜躁狠狠 | 一卡二卡三卡四卡无卡在线 | 国产精品xxxav免费视频 | 2019天天干天天操 | 激情春色网 | 日韩欧美亚洲综合久久影院d3 | 天天操bb | 7m视频精品凹凸在线播放 | 免费一级毛片私人影院a行 免费一级毛片无毒不卡 | 无毒在线 | 亚洲第一色在线 | 毛茸茸成熟妇女亚洲人 | 色播基地 | 午夜视频在线网站 | 精品亚洲欧美无人区乱码 | 亚洲天堂二区 | 福利视频欧美 | 98色花堂永久地址国产精品 | 激情五月婷婷基地 | 午夜在线视频免费观看 | 三级黄色网址 | 欧美性色欧美a在线观看 |