You are on page 1of 4

ARDUINO

Lectura con los dos potenciómetros:

// definir variables
int out1 = 0;
int out2 = 0;

void setup() {
// inicializar puerto serie
Serial.begin(9600);
}

void loop() {
// leer pines
out1 = analogRead(A0);
out2 = analogRead(A1);
// enviar
Serial.print(out1);
Serial.print(",");
Serial.println(out2);
// esperar
delay(20);
}

Lectura de USB con Arduino:

// for incoming serial data


int incomingByte = 0;

void setup() {
// opens serial port, sets data rate to 9600 bps
Serial.begin(9600);
}

void loop() {
// send data only when you received data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();

// say what you got:


Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}

(Serial.write)

(Serial.read)
M AT LA B
Para usar este puerto es necesario establecer los parámetros de su
funcionamiento, como por ejemplo baudrate, bits de datos, bit de
parada, etc.

%ABRIR el puerto COM1


clear all; clc; close all;
clc; disp('BEGIN')
SerPIC = serial('COM1');
set(SerPIC,'BaudRate',2400);
set(SerPIC,'DataBits',8);
set(SerPIC,'Parity','none');
set(SerPIC,'StopBits',1);
set(SerPIC,'FlowControl','none');
fopen(SerPIC);
%*-*-*-*-*-*-

Para escribir datos usamos la función fprintf:

fprintf(SerPIC,'%c',char(100));%Envía en código ASCII


fprintf(SerPIC,'%s',’100’);%Envía un string

Para leer los datos del puerto se usa la función fscanf:

s1 = serial('COM1');
s1.BaudRate=9600;
fopen(s1);
dato = fscanf(s1);

Syntax
A=fscanf(obj)
A=fscanf(obj, 'format')
A=fscanf(obj, 'format',size)
format = '%d … i, o, u, x, X, f, e, E, g, c y s'
obj = s1

Luego de realizar la comunicación, los pasos para cerrar el puerto


son:

%CERRAR el puerto COM1 al finalizar


fclose(SerPIC);
delete(SerPIC)
clear SerPIC
disp('STOP')

Lectura con los dos potenciómetros:

clear all; clc; close all;


%borrar previos
delete(instrfind({'Port'},{'COM4'}));
%crear objeto serie
s = serial('COM4','BaudRate',9600,'Terminator','CR/LF');
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
%abrir puerto
fopen(s);

% parámetros de medidas
tmax = 10; % tiempo de captura en s
rate = 33; % resultado experimental (comprobar)

% preparar la figura
f = figure('Name','Captura');
a = axes('XLim',[0 tmax],'YLim',[0 5.1]);
l1 = line(nan,nan,'Color','r','LineWidth',2);
l2 = line(nan,nan,'Color','b','LineWidth',2);

xlabel('Tiempo (s)')
ylabel('Voltaje (V)')
title('Captura de voltaje en tiempo real con Arduino')
grid on
hold on

% inicializar
v1 = zeros(1,tmax*rate);
v2 = zeros(1,tmax*rate);
i = 1;
t = 0;

% ejecutar bucle cronometrado


tic
while t<tmax
t = toc;
% leer del puerto serie
a = fscanf(s,'%d,%d')';
v1(i)=a(1)*5/1024;
v2(i)=a(2)*5/1024;
% dibujar en la figura
x = linspace(0,i/rate,i);
set(l1,'YData',v1(1:i),'XData',x);
set(l2,'YData',v2(1:i),'XData',x);
drawnow
% seguir
i = i+1;
end
% resultado del cronometro
clc;
fprintf('%g s de captura a %g cap/s \n',t,i/t);

%% Limpiar la escena del crimen


fclose(s);
delete(s);
clear s;
Conexión de los potenciómetros al Arduino

Steps to setup serial communication through MATLAB

 Connect the Arduino to your PC via USB


 Program the microcontroller using the Arduino IDE
 Identify the com port and enter it into MATLAB
 Create and run the function file *.m

You might also like