Lezen van RPM van Arduino gebaseerde IR Tachometer met MATLAB GUI (2 / 3 stap)

Stap 2: Schrijf de code

ARDUINO CODE

De code voor de arduino is in principe hetzelfde als u hier vindt: maar omdat hier ik alleen wilt weergeven van de rpm-waarde (niet de rps-waarde en alle "rps" en "rpm" tekst) zodat ik sommige lijnen (die Serial.print(), hebben omdat het eerder het programma werd ontworpen om de lezing op seriële monitor Kladblok-stijl, maar nu moeten we alleen de rpm waarde om te voeden in de statische tekst string) bewerkt. OK, zodat het snel en gemakkelijk die ik kopieer de code kunt hier, u controleren door uw zelf voor vergelijking met de voorgaande code. Niet vergeten dat het voornaamste doel van de code van de arduino alleen voor het doorgeven van een waarde aan seriële comm, zodat dit programma net als een voorbeeld, is als u uw eigen programma hebt dat drukt de waarde van elke sensor seriële lezen en vervolgens negeren dit ga vooruit naar de MATLAB-code.

 int sensorvalue;<br>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</p><p>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 CODE

In uw MATLAB GUI lay-out ontwerpvenster, klikt u op weergave - Editor (of een beeld van papier en potlood zonder hand in de werkbalk Zoeken). Een venster van de editor wordt geopend met bepaalde codes al geschreven, schreef MATLAB ze voor u geen probleem. Alleen het schrijven van de callback functie voor de wisselknop, de rest van de code kunnen links onaangeroerd. In mijn geval noemde ik mijn wisselknop OnOffToggle, zodat de functie onder die ik schreef de code functie OnOffToggle_Callback (hObject, eventdata, handgrepen is).

Alle gegevens die worden verzonden via de seriële hier wordt opgehaald als een variabele rpmdata, zodat we alleen gegevens wilt afdrukken die rpm op het scherm, thats it. Één meer ding, controleert u of dat u uw arduino verbinding met de juiste COM-poort als u in de code schrijven. In deze code schreef ik COM3 omdat ik mijn arduino op COM3 aangesloten.

Sla uw m-bestand.

Hieronder is de volledige code (bewerken alleen de OnOffToggle_Callback-functie):

 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</p><p>% Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', ... '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 

Gerelateerde Artikelen

Lezen van real-time analoge ingang met behulp van Arduino en plotten met LabVIEW

Lezen van real-time analoge ingang met behulp van Arduino en plotten met LabVIEW

Toen ik deed mijn projecten een van de integraal onderdeel was analoge gegevens lezen en uitzetten van het. Aangezien ik vond geen artikelen of instructable met betrouwbare materiaal te doen dacht ik van het neerschrijven van de stappen die ik eindel
Zeer eenvoudig te maken van Arduino bluetooth spy robot met Android RemoteControl app

Zeer eenvoudig te maken van Arduino bluetooth spy robot met Android RemoteControl app

In dit project ziet u hoe eenvoudig mengsel van verschillende technologieën en derde-partij apps maakt het mogelijk om een tamelijk ingewikkelde speelgoed maken.De robot doet twee dingen:1. de Arduino gebaseerd spy robot beweegt volgens opdrachten ve
Maak van uw project van Arduino draadloze in minuten, met de draadloze uitvinders Shield

Maak van uw project van Arduino draadloze in minuten, met de draadloze uitvinders Shield

de uitvinders-shield gebruik van een draadloze pijp, dat een speciale draadloze RF-module die u toelaat is om gemakkelijk en betrouwbaar, verzenden en ontvangen van draadloze foutvrij gegevens tussen twee of meer Arduino boards Arduino boards.Het is
Hoe maak je een Arduino gebaseerde nacht licht met infrarood afstandsbediening!

Hoe maak je een Arduino gebaseerde nacht licht met infrarood afstandsbediening!

Hier is een Instructable die u hoe tonen zal te bouwen van een licht met een Arduino gebaseerd-nachteen kleine infrarood afstandsbediening waarmee u doorlopen 10 pre set kleuren, en een willekeurige fadingkleur routine die voor eeuwig lussen.Dit inst
Waterkwaliteit Monitoring en aanmelding systeem met behulp van Arduino gebaseerd GSM-systeem.

Waterkwaliteit Monitoring en aanmelding systeem met behulp van Arduino gebaseerd GSM-systeem.

Dit instructable video is alles over hoe het toezicht op de kwaliteit van water, stagiaires van het toezicht op het niveau van water, de temperatuur van het water en de omgeving, de troebelheid van het water (hoe schoon het water is) evenals de nivea
Met behulp van Arduino om te communiceren met ingesloten project

Met behulp van Arduino om te communiceren met ingesloten project

bouwen van een zelfstandige AVR ATMEGA project u met soms niet gemakkelijk verlaat te lezen output van uw project. Maar u kunt een Arduino gebruiken om te fungeren als een brug van de communicatie tussen uw ingesloten project en uw PC's seriële Monit
Maken van Arduino seriële poort met visual basic

Maken van Arduino seriële poort met visual basic

Zullen we de programma-interface aansluiten op de seriële poort met Visual Studio.Laten we eens kijken naar de details van het programma.Hulpmiddelen dat zullen we ons formulier gebruiken:3 stuks knop2 nummer ComboBox3 stuk labelseriële poortStap 1:
InPace - een Arduino gebaseerde GPS gegevens vastleggen van fitness armband met bluetooth en een iOS-app

InPace - een Arduino gebaseerde GPS gegevens vastleggen van fitness armband met bluetooth en een iOS-app

InPace is een Arduino gebaseerde fitness armband, met een begeleidende iOS applicatie, die live kan feedback over hoe de gebruiker pacing zelf tijdens een run, lopen of fietsen route. Zij sporen GPS-locaties en huidige tijden de huidige prestaties va
Stroom monitoring met behulp van Arduino en log in Google blad

Stroom monitoring met behulp van Arduino en log in Google blad

Sinds de laatste paar weken was ik denken over het maken van een project die mij helpen kan bij het houden van een track op mijn dagelijkse energie-toepassingen. In dit project ben ik met behulp van een 30A huidige monitoring board. Dit forum heeft 6
Hoe te meten van de massa van de aarde met behulp van arduino.

Hoe te meten van de massa van de aarde met behulp van arduino.

Een mooie dag, was ik mijn zelf wegen op een weegschaal. Plotseling een gedachte kwam naar mijn mening, 'hoeveel zou de massa van de aarde?'. Laat dat apart 'Hoe kunnen we zelfs meten het?'. Er is geen dergelijke wegen schaal waarop, aarde kan worden
RFID gebaseerd tolhuisje passeren met behulp van de 8051 Microcontroller

RFID gebaseerd tolhuisje passeren met behulp van de 8051 Microcontroller

Video toont werking van RFID gebaseerd tolheffingssysteem plaza met 8051 microcontroller (89c 51)Voor circuit diagram en bron code in C bezoek RFID Toll Plaza
Arduino gebaseerde Meter - een veel LED-Driver

Arduino gebaseerde Meter - een veel LED-Driver

als het directe resultaat van een vraag in het forum Instructables, voor een bargraph gegevens wilt weergeven op het dashboard van een auto, een aangepaste elektronica instructable.Hier, voor uw genot is de auto-barDuino, een eenvoudige weergavesyste
Arduino multi-mode lamp met soft-touch schakelaar

Arduino multi-mode lamp met soft-touch schakelaar

In dit project van Arduino gebaseerde, zullen we bouwen een lamp met meerdere licht beeldschermen: kleur sequencer, dimmen van licht, kleur chaser, firelight - alle geselecteerd door een touch-bar op de printplaat.Alle functies worden gedaan in softw
Infrarood Tachometer met behulp van Arduino

Infrarood Tachometer met behulp van Arduino

Hoi, is dit gewoon een toerenteller zoals u ook vele tutorials die er vindt. Er zijn verschillende benaderingen over het meten van rpm, wat ik hier gebruik is gebaseerd op analogRead methode zoals geschreven in de arduino playground leren pagina (htt