RE: playTone duration in Arduino package

"JohnD" <[email protected]>
Newsgroups gmane.comp.gnu.octave.general
Message-ID <[email protected]>

> -----Original Message-----
> From: JohnD [mailto:[email protected]]
> Sent: Thursday, March 11, 2021 12:21 AM
> To: 'Cathy Zupke'
> Cc: [email protected]
> Subject: RE: playTone duration in Arduino package
> 
> 
> >> playTone(a,'D10',440,1) %piezo speaker is attached to D10 and makes a
> tone that never stops
> >> playTone(a,'D10',300,1) %frequency changes but never stops
> >> playTone(a,'D10',0,1) %sound stops
> >> playTone(a,'D10',180,3) %makes a tone that never stops
> >> playTone(a,'D10',440,0) %frequency changes but never stops
> >> version   %I think this gives the version of octave
> 
> > It is my understanding that the last parameter is supposed to be duration in
> seconds. So I'd expect the tones to stop after that time has elapsed.
> 
> 
> 
> 
> It looks good to me, so must be a bug in the code - the duration should be
> passed to the Arduino tone function in the library code, so if its not turning
> off, its acting like the duration its receiving is 0 that would play until the stop
> is called.
> 
>  I will have to hook up an Arduino and take a look.


Found an obvious mistake in inst/@arduino/playTone.m. If you change the line
if nargin >= 3

to be

if nargin < 4

It then works for me.

Diff format:
--- a/inst/@arduino/playTone.m  Wed Mar 10 15:57:09 2021 -0500
+++ b/inst/@arduino/playTone.m  Thu Mar 11 07:35:29 2021 -0500
@@ -35,7 +35,7 @@
   if nargin < 3
     error ("@arduino.playTone: expected pin name and frequency");
   endif
-  if nargin >= 3
+  if nargin < 4
     duration = 0;
   endif
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.