<div dir="ltr"><div class="gmail_default" style="font-size:small"><br><div class="gmail_default" style="font-size:small">What I meant to say last night is the array size is cm[8].  The values for SONAR_NUM == 3 and IR_NUM == 2<br>This should not be overrunning the array as it only loops through 5 times.<br>I have tried setting maxDistance as uint32_t without any difference.</div><div class="gmail_default" style="font-size:small">I have commented out the sendData() function and added some Serial.print statements prior to reassigning the values. (shown in output)</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">#define SONAR_NUM 3<br>#define IR_NUM 2<br>uint32_t cm[8] = {0,0,0,0,0,0,0,0}; // Create array<br>uint16_t maxDistance = 200; // Also used with NewPing.h libraray<br>char *position[] = {"us_Left", "us_Mid", "us_Right", "ir_Left", "ir_Right", "cm[5]", "cm[6]", "cm[7]"};<br>.<br>. // Other code here<br>.<br><br>void oneSensorCycle() { // Sensor ping cycle complete, do something with the results.<br>  for (uint8_t x = 0; x < (SONAR_NUM + IR_NUM); x++) {<br>    Serial.print("cm[");<br>    Serial.print(x);<br>    Serial.print("] = ");<br>    Serial.println(cm[x]);<br>    if ((cm[x] == 0) or (cm[x] > maxDistance)) {<br>      cm[x] = 999;<br>    }<br>  }<br>  if (troubleshoot) {<br>    for (uint8_t i = 0; i < (SONAR_NUM + IR_NUM); i++) {<br>      Serial.print("| ");<br>      Serial.print(position[i]);<br>      Serial.print(" = ");<br>      Serial.print(cm[i]);<br>      Serial.print("cm ");<br>    }<br>    Serial.print("| ");<br>    Serial.print("Time = ");<br>    Serial.print(elapsedMillis);<br>    Serial.print("mS");<br>    Serial.println();<br>  }<br>  //else {<br>  //  sendData();<br>  //}<br>}<br><br><br>Loop() {<br></div><div class="gmail_default" style="font-size:small">  .// other code<br></div><div class="gmail_default" style="font-size:small">  oneSensorCycle()<br></div><div class="gmail_default" style="font-size:small">  . // more code<br></div><div class="gmail_default" style="font-size:small">}<br><br>Serial output:<br><br>-- Miniterm on /dev/ttyUSB-sensors  115200,8,N,1 ---<br>--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---<br>cm[0] = 0<br>cm[1] = 95<br>cm[2] = 91<br>cm[3] = 85<br>cm[4] = 246<br>| us_Left = 999cm | us_Mid = 999cm | us_Right = 999cm | ir_Left = 999cm | ir_Right = 999cm | Time = 44mS<br><br>...Pat C<br><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 17, 2021 at 10:07 AM Chris Netter <<a href="mailto:netterchris@gmail.com">netterchris@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;" lang="EN-US"><div class="gmail-m_6843183720359827069WordSection1"><p class="MsoNormal">The for loop stops at x < 8, so it won’t overrun.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">What if you remove the sendData() call?  Does that help?</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Also,  make sure you have declared any global variables which are modified by interrupts or other tasks as “volatile”, otherwise the compile may decide to optimize away parts of your code.</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Chris</p><p class="MsoNormal"><u></u> <u></u></p><div style="border-color:rgb(225,225,225) currentcolor currentcolor;border-style:solid none none;border-width:1pt medium medium;padding:3pt 0in 0in"><p class="MsoNormal" style="border:medium none;padding:0in"><b>From: </b><a href="mailto:paradug@gmail.com" target="_blank">Doug Paradis</a><br><b>Sent: </b>Thursday, December 16, 2021 11:46 PM<br><b>To: </b><a href="mailto:netterchris@gmail.com" target="_blank">Chris Netter</a><br><b>Cc: </b><a href="mailto:patcaron@mail.com" target="_blank">Pat Caron</a>; <a href="mailto:dprglist@lists.dprg.org" target="_blank">dprglist@lists.dprg.org</a><br><b>Subject: </b>Re: [Dprglist] Arduino Code Troubles</p></div><p class="MsoNormal"><u></u> <u></u></p><div><p class="MsoNormal">Pat,</p><div><p class="MsoNormal">    for (uint8_t x = 0; x < (SONAR_NUM + IR_NUM); x++) {</p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">    If  SONAR_NUM _ IR_NUM = 8 then you are overrunning the array which goes 0 to 7.</p></div><div><p class="MsoNormal"><u></u> <u></u></p></div><div><p class="MsoNormal">Regards,</p></div><div><p class="MsoNormal">Doug P.</p></div></div><p class="MsoNormal"><u></u> <u></u></p><div><div><p class="MsoNormal">On Thu, Dec 16, 2021 at 8:53 PM Chris Netter via DPRGlist <<a href="mailto:dprglist@lists.dprg.org" target="_blank">dprglist@lists.dprg.org</a>> wrote:</p></div><blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in"><div><div><p class="MsoNormal">So Markus and Karim already pointed out that the original code snipped works as designed.</p><p class="MsoNormal"> </p><p class="MsoNormal">It’s also been pointed out already that you are mixing data types. I don’t think that’s the issue, but worth trying to make both the array and maxDistance uint16_t</p><p class="MsoNormal"> </p><p class="MsoNormal">As for this new code snippet:</p><p class="MsoNormal"> </p><p class="MsoNormal">I don’t see any obvious issue with the for loop.  Are you positive that <span style="font-size:12pt">SONAR_NUM + IR_NUM == 8 ?   if not, you are overshooting the array and that can cause all kinds of non-obvious issues.</span></p><p class="MsoNormal"><span style="font-size:12pt"> </span></p><p class="MsoNormal"><span style="font-size:12pt">Also, what does sendData() do?  Could it have some side-effects?   Maybe its causing a stack overflow, array bounds overflow, or similar, which in turn causes non-obvious issues?</span></p><p class="MsoNormal"> </p><p class="MsoNormal"> </p><p class="MsoNormal"> </p><div style="border-color:rgb(225,225,225) currentcolor currentcolor;border-style:solid none none;border-width:1pt medium medium;padding:3pt 0in 0in"><p class="MsoNormal"><b>From: </b><a href="mailto:dprglist@lists.dprg.org" target="_blank">Pat Caron via DPRGlist</a><br><b>Sent: </b>Thursday, December 16, 2021 9:04 PM<br><b>To: </b><a href="mailto:dprglist@lists.dprg.org" target="_blank">dprglist@lists.dprg.org</a><br><b>Subject: </b>Re: [Dprglist] Arduino Code Troubles</p></div><p class="MsoNormal"> </p><div><div><p class="MsoNormal"><span style="font-size:12pt">Hi guys, here is a better example to show what is happening taken from actual code:</span></p></div><div><p class="MsoNormal"><span style="font-size:12pt"> </span></p></div><div><p class="MsoNormal"><span style="font-size:12pt">.... other code<br>  for (uint8_t x = 0; x < (SONAR_NUM + IR_NUM); x++) {  // SONAR_NUM + IR_NUM = 8<br>    if ((cm[x] == 0) || (cm[x] > maxDistance)) {<br>      cm[x] = 999;<br>    }</span></p></div><div><p class="MsoNormal"><span style="font-size:12pt">  sendData();</span></p></div><div><p class="MsoNormal"><span style="font-size:12pt">  }<br><br>Printed values cm[0] to cm[5] (us_Left to ir_Right) without the above if statement<br>| us_Left = 0cm | us_Mid = 95cm | us_Right = 51cm | ir_Left = 84cm | ir_Right = 252cm | Time = 45mS<br><br>Printed values cm[0] to cm[5] with the above if statement<br>\| us_Left = 999cm | us_Mid = 999cm | us_Right = 999cm | ir_Left = 999cm | ir_Right = 999cm | Time = 44mS<br><br>...Pat C</span></p></div></div><p class="MsoNormal"> </p><div><div><p class="MsoNormal">On Thu, Dec 16, 2021 at 8:45 PM Karim Virani <<a href="mailto:pondersome64@gmail.com" target="_blank">pondersome64@gmail.com</a>> wrote:</p></div><blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt"><div><p class="MsoNormal">It's doing what it's coded to do</p></div><p class="MsoNormal"> </p><div><div><p class="MsoNormal">On Thu, Dec 16, 2021 at 7:42 PM Pat Caron via DPRGlist <<a href="mailto:dprglist@lists.dprg.org" target="_blank">dprglist@lists.dprg.org</a>> wrote:</p></div><blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt"><div><div><p class="MsoNormal"><span style="font-size:12pt">Hi Murray, I did try that with the same results.  NewPing.h library is looking for a uint16_t although it didn't complain when I tried that.</span></p></div><div><p class="MsoNormal"><span style="font-size:12pt"> </span></p></div><div><p class="MsoNormal"><span style="font-size:12pt">...Pat C</span></p></div></div><p class="MsoNormal"> </p><div><div><p class="MsoNormal">On Thu, Dec 16, 2021 at 8:35 PM Murray Altheim via DPRGlist <<a href="mailto:dprglist@lists.dprg.org" target="_blank">dprglist@lists.dprg.org</a>> wrote:</p></div><blockquote style="border-color:currentcolor currentcolor currentcolor rgb(204,204,204);border-style:none none none solid;border-width:medium medium medium 1pt;padding:0in 0in 0in 6pt;margin:5pt 0in 5pt 4.8pt"><p class="MsoNormal">Hi Pat,<br><br>What if you define maxDistance as uint32_t?<br><br>Cheers,<br><br>Murray<br><br>On 17/12/21 2:27 pm, Pat Caron via DPRGlist wrote:<br>> Hi guys, I'm looking for help with the following Arduino code.<br>> <br>>      uint32_t cm[8] = {0,0,0,0,0,0,0,0}; // Create array<br>>      uint16_t maxDistance = 200; // Also used with NewPing.h library<br>>      .<br>>      . // Other code here<br>>      .<br>>      irSensorL.read(); // Read IR sensor... This is working!<br>>      cm[3] = irSensorL.ranging_data.range_mm/10; // This returns 268<br>>      if (cm[3] > maxDistance) {<br>>        cm[3] = 999;                 /<br>>      }<br>>      Serial.println(cm[3]);  / cm[3] value is always = 999<br>>      sendData();<br>> <br>> The cm[3] value is always 999 when I run this.<br>> If I comment out the if cm[3]... statement cm[3] value is then 268.<br>> <br>> ...Pat C<br>> <br>> _______________________________________________<br>> DPRGlist mailing list<br>> <a href="mailto:DPRGlist@lists.dprg.org" target="_blank">DPRGlist@lists.dprg.org</a><br>> <a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><br>> <br><br>-- <br><br>.........................................................................<br>Murray Altheim <murray18 at altheim dot com>                       = =  ===<br><a href="http://www.altheim.com/murray/" target="_blank">http://www.altheim.com/murray/</a>                                     ===  ===<br>                                                                    = =  ===<br>     In the evening<br>     The rice leaves in the garden<br>     Rustle in the autumn wind<br>     That blows through my reed hut.<br>            -- Minamoto no Tsunenobu<br><br>_______________________________________________<br>DPRGlist mailing list<br><a href="mailto:DPRGlist@lists.dprg.org" target="_blank">DPRGlist@lists.dprg.org</a><br><a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a></p></blockquote></div></blockquote></div></blockquote></div><p class="MsoNormal" style="margin-left:9.6pt">_______________________________________________<br>DPRGlist mailing list<br><a href="mailto:DPRGlist@lists.dprg.org" target="_blank">DPRGlist@lists.dprg.org</a><br><a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a></p><p class="MsoNormal"> </p></div></div></blockquote></div><p class="MsoNormal" style="margin-left:4.8pt">_______________________________________________<br>DPRGlist mailing list<br><a href="mailto:DPRGlist@lists.dprg.org" target="_blank">DPRGlist@lists.dprg.org</a><br><a href="http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org" target="_blank">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a></p><p class="MsoNormal"><u></u> <u></u></p></div></div>
</blockquote></div>