Physics 37100 Advanced Physics Laboratory I

Lab #4

(PART I:  Wait for it…)

 

1)          Create a sketch that waits for the letter ‘?’ over the serial port.  When it receives ‘?’ it will send back ‘K’ and turn on and LED.

a.      Set a poll time of 200 μs using delayMicroseconds() to check Serial.available().

b.      Use Serial.read() to examine each character that is sent.  If the character is not ‘?’ then continue to wait.

c.      Test the sketch using the serial monitor. 

2)          Convert the sketch into a function waitFor().

a.      waitFor should take 3 inputs:

                                                              i.      A character to wait for.

                                                            ii.      A poll time, which should default to 200 μs.

                                                          iii.      A time out period, which should default to 60e6 μs.

b.      waitFor should output true if it reads the character and false if the time out period expires.

c.      Rewrite and test the sketch from 1) using your new function waitFor(‘R’).

                                                              i.      Try waiting for other characters.

                                                            ii.      Test the defaults and overrides.

3)          Make a Matlab script that sends the character ‘?’ over the serial port.

a.      using code similar to this:

 

% Make sure to use the same number for baud that you used 

% for Serial.begin(9600) in your sketch.

 

s=serial('COM8','baud',9600);  % Create serial object

fopen(s);                      % Open serial port

pause(2);                      % Wait for port to open

 

fprintf(s,'?');    % Send character '?'

 

 

%% Always close -- use: fclose(instrfind);delete(instrfind) %  to close orphans

fclose(s);

delete(s);

clear s;

 

b.      Test to make sure the LED only lights when ‘?’ is sent.

4)          Add code to the matlab script to wait for the character ‘K’ to be sent over the using fgetl() (type “doc serial/fgetl” for info). 

5)          Using the code developed above we have a way to establish communications between matlab and the arduino.  It is like a short conversation: matlab asks ‘?’ == ‘Are you ready?’ and arduino responds ‘K’ == ‘Yes, I am OK.’.

a.      Save the sketch and matlab script to send with your report.