Tr/min de lecture de base Arduino IR tachymètre avec MATLAB GUI (2 / 3 étapes)

Étape 2: Écrire le code

CODE DE L’ARDUINO

Le code pour arduino est fondamentalement la même que vous pouvez trouver ici : mais parce qu’ici j’ai seulement envie de montrer le nombre de tours de valeur (pas la valeur de rps et tout le texte "rps" et "rpm") donc j’ai modifié quelques lignes (ceux qui ont Serial.print(), parce que précédemment le programme a été conçu pour présenter la lecture sur écran série style bloc-notes, mais maintenant, nous devons seulement le nombre de tours de la valeur pour alimenter la chaîne de texte statique). OK, pour le rendre facile et rapide que j’ai copier le code ici, vous pouvez vérifier par vous-même, à titre de comparaison avec le code précédent. N’oubliez pas que le but principal du code de l’arduino n'est que pour passer une valeur à serial comm, alors ce programme est à titre d’exemple, si vous avez votre propre programme qui imprime la valeur de n’importe quelle sonde de lecture de la série alors ignorer cette allez en avant pour le code MATLAB.

 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); */ } 

CODE MATLAB

Dans votre fenêtre MATLAB GUI de conception mise en page, cliquez sur affichage - rédacteur en chef (ou trouver, dans la barre d’outils, une photo de papier et un crayon sans la main). Il ouvrira une fenêtre de l’éditeur avec certains codes écrits déjà, MATLAB leur ai écrit pour vous pas de problème. Écrire la fonction de rappel pour le bouton bascule, que le reste du code peut être laissé tel quel. Dans mon cas, j’ai nommé mon bouton bascule OnOffToggle, alors la fonction en vertu de laquelle j’ai écrit le code est OnOffToggle_Callback (hObject, eventdata, poignées).

Toutes les données envoyées par le biais de la série sont récupérées ici comme une variable rpmdata, donc nous voulons juste imprimer ces données tr/min à l’écran, c’est tout. Une dernière chose, vérifiez que vous vous connectez votre arduino au bon port COM que vous écrivez dans le code. Dans ce code, j’ai écrit COM3 parce que j’ai branché mon arduino à COM3.

Puis enregistrez votre fichier-m.

Voici le code complet (edit uniquement la fonction de 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</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 

Articles Liés

Arduino LCD thermomètre avec sonde de température LM35

Arduino LCD thermomètre avec sonde de température LM35

: mise à jour du PIN 13 : Merci à cybersbpour les captures.Le Fritzing schématique montre à l'aide de broches 12 et 13. Cela ne résout pas. Doit utiliser les broches figurant dans le code, les bornes 11 et 12.C'est comme le titre l'indique, un Arduin
Arduino Skateboard tachymètre

Arduino Skateboard tachymètre

En utilisant un Arduino, il est facile de faire un compteur de vitesse/tachymètre pour pratiquement n'importe quel véhicule alimenté par l'homme. J'ai fait un pour ma planche qui utilisé un petit aimant pour compter les révolutions et utilisé un écra
Comment utiliser mBlock logiciel de commande carte Arduino UNO - potentiomètre avec lumière del

Comment utiliser mBlock logiciel de commande carte Arduino UNO - potentiomètre avec lumière del

J'ai commencer à utiliser le logiciel mBlock puisque j'ai reçu mon kit de robot mBot . mBlock est un logiciel de programmation graphique qui est conçu selon Scratch 2.0 et compaible avec Arduino UNO, mega 2560, leonardo, etc., plus de matériel sera s
Arduino LDR tachymètre

Arduino LDR tachymètre

Peut-être vous avez une mini voiture de câble ou de toute autre chose que vous voulez connaître sa vitesse.Il y a plusieurs façons sur la vitesse de mesure How-to, mais aujourd'hui nous allons travailler avec mesure de la vitesse de base. Juste, je c
Arduino WiFi thermomètre (avec page web) - Arduino sans fil

Arduino WiFi thermomètre (avec page web) - Arduino sans fil

Ce dont vous avez besoinUne carte Arduino (n'importe quelle plaque compatible est OK).LM-35 (pour utiliser avec le fichier fourni, vous pouvez utiliser DS18B20 mais vous devez convertir le code source respectivement).Module de HLK-RM04 WiFi de routeu
Arduino vu-mètre avec amplificateur

Arduino vu-mètre avec amplificateur

vos quatre parties principales de ce projet sont un Arduino, une LoLshield et un amplificateurLe LoLshield est un circuit imprimé qui est livré avec une bibliothèque qui permet de contrôler individuellement une matrice de LED.  Une fois que vous avez
Binguino : Un générateur de base Arduino Bingo

Binguino : Un générateur de base Arduino Bingo

Bingo!Ma petite-fille aime jouer au Bingo, donc je suis sorti et lui acheté unensemble bon marché dans une petite boutique discount. Les cartes et les marqueurs sont très bien,mais le disque spinner pour sélectionner les numéros est un morceau d'ordu
Simple base Arduino Ethernet Controller

Simple base Arduino Ethernet Controller

j'ai récemment sortit et acheté un Arduino Ethernet Shield, mais n'a pas pu vraiment mettre à profit comme je ne pouvais pas trouver des tutoriaux faciles alors j'ai commencé à essayer de code par moi-même. J'ai pu arriver à une simple section de cod
Tachymètre bricolage numérique tr/min | Compteur de tr/min avec Arduino

Tachymètre bricolage numérique tr/min | Compteur de tr/min avec Arduino

Salut les gens, je vous écris cet article pour partager mon dernier projet DIY tr/mn Tachymètre ou vous pouvez dire compteur tr/min. Tout en créant un projet plusieurs fois, nous avons besoin de vérifier la vitesse du moteur, et nous devons tachymètr
Base Arduino Tutoriels : 01 clignotant LED

Base Arduino Tutoriels : 01 clignotant LED

dans ce instructable, je vais vous montrer comment faire un simple circuit/code avec un arduino, qui fera une LED connectée à ce flash d'off à on, avec des intervalles de 1 seconde, comme indiqué ci-dessous.Il s'agit d'une idée très simple, de base,
Mesure tr/min - Tachymètre optique

Mesure tr/min - Tachymètre optique

Cet Instructable va vous montrer comment faire un Tachymètre optique numérique Portable utilisant une Arduino Uno.Au lieu d'un capteur fendu, il possède un capteur de réflexion basée. Donc :1. vous n'avez pas à vous soucier de l'épaisseur du rotor2.
Tachymètre infrarouge en utilisant Arduino

Tachymètre infrarouge en utilisant Arduino

Salut, c'est juste un autre tachymètre que vous pouvez trouver également de nombreux tutoriels là-bas. Il existe différentes approches sur mesure tr/min, ce que j'utilise ici repose sur la méthode analogRead comme écrit dans l'arduino playground appr
Pickup enrouleur de qualité PRO - 3000 + enrouleur pickup tr/min avec tachymètre, compteur et autostop

Pickup enrouleur de qualité PRO - 3000 + enrouleur pickup tr/min avec tachymètre, compteur et autostop

Pourquoi construire cet enrouleur ?Vs exécution de coût pour les débutants. Fonctionnalités pour une autre. Vous voulez pousser votre décision sur le bord ? Vous pouvez construire ce dévidoir pour 158,00 $ et ont tout un tas de machine pour très peu
Tachymètre optique axée sur l’Arduino

Tachymètre optique axée sur l’Arduino

plus de dix ans, j'ai mis en place une page web avec des instructions détaillées sur la construction d'un moteur électrique simple basé sur l'un de monde télévisé de le Beakman. Je l'ai appelé la page "moteur électrique de Beakman" et au fil des