{"id":64,"date":"2015-04-16T11:41:40","date_gmt":"2015-04-16T09:41:40","guid":{"rendered":"https:\/\/pa3csg.nl\/?page_id=64"},"modified":"2020-10-23T12:37:11","modified_gmt":"2020-10-23T10:37:11","slug":"swr-power-meter-with-protection-for-solid-state-pa","status":"publish","type":"page","link":"https:\/\/pa3csg.nl\/?page_id=64","title":{"rendered":"SWR Power meter with protection for Solid State PA"},"content":{"rendered":"<h2><\/h2>\n<h2>SWR Power meter with protection for Solid State PA Version II<\/h2>\n<h2><span style=\"color: #ff0000;\">Old article below this one<\/span><\/h2>\n<p>Some people who built the power meter came with some good ideas and these were used for the Version II of the SWR Power meter. Also some hardware changes are involved.<\/p>\n<p>New features:<\/p>\n<ul>\n<li>autoranging<\/li>\n<li>adapted for VHF \u2013 UHF use \/ better matching up to 500MHz<\/li>\n<li>wideband input<\/li>\n<li>storage of calibration values in EEPROM<\/li>\n<li>I2C display less wiring<\/li>\n<li>uses only two buttons to operate less wiring<\/li>\n<li>Uses an arduino nano, easy programming<\/li>\n<li>adaptable to most detectors as AD8313 etc<\/li>\n<li>mW meter function that makes it possible to calibrate your home made coupler and do other measurements.<\/li>\n<li>prepared for remote operation RS485 for remote operation<\/li>\n<\/ul>\n<p><b>Operation of the SWR \/ Watt-meter<\/b><\/p>\n<p>Operation is simple! It has only two push buttons. Normally a red one (RESET) and a different colour, lets assume black.<\/p>\n<p>On start-up it should present the dual bar mode, one for forward, one for reflected.<\/p>\n<p><img loading=\"lazy\" class=\"wp-image-1418 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2028-1024x456.jpg\" alt=\"\" width=\"424\" height=\"189\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2028-1024x456.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2028-600x267.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2028-300x134.jpg 300w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2028.jpg 2023w\" sizes=\"(max-width: 424px) 100vw, 424px\" \/><\/p>\n<p>By pressing the mode button for halve a second you enter the Forward mode<\/p>\n<p><img loading=\"lazy\" class=\"wp-image-1365 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1183-1024x562.jpg\" alt=\"\" width=\"404\" height=\"222\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1183-1024x562.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1183-600x329.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1183-300x165.jpg 300w\" sizes=\"(max-width: 404px) 100vw, 404px\" \/><\/p>\n<p>Let&#8217; s describe what we see:<\/p>\n<p>First line: showing forward power and temperature<\/p>\n<p>Second line: shows reflected power and the calculated SWR<\/p>\n<p>Third line: shows the watt-meter is in &#8220;FWD&#8221; mode and the full scale power of the bar graph is 20W<\/p>\n<p>Fourth line: the bar graph<\/p>\n<p>By pushing the the black button for halve a second it will go to the REF mode. It shows &#8220;REF&#8221; on the third line. The signal source is connected to the REF port. As there is no forward power the SWR will state &#8220;LOW&#8221; Note that the bar graph is showing the reflected power. It will be auto ranging on the reflected power.<\/p>\n<p><img loading=\"lazy\" class=\"wp-image-1366 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1186-1024x626.jpg\" alt=\"\" width=\"420\" height=\"257\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1186-1024x626.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1186-600x367.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1186-300x183.jpg 300w\" sizes=\"(max-width: 420px) 100vw, 420px\" \/><\/p>\n<p>Another push on the button will enter the Temp mode. The bar graph will show the temperature from 0-100 degrees. No auto ranging! This is to see the temperature behaviour of a device (solid state amp).<\/p>\n<p><img loading=\"lazy\" class=\"wp-image-1367 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1187-1024x650.jpg\" alt=\"\" width=\"420\" height=\"267\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1187-1024x650.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1187-600x381.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1187-300x190.jpg 300w\" sizes=\"(max-width: 420px) 100vw, 420px\" \/><\/p>\n<p>Again push the &#8220;mode&#8217; button will enter the mW meter function. It will display bar graphs on the second and fourth line of the display from 0 to 100mW. First and third line show the power in dBm and mW. Because the AD8307 is frequency compensated (Following an article <a href=\"https:\/\/pa3csg.nl\/?page_id=1078\">HERE<\/a>) it can be used as a mW meter in the range up to 500 MHz.<\/p>\n<p><img loading=\"lazy\" class=\"wp-image-1370 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1192-1024x621.jpg\" alt=\"\" width=\"442\" height=\"268\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1192-1024x621.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1192-600x364.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1192-300x182.jpg 300w\" sizes=\"(max-width: 442px) 100vw, 442px\" \/><\/p>\n<p>In the software you can enable the alarm function and the limits for the alarm settings. If enabled it will show the alarms for SWR and temperature. It will stop measuring and\u00a0 show the following display:<\/p>\n<p><img loading=\"lazy\" class=\"wp-image-1368 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1188-1024x646.jpg\" alt=\"\" width=\"424\" height=\"268\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1188-1024x646.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1188-600x378.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1188-300x189.jpg 300w\" sizes=\"(max-width: 424px) 100vw, 424px\" \/><\/p>\n<p>The alarm outputs of the board go high and these can be connected to the FET-switch and the Arduine sequencer. This will disable the amplifier. See the page describing this <a href=\"https:\/\/pa3csg.nl\/?page_id=1336\">HERE<\/a>.<\/p>\n<p>Same goes for the SWR alarm.<\/p>\n<p>Generally the display should look something like this:<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-1369 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1190-1024x645.jpg\" alt=\"\" width=\"454\" height=\"286\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1190-1024x645.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1190-600x378.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1190-300x189.jpg 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/p>\n<p>There is another mode available. The calibration mode. This calibrates the unit to a known signal source (-20dBm) Some displays below:<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-1371 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1193-1024x653.jpg\" alt=\"\" width=\"457\" height=\"291\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1193-1024x653.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1193-600x383.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1193-300x191.jpg 300w\" sizes=\"(max-width: 457px) 100vw, 457px\" \/><\/p>\n<p><img loading=\"lazy\" class=\" wp-image-1372 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1194-1024x652.jpg\" alt=\"\" width=\"463\" height=\"295\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1194-1024x652.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1194-600x382.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1194-300x191.jpg 300w\" sizes=\"(max-width: 463px) 100vw, 463px\" \/><\/p>\n<p>To see the setting you entered in the software, you have to press the mode button for more than 2 seconds. It will display all the settings in the software. Coupler values, Attenuator values, number of mV per dB (normally 25mV for the AD8307) and the calibrated value. Very handy to check.<\/p>\n<p><img loading=\"lazy\" class=\"wp-image-1419 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2022-1024x460.jpg\" alt=\"\" width=\"437\" height=\"196\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2022-1024x460.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2022-600x270.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/05\/DSC_2022-300x135.jpg 300w\" sizes=\"(max-width: 437px) 100vw, 437px\" \/><\/p>\n<p>A complete build unit should look like this:<\/p>\n<p><img loading=\"lazy\" class=\" wp-image-1373 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1201-964x1024.jpg\" alt=\"\" width=\"461\" height=\"490\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1201-964x1024.jpg 964w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1201-565x600.jpg 565w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2018\/12\/DSC_1201-282x300.jpg 282w\" sizes=\"(max-width: 461px) 100vw, 461px\" \/><\/p>\n<p><strong>Power Handling<\/strong><\/p>\n<p>Power handling is determined by the coupler, the (external) attenuator, the on board attenuator. Make sure the input on the AD8307 never exceeds 10mW (10dBm) better stay in the 0 dBm area \/ 0 mW<\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-large wp-image-1383\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/01\/power-handling-1024x426.jpg\" alt=\"\" width=\"1024\" height=\"426\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/01\/power-handling-1024x426.jpg 1024w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/01\/power-handling-600x250.jpg 600w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/01\/power-handling-300x125.jpg 300w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2019\/01\/power-handling.jpg 1076w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h3><strong>\u00a0<\/strong><\/h3>\n<p>\/*<\/p>\n<p>Copyright 2019, Geert Stams PA3CSG<\/p>\n<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files<br \/>\n(the &#8220;Software&#8221;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,<br \/>\nmerge, publish, distribute, sublicense, and\/or sell copies of the Software, and to permit persons to whom the Software is furnished<br \/>\nto do so, subject to the following conditions:<\/p>\n<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.<\/p>\n<p>THE SOFTWARE IS PROVIDED &#8220;AS IS&#8221;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES<br \/>\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS<br \/>\nBE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF<br \/>\nOR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.<\/p>\n<p>************************************************************************<\/p>\n<p>PWR SWR meter &amp; TEMP PA protection + Blower PWM Control<br \/>\nPA3CSG January 2017 V2.0<br \/>\nNovember 2016<br \/>\nPA3CSG \/ ON5RR LCD display via I2C<\/p>\n<p>***********************CHANGELOG****************************************<\/p>\n<p>12 nov. 2016 I2C version first tests<br \/>\n14 jan. 2017 final tests + adaption of software<br \/>\n19 june 2017 added minimum fwd pwr of 5w to perform swr measurement<br \/>\n20 aug. 2018 updated to latest version<br \/>\nnov. 2018 added mW feature Thanks to Anton ON6NL<br \/>\ndec. 2018 SSB tuning Thanks to Anton ON6NL<br \/>\n8 januari 2019 Version 3.0<br \/>\n28 feb 2019 Final adjustments to version 3.0<br \/>\n01 may 2019 Started to integrate RS485 TNX ON6NL<br \/>\n03 may 2019 started settings display<\/p>\n<p>************************************************************************<br \/>\n*\/<\/p>\n<p>\/\/ include the library code:<br \/>\n#include &lt;EEPROM.h&gt;<br \/>\n#include &lt;LiquidCrystal_I2C.h&gt;<br \/>\n#include &#8220;RS485_protocol.h&#8221;<br \/>\n#include &lt;SoftwareSerial.h&gt;<\/p>\n<p>LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); \/\/0x27 or 0x3F is address<\/p>\n<p>const int LCD_NB_ROWS = 4;<br \/>\nconst int LCD_NB_COLUMNS = 20;<\/p>\n<p>byte DIV_0_OF_5[8] = {<br \/>\nB00000,<br \/>\nB00000,<br \/>\nB00000,<br \/>\nB00000,<br \/>\nB00000,<br \/>\nB00000,<br \/>\nB00000,<br \/>\nB00000<br \/>\n}; \/\/ 0 \/ 5<\/p>\n<p>byte DIV_1_OF_5[8] = {<br \/>\nB10000,<br \/>\nB10000,<br \/>\nB10000,<br \/>\nB10000,<br \/>\nB10000,<br \/>\nB10000,<br \/>\nB10000,<br \/>\nB10000<br \/>\n}; \/\/ 1 \/ 5<\/p>\n<p>byte DIV_2_OF_5[8] = {<br \/>\nB11000,<br \/>\nB11000,<br \/>\nB11000,<br \/>\nB11000,<br \/>\nB11000,<br \/>\nB11000,<br \/>\nB11000,<br \/>\nB11000<br \/>\n}; \/\/ 2 \/ 5<\/p>\n<p>byte DIV_3_OF_5[8] = {<br \/>\nB11100,<br \/>\nB11100,<br \/>\nB11100,<br \/>\nB11100,<br \/>\nB11100,<br \/>\nB11100,<br \/>\nB11100,<br \/>\nB11100<br \/>\n}; \/\/ 3 \/ 5<\/p>\n<p>byte DIV_4_OF_5[8] = {<br \/>\nB11110,<br \/>\nB11110,<br \/>\nB11110,<br \/>\nB11110,<br \/>\nB11110,<br \/>\nB11110,<br \/>\nB11110,<br \/>\nB11110<br \/>\n}; \/\/ 4 \/ 5<\/p>\n<p>byte DIV_5_OF_5[8] = {<br \/>\nB11111,<br \/>\nB11111,<br \/>\nB11111,<br \/>\nB11111,<br \/>\nB11111,<br \/>\nB11111,<br \/>\nB11111,<br \/>\nB11111<br \/>\n}; \/\/ 5 \/ 5<\/p>\n<p>\/\/********************************************************<br \/>\n\/\/All the stuff you need to enter is below this line<br \/>\n\/\/********************************************************<br \/>\nString call = &#8220;PA3CSG&#8221;; \/\/ Put your call here<br \/>\nfloat coupFWD = 31.0; \/\/coupling factor value set before ad8307 mW meter input in dB for FWD<br \/>\nfloat coupREF = 31.0; \/\/coupling factor value set before ad8307 mW meter input in dB for REF<br \/>\nint attFWD = 41; \/\/all the attenuator values added together on the FWD Port<br \/>\nint attREF = 41; \/\/all the attenuator values added together on the REF Port<br \/>\nfloat uDBfwd = 0.025; \/\/voltage per dB at the wanted freq<br \/>\nfloat uDBref = 0.025; \/\/voltage per dB at the wanted freq<br \/>\nfloat swralarm = 3.0; \/\/ max permitted swr before switching swr-alarm on<\/p>\n<p>int tempMin = 25; \/\/ the temperature to start the fan<br \/>\nint tempMax = 50; \/\/ the maximum temperature when fan is at 100%<br \/>\nint tempalarmOn = 55; \/\/the temperature for alarm<br \/>\nint tempalarmOff = 50; \/\/the temperature where the alarm switches off<\/p>\n<p>\/\/*********************************************************<br \/>\n\/\/*********************************************************<\/p>\n<p>\/\/***********************************************************************<br \/>\n\/\/DEFINES<br \/>\n\/\/***********************************************************************<br \/>\n\/\/ UNCOMMENT LINES<br \/>\n\/\/To set debug on, uncomment next line<br \/>\n\/\/#define DEBUG 1<br \/>\n\/\/To store Calibration in software uncomment next line<br \/>\n#define CALIBSOFT 1<br \/>\n\/\/ To define Alarm function ON uncomment next line<br \/>\n\/\/#define ALARMON 1<br \/>\n\/\/To set RS485 MASTER uncomment next line<br \/>\n\/\/#define RS485MAST 1<br \/>\n\/\/To set RS485 SLAVE uncomment next line<br \/>\n\/\/#define RS485SLAVE 1<br \/>\n\/\/<\/p>\n<p>\/\/ variables for input pin and control LED<br \/>\n\/\/variables for the power meter<br \/>\n\/\/ For the AD converters<\/p>\n<p>int analogInputFWD = 0; \/\/input FWD voltage on pin A0<br \/>\nint analogInputREF = 1; \/\/input REF voltage on pin A1<br \/>\nint analogInputTemp = 2; \/\/input from LM35 temp sensor on pin A2<\/p>\n<p>\/\/For the alarms<br \/>\nint alarmswr = 8; \/\/SWR alarm on pin 7<br \/>\nint alarmtemp = 9; \/\/Temp warning on pin 1<\/p>\n<p>\/\/For the blower control<br \/>\nint fan = 6; \/\/ the pin where fan is<br \/>\nint fanSpeed;<br \/>\nint eff;<\/p>\n<p>\/\/float variables<br \/>\nfloat Vfwd = 0.0;<br \/>\nfloat Vref = 0.0;<br \/>\nfloat ufwd = 0;<br \/>\nfloat uref = 0;<br \/>\nfloat out_fwddbm = 0.0; \/\/the fwdpower measured in Dbm<br \/>\nfloat out_refdbm = 0.0; \/\/the refpower measured in Dbm<br \/>\nfloat out_fwddbm_coup = 0.0; \/\/FWDdbm with coupler<br \/>\nfloat out_refdbm_coup = 0.0;\/\/REFdbm with coupler<br \/>\nfloat wattfwd = 0;<br \/>\nfloat wattref = 0;<br \/>\nfloat RL = 0.0;<br \/>\nfloat swr = 0.0;<br \/>\nfloat temp = 0.0;<\/p>\n<p>\/\/We need to track how long the momentary pushbutton is held in order to execute different commands<br \/>\n\/\/This value will be recorded in seconds<br \/>\nfloat pressLength_milliSeconds = 0;<\/p>\n<p>\/\/ variable to store the value<br \/>\nint addressFWD = 0;<br \/>\nint addressREF = 10;<br \/>\nint scale = 0;<br \/>\nint scalecounter = 0;<br \/>\nint counterPwr = 0;<br \/>\nint counteroldPwr = counterPwr;<br \/>\nint counterMode = 0;<br \/>\nint counteroldMode;<br \/>\nint ADfwd = 0;<br \/>\nint ADref = 0;<br \/>\nint ADfwd2 = 0;<br \/>\nint ADref2 = 0;<br \/>\nlong ufwdEEPROM ;<br \/>\nlong urefEEPROM ;<\/p>\n<p>\/\/variables for the button<\/p>\n<p>\/\/ Define the *minimum* length of time, in milli-seconds, that the button must be pressed for a particular option to occur<br \/>\nint optionOne_milliSeconds = 500;<br \/>\nint optionTwo_milliSeconds = 2000;<br \/>\nint optionThree_milliSeconds = 5000;<br \/>\nint incrementStatePwr = 0; \/\/will read increment for Power button<br \/>\nint lastIncrementStatePwr = 0;<br \/>\nint incrementStateMode = 0; \/\/will read increment for Mode button<br \/>\nint lastIncrementStateMode = 0;<\/p>\n<p>byte buttonPin = 12; \/\/ the pin that the pushbutton for the power selection is attached to<\/p>\n<p>void setup(){<\/p>\n<p>\/\/********************************************************<br \/>\n\/\/ Read EEPROM<br \/>\n\/\/********************************************************<\/p>\n<p>ufwdEEPROM = EEPROMReadlong (addressFWD);<br \/>\nufwdEEPROM = (ufwdEEPROM \/ 10000 );<br \/>\n\/\/voltage measured at the output of the FWD AD8307 when -20dbm<br \/>\nufwd = (ufwdEEPROM * 2.5) \/ 1024; \/\/FWD<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;ufwdEEPROM &#8220;); Serial.println(ufwdEEPROM);<br \/>\nSerial.print(&#8220;ufwd &#8220;); Serial.println(ufwd,4);<br \/>\n#endif<\/p>\n<p>urefEEPROM = EEPROMReadlong (addressREF);<br \/>\nurefEEPROM = (urefEEPROM \/ 10000 );<br \/>\n\/\/voltage measured at the output of the REF AD8307 when -20dbm<br \/>\nuref = (urefEEPROM * 2.5) \/ 1024; \/\/REF<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;urefEEPROM &#8220;); Serial.println(ufwdEEPROM);<br \/>\nSerial.print(&#8220;uref &#8220;); Serial.println(uref,4);<br \/>\n#endif<\/p>\n<p>\/\/********************************************************<br \/>\n\/\/ Initiate display, buttons, alarms etc.<br \/>\n\/\/********************************************************<br \/>\nlcd.begin(20,4);<br \/>\nlcd.backlight();<br \/>\nsetup_progressbar();<br \/>\nlcd.clear();<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.begin(9600);<br \/>\n#endif<\/p>\n<p>\/\/ declaration of pin modes<br \/>\nanalogReference(EXTERNAL); \/\/sets reference to external connected reference 2,5V LT1009 reference<\/p>\n<p>\/\/ For the AD converters<br \/>\npinMode (analogInputFWD, INPUT); \/\/input from AD8307<br \/>\npinMode (analogInputREF, INPUT); \/\/input from AD8307<br \/>\npinMode (analogInputTemp, INPUT); \/\/input from temp sensor LM35<\/p>\n<p>\/\/For the push buttons<br \/>\n\/\/ Initialize the pushbutton pin as an input pullup<br \/>\n\/\/ Keep in mind, when pin 2 has ground voltage applied, we know the button is being pressed<\/p>\n<p>pinMode(buttonPin, INPUT_PULLUP);<\/p>\n<p>pinMode(buttonPin, INPUT); \/\/ initialize the button pin for the Pwr switch as an input:<br \/>\n\/\/pinMode(incrementButtonMode, INPUT); \/\/ initialize the button pin for the Mode switch as an input:<\/p>\n<p>\/\/for the leds outputs<br \/>\npinMode (alarmswr, OUTPUT); \/\/SWR alarm on pin 8<br \/>\npinMode (alarmtemp, OUTPUT); \/\/Temp warning on pin 9<\/p>\n<p>\/\/setup alarms<br \/>\ndigitalWrite(alarmswr, LOW);<br \/>\ndigitalWrite(alarmtemp, LOW);<\/p>\n<p>\/\/for the PWM control of the blower<br \/>\npinMode(fan, OUTPUT);<\/p>\n<p>\/\/ set up the LCD&#8217;s number of columns and rows:<br \/>\nlcd.begin(20, 4);<\/p>\n<p>\/\/ A little bit of PR<br \/>\nlcd.setCursor(0,0);<br \/>\nlcd.print(&#8220;SWR-PWR &amp; protection&#8221;);<br \/>\nlcd.setCursor(7,1);<br \/>\nlcd.print(call);<br \/>\nlcd.setCursor(6,2);<br \/>\nlcd.print(&#8220;Welcome&#8221;);<br \/>\nlcd.setCursor(5,3);<br \/>\nlcd.print(&#8220;Have fun!&#8221;);<br \/>\ndelay(1500);<br \/>\nlcd.clear();<\/p>\n<p>}<\/p>\n<p>\/\/********************************************************<br \/>\n\/\/ main calculation routine starts here<br \/>\n\/\/********************************************************<\/p>\n<p>void loop() {<\/p>\n<p>counteroldMode = counterMode;<br \/>\n\/*<br \/>\n#ifdef DEBUG<br \/>\nSerial.print(&#8220;ufwdEEPROM &#8220;); Serial.println(ufwdEEPROM);<br \/>\nSerial.print(&#8220;ufwd &#8220;); Serial.println(ufwd);<br \/>\n#endif<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;urefEEPROM &#8220;); Serial.println(urefEEPROM);<br \/>\nSerial.print(&#8220;uref &#8220;); Serial.println(uref);<br \/>\n#endif<br \/>\n*\/<\/p>\n<p>\/\/************************************************************************<br \/>\n\/\/ CALLING SUBROUTINES<br \/>\n\/\/************************************************************************<br \/>\n\/\/ measuring forward and reflected power and calculate SWR<br \/>\ncalculationPWR();<\/p>\n<p>\/\/ Reading the temparature sensor<br \/>\ncalculationTemp();<\/p>\n<p>\/\/Look what mode the operator wants looking how long the button was pressed<br \/>\nbuttonWorks();<\/p>\n<p>if (counterMode == 0)<br \/>\n{<br \/>\nscaleMeasurementFWD();<br \/>\ndisplayMode0();<br \/>\n}<\/p>\n<p>else<\/p>\n<p>if (counterMode == 1)<br \/>\n{<br \/>\nscaleMeasurementFWD();<br \/>\ndisplayMode1();<br \/>\n}<\/p>\n<p>else<\/p>\n<p>if (counterMode == 2)<br \/>\n{<br \/>\nscaleMeasurementREF();<br \/>\ndisplayMode2();<br \/>\n}<\/p>\n<p>else<\/p>\n<p>if (counterMode == 3)<br \/>\n{<br \/>\ndisplayMode3();<br \/>\n}<\/p>\n<p>else<\/p>\n<p>if (counterMode == 4)<br \/>\n{<br \/>\ndisplayMode4();<br \/>\n};<\/p>\n<p>}<\/p>\n<p>\/\/***********************************************************************************<br \/>\nvoid calculationPWR(){<br \/>\n\/\/***********************************************************************************<\/p>\n<p>\/\/ measuring forward and reflected power<br \/>\n\/\/ and calculate SWR<\/p>\n<p>\/\/ reset fwd &amp; ref to 0<\/p>\n<p>ADfwd = 0;<br \/>\nADref = 0;<\/p>\n<p>\/\/ Number of analog reads from which the max value is used<br \/>\n\/\/ To be balanced for comfortable PEP reading and delay<\/p>\n<p>int NumberReads = 50;<\/p>\n<p>\/\/ read the value of analog Fwd and Ref and determine max values<br \/>\nfor(int i = 0; i &lt;=NumberReads; i++) {<br \/>\nADfwd2 = analogRead(analogInputFWD);<br \/>\nADref2 = analogRead(analogInputREF);<br \/>\nADfwd = max(ADfwd2 , ADfwd);<br \/>\nADref = max(ADref2 , ADref);<br \/>\ndelay(2);<br \/>\n}<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;ADfwd &#8220;); Serial.println(ADfwd);<br \/>\nSerial.print(&#8220;ADfwd2 &#8220;); Serial.println(ADfwd2);<br \/>\n#endif<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;ADref &#8220;); Serial.println(ADref);<br \/>\nSerial.print(&#8220;ADref2 &#8220;); Serial.println(ADref2);<br \/>\n#endif<\/p>\n<p>\/\/determine the voltage<\/p>\n<p>Vfwd = (ADfwd * 2.5) \/ 1024.0; \/\/FWD<br \/>\nVref = (ADref * 2.5) \/ 1024.0; \/\/REF<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;Vfwd &#8220;); Serial.println(Vfwd);<br \/>\nSerial.print(&#8220;Vref &#8220;); Serial.println(Vref);<br \/>\n#endif<\/p>\n<p>\/\/For the FWD measurement<\/p>\n<p>if (Vfwd &gt;= ufwd)<br \/>\n{<br \/>\nout_fwddbm = ((Vfwd &#8211; ufwd) \/ uDBfwd);<br \/>\nout_fwddbm = (-20 + out_fwddbm);<br \/>\n}<\/p>\n<p>if (Vfwd &lt; ufwd)<br \/>\n{<br \/>\nout_fwddbm = ((ufwd &#8211; Vfwd) \/ uDBfwd);<br \/>\nout_fwddbm = (-20 &#8211; out_fwddbm);<br \/>\n}<\/p>\n<p>\/\/For the REF measurement<\/p>\n<p>if (Vref &lt; uref)<br \/>\n{<br \/>\nout_refdbm = ((uref &#8211; Vref) \/ uDBref);<br \/>\nout_refdbm = (-20 &#8211; out_refdbm);<br \/>\n}<\/p>\n<p>if (Vref &gt;= uref)<br \/>\n{<br \/>\nout_refdbm = ((Vref &#8211; uref) \/ uDBref);<br \/>\nout_refdbm = (-20 + out_refdbm);<br \/>\n}<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;out_fwddbm &#8220;); Serial.println(out_fwddbm);<br \/>\nSerial.print(&#8220;out_refdbm &#8220;); Serial.println(out_refdbm);<br \/>\n#endif<\/p>\n<p>\/\/Add coupler &amp; attenuator value to the dbm power<\/p>\n<p>out_fwddbm_coup = (out_fwddbm + coupFWD + attFWD); \/\/FWD<br \/>\nout_refdbm_coup = (out_refdbm + coupREF + attREF); \/\/REF<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;out_fwddbm with coupler &#8220;); Serial.println(out_fwddbm_coup);<br \/>\nSerial.print(&#8220;out_refdbm with coupler &#8220;); Serial.println(out_refdbm_coup);<br \/>\n#endif<\/p>\n<p>\/\/calculates wattfwd in watts<br \/>\nwattfwd = pow(10 , (out_fwddbm_coup\/10));<br \/>\nwattfwd = wattfwd\/1000;<br \/>\nwattfwd = constrain(wattfwd, 0, 5000);<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;wattfwd with coupler &#8220;); Serial.println(wattfwd);<br \/>\n#endif<\/p>\n<p>\/\/calculates wattref in watts<br \/>\nwattref = pow(10 , (out_refdbm_coup\/10));<br \/>\nwattref = wattref\/1000;<br \/>\nwattref = constrain(wattref, 0, 5000);<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;wattref with coupler &#8220;); Serial.println(wattref);<br \/>\n#endif<\/p>\n<p>\/\/routine to calculate SWR<br \/>\nswr = (1 + sqrt(wattref\/wattfwd))\/(1 &#8211; sqrt(wattref\/wattfwd));<\/p>\n<p>\/\/ limits swr measurements to be only functional with 5W FWD this is limited by the dynamic range of the ad8307<\/p>\n<p>if (wattfwd &lt;5) {<br \/>\nswr = (1);<br \/>\n}<br \/>\nswr = constrain(swr, 0, 99);<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;swr &#8220;); Serial.println(swr);<br \/>\n#endif<\/p>\n<p>#ifdef ALARMON<\/p>\n<p>if (swr &gt; swralarm) {<br \/>\ndigitalWrite(alarmswr, HIGH);<br \/>\nlcd.clear();<br \/>\nlcd.setCursor(4,0);<br \/>\nlcd.print(&#8220;***ALARM***&#8221;);<br \/>\nlcd.setCursor(3,2);<br \/>\nlcd.print(&#8220;*****SWR*****&#8221;);<br \/>\nwhile(1) { } \/\/endless loop to stop<br \/>\n}<br \/>\n#endif<\/p>\n<p>}<\/p>\n<p>\/\/************************************************************************************<br \/>\nvoid calculationTemp(){<br \/>\n\/\/************************************************************************************<\/p>\n<p>\/\/code to read and calculate temp. from sensor<\/p>\n<p>temp = analogRead(analogInputTemp);<\/p>\n<p>temp = (temp \/ 4.096);<br \/>\ndelay (5);<\/p>\n<p>\/\/routine for the blower PWM control<br \/>\nif(temp &lt; tempMin) { \/\/ if temp is lower than minimum temp<br \/>\nfanSpeed = 0; \/\/ fan is not spinning<br \/>\ndigitalWrite(fan, LOW);<br \/>\n}<br \/>\nif((temp &gt;= tempMin) &amp;&amp; (temp &lt;= tempMax)) { \/\/ if temperature is higher than minimum temp<br \/>\nfanSpeed = map(temp, tempMin, tempMax, 50, 255); \/\/ the actual speed of fan, set<br \/>\n\/\/values so that fan actually starts spinning<br \/>\nanalogWrite(fan, fanSpeed); \/\/ spin the fan at the fanSpeed speed<br \/>\n}<\/p>\n<p>\/\/sets level for the alarmtemp. protection switch off<br \/>\nif (temp &lt; tempalarmOff) {<br \/>\ndigitalWrite (alarmtemp, LOW);<br \/>\n}<\/p>\n<p>#ifdef ALARMON<\/p>\n<p>if (temp &gt; tempalarmOn) {<\/p>\n<p>digitalWrite (alarmtemp, HIGH);<br \/>\nlcd.clear();<br \/>\nlcd.setCursor(4,0);<br \/>\nlcd.print(&#8220;***ALARM***&#8221;);<br \/>\nlcd.setCursor(2,2);<br \/>\nlcd.print(&#8220;***TEMPERATURE***&#8221;);<br \/>\nwhile(1) { } \/\/endless loop to stop<br \/>\n}<br \/>\n#endif<\/p>\n<p>}<\/p>\n<p>\/\/**********************************************************************************************<br \/>\nvoid buttonWorks(){<br \/>\n\/\/**********************************************************************************************<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;counterMode &#8220;); Serial.println(counterMode);<br \/>\n#endif<\/p>\n<p>\/\/Reading and counting the button for mode setting<\/p>\n<p>\/\/Records *roughly* the tenths of seconds the button in being held down<\/p>\n<p>while (digitalRead(buttonPin) == LOW ){<br \/>\ndelay(50); \/\/if you want more resolution, lower this number<br \/>\npressLength_milliSeconds = pressLength_milliSeconds + 50;<br \/>\n}\/\/close while<\/p>\n<p>#ifdef DEBUG<br \/>\n\/\/display how long button is has been held<br \/>\nSerial.print(&#8220;button pressed ms = &#8220;); Serial.println(pressLength_milliSeconds);<br \/>\n#endif<\/p>\n<p>\/\/Different if-else conditions are triggered based on the length of the button press<br \/>\n\/\/Start with the longest time option first<\/p>\n<p>\/\/Option 3<br \/>\n\/\/ Execute the third option if the button is held for the correct amount of time option 3: &gt; 5000 milliseconds<br \/>\nif (pressLength_milliSeconds &gt;= optionThree_milliSeconds){<br \/>\ndelay(50); \/\/debounce delay<br \/>\n\/\/ Calibration mode for FWD and REF<br \/>\ncalibrate();<br \/>\n\/\/ After calibratiopn a reset is mandatory<br \/>\n}<\/p>\n<p>\/\/Option 2 &#8211; Execute the second option if the button is held for 2000 milliseconds<\/p>\n<p>if (pressLength_milliSeconds &gt;= optionTwo_milliSeconds){<br \/>\ndelay(50); \/\/debounce delay<br \/>\ndisplaySettings();<\/p>\n<p>}<\/p>\n<p>\/\/option 1 &#8211; Execute the first option if the button is held for the correct amount of time<br \/>\nelse if(pressLength_milliSeconds &gt;= optionOne_milliSeconds){<\/p>\n<p>counterMode ++ ; \/\/increment the mode counter<br \/>\ndelay(50); \/\/debounce delay<br \/>\n}\/\/close if options<\/p>\n<p>\/\/limits the the counterPwr to 9 counts and resets to 0<\/p>\n<p>if(counterPwr &gt; 8)<br \/>\n{<br \/>\ncounterPwr = 0;<br \/>\n}<\/p>\n<p>lastIncrementStateMode = incrementStateMode;<\/p>\n<p>\/\/every time through the loop, we need to reset the pressLength_Seconds counter<br \/>\npressLength_milliSeconds = 0;<\/p>\n<p>if (counterMode != counteroldMode) {<br \/>\nlcd.clear();<br \/>\n}<\/p>\n<p>\/\/limits the the counterMode to 4 counts and resets to 0<\/p>\n<p>if(counterMode &gt; 4)<br \/>\n{<br \/>\ncounterMode = 0;<br \/>\n};<\/p>\n<p>}<\/p>\n<p>\/\/**************************************************************************************<br \/>\nvoid scaleMeasurementFWD(){<br \/>\n\/\/**************************************************************************************<\/p>\n<p>\/\/routine automatically sets the FS level of the wattmeter for fwd pwr<\/p>\n<p>if (wattfwd &gt;= 0 &amp;&amp; wattfwd &lt; 10) {<br \/>\ncounterPwr = 8;<br \/>\n}<br \/>\nelse if (wattfwd &gt;= 10 &amp;&amp; wattfwd &lt; 20) {<br \/>\ncounterPwr = 7;<br \/>\n}<br \/>\nelse if (wattfwd &gt;= 20 &amp;&amp; wattfwd &lt; 50) {<br \/>\ncounterPwr = 6;<br \/>\n}<br \/>\nelse if (wattfwd &gt;= 50 &amp;&amp; wattfwd &lt; 100) {<br \/>\ncounterPwr = 5;<br \/>\n}<br \/>\nelse if (wattfwd &gt;= 100 &amp;&amp; wattfwd &lt; 200) {<br \/>\ncounterPwr = 4;<br \/>\n}<br \/>\nelse if (wattfwd &gt;= 200 &amp;&amp; wattfwd &lt; 500) {<br \/>\ncounterPwr = 3;<br \/>\n}<br \/>\nelse if (wattfwd &gt;= 500 &amp;&amp; wattfwd &lt; 1000) {<br \/>\ncounterPwr = 2;<br \/>\n}<br \/>\nelse if (wattfwd &gt;= 1000 &amp;&amp; wattfwd &lt; 2000) {<br \/>\ncounterPwr = 1;<br \/>\n}<br \/>\nelse if (wattfwd &gt;= 2000 ) {<br \/>\ncounterPwr = 0;<br \/>\n}<\/p>\n<p>\/\/ to set scale and to slow down in downscaling<\/p>\n<p>if (counteroldPwr == counterPwr) {<br \/>\nscale = counterPwr;<br \/>\n}<br \/>\nif (counteroldPwr &gt; counterPwr){<br \/>\nscale = counterPwr;<br \/>\n}<\/p>\n<p>if (counteroldPwr &lt; counterPwr){<br \/>\nscalecounter = scalecounter + 1;<br \/>\nif (scalecounter == 4){<br \/>\nscale = counteroldPwr + 1;<br \/>\nscalecounter = 0;<br \/>\n}<br \/>\n}<br \/>\ncounteroldPwr = scale;<\/p>\n<p>}<\/p>\n<p>\/\/*************************************************************************<br \/>\nvoid scaleMeasurementREF(){<br \/>\n\/\/*************************************************************************<br \/>\n\/\/routine automatically sets the FS level of the wattmeter for fwd pwr<\/p>\n<p>if (counterMode == 2){<\/p>\n<p>if (wattref &gt;= 0 &amp;&amp; wattref &lt; 10) {<br \/>\ncounterPwr = 8;<br \/>\n}<br \/>\nelse if (wattref &gt;= 10 &amp;&amp; wattref &lt; 20) {<br \/>\ncounterPwr = 7;<br \/>\n}<br \/>\nelse if (wattref &gt;= 20 &amp;&amp; wattref &lt; 50) {<br \/>\ncounterPwr = 6;<br \/>\n}<br \/>\nelse if (wattref &gt;= 50 &amp;&amp; wattref &lt; 100) {<br \/>\ncounterPwr = 5;<br \/>\n}<br \/>\nelse if (wattref &gt;= 100 &amp;&amp; wattref &lt; 200) {<br \/>\ncounterPwr = 4;<br \/>\n}<br \/>\nelse if (wattref &gt;= 200 &amp;&amp; wattref &lt; 500) {<br \/>\ncounterPwr = 3;<br \/>\n}<br \/>\nelse if (wattref &gt;= 500 &amp;&amp; wattref &lt; 1000) {<br \/>\ncounterPwr = 2;<br \/>\n}<br \/>\nelse if (wattref &gt;= 1000 &amp;&amp; wattref &lt; 2000) {<br \/>\ncounterPwr = 1;<br \/>\n}<br \/>\nelse if (wattref &gt;= 2000 ) {<br \/>\ncounterPwr = 0;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/************************************************************************<br \/>\nvoid setup_progressbar() {<br \/>\n\/\/************************************************************************<br \/>\nlcd.createChar(0, DIV_0_OF_5);<br \/>\nlcd.createChar(1, DIV_1_OF_5);<br \/>\nlcd.createChar(2, DIV_2_OF_5);<br \/>\nlcd.createChar(3, DIV_3_OF_5);<br \/>\nlcd.createChar(4, DIV_4_OF_5);<br \/>\nlcd.createChar(5, DIV_5_OF_5);<br \/>\n}<\/p>\n<p>\/\/**************************************************************************<br \/>\nvoid draw_bar(byte value) {<br \/>\n\/\/**************************************************************************<br \/>\nbyte nb_columns = map(value, 0, 100, 0, LCD_NB_COLUMNS * 5);<br \/>\nfor (byte i = 0; i &lt; LCD_NB_COLUMNS; ++i) {<br \/>\nif (nb_columns == 0) {<br \/>\nlcd.write((byte) 0);<br \/>\n} else if (nb_columns &gt;= 5) {<br \/>\nlcd.write(5);<br \/>\nnb_columns -= 5;<br \/>\n} else {<br \/>\nlcd.write(nb_columns);<br \/>\nnb_columns = 0;<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/**************************************************************************<br \/>\nvoid bargraphWorksFWDREF(){<br \/>\n\/\/**************************************************************************<br \/>\n\/\/fourth line of the display counterMode sets the function of the fourth line<br \/>\n\/\/ following prints graph bar counterMode = 0 This is FWDREF Mode<\/p>\n<p>lcd.setCursor(0,1);<\/p>\n<p>if (counterPwr == 0 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 5000)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 5000)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 1 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 2000)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 2000)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 2 ) {<br \/>\nlcd.setCursor(0,1);<br \/>\nint wattfwdproc= (wattfwd \/ 1000)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 1000)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 3 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 500)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 500)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 4 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 200)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 200)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 5 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 100)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 100)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 6 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 50)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 50)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 7 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 20)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 20)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 8 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 10)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\nlcd.setCursor( 0 , 3);<br \/>\nint wattrefproc= (wattref \/ 10)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/**************************************************************************<br \/>\nvoid bargraphWorksFWD(){<br \/>\n\/\/**************************************************************************<br \/>\n\/\/fourth line of the display counterMode sets the function of the fourth line<br \/>\n\/\/ following prints graph bar counterMode = 1 This is FWD Mode<\/p>\n<p>lcd.setCursor(0,3);<\/p>\n<p>if (counterMode == 1) {<\/p>\n<p>if (counterPwr == 0 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 5000)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 1 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 2000)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 2 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 1000)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 3 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 500)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 4 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 200)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 5 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 100)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 6 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 50)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 7 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 20)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 8 ) {<br \/>\nint wattfwdproc= (wattfwd \/ 10)*100;<br \/>\ndraw_bar(wattfwdproc*1);<br \/>\ndelay(1);<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/******************************************************************************************<br \/>\nvoid bargraphWorksREF(){<br \/>\n\/\/******************************************************************************************<\/p>\n<p>\/\/ following prints graph bar counterMode = 2 This is REF Mode<\/p>\n<p>lcd.setCursor(0,3);<\/p>\n<p>if (counterMode == 2) {<\/p>\n<p>lcd.setCursor(0,3);<br \/>\nif (counterPwr == 0 ) {<br \/>\nint wattrefproc= (wattref \/ 5000)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 1 ) {<br \/>\nint wattrefproc= (wattref \/ 2000)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 2 ) {<br \/>\nint wattrefproc= (wattref \/ 1000)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 3 ) {<br \/>\nint wattrefproc= (wattref \/ 500)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 4 ) {<br \/>\nint wattrefproc= (wattref \/ 200)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 5 ) {<br \/>\nint wattrefproc= (wattref \/ 100)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 6 ) {<br \/>\nint wattrefproc= (wattref \/ 50)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 7 ) {<br \/>\nint wattrefproc= (wattref \/ 20)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<\/p>\n<p>if (counterPwr == 8 ) {<br \/>\nint wattrefproc= (wattref \/ 10)*100;<br \/>\ndraw_bar(wattrefproc*1);<br \/>\ndelay(1);<br \/>\n}<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/******************************************************************************************<br \/>\nvoid displayMode0(){ \/\/2 BARS Mode<br \/>\n\/\/******************************************************************************************<br \/>\n\/\/first line<br \/>\nlcd.setCursor(0, 0);<br \/>\nlcd.print(&#8220;F=&#8221;);<br \/>\nif (wattfwd &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattfwd &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattfwd &lt; 1000) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (wattfwd , 0);<br \/>\nlcd.setCursor ( 6 , 0);<br \/>\nlcd.print(&#8220;W &#8220;);<\/p>\n<p>lcd.print(&#8220;FS=&#8221;);<br \/>\nif (counterPwr == 0) {<br \/>\nlcd.print(&#8221; 5kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 1) {<br \/>\nlcd.print(&#8221; 2kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 2) {<br \/>\nlcd.print(&#8221; 1kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 3) {<br \/>\nlcd.print(&#8220;500W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 4) {<br \/>\nlcd.print(&#8220;200W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 5) {<br \/>\nlcd.print(&#8220;100W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 6) {<br \/>\nlcd.print(&#8221; 50W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 7) {<br \/>\nlcd.print(&#8221; 20W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 8) {<br \/>\nlcd.print(&#8221; 10W&#8221;);<br \/>\n}<br \/>\nlcd.print(&#8221; T=&#8221;);<br \/>\nlcd.print(temp , 0);<\/p>\n<p>\/\/third line<br \/>\nlcd.setCursor(0, 2);<br \/>\nlcd.print(&#8220;R=&#8221;);<br \/>\nif (wattref &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattref &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattref &lt; 1000) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (wattref , 0);<br \/>\nlcd.setCursor ( 6 , 2);<br \/>\nlcd.print(&#8220;W &#8220;);<br \/>\nlcd.print(&#8220;SWR=&#8221;);<br \/>\nif (wattfwd &lt; 5 )<br \/>\n{ lcd.print(&#8220;LOW&#8221;);}<br \/>\nelse<br \/>\n{ lcd.print(swr , 1);}<\/p>\n<p>\/\/second line is forward bargraph<br \/>\n\/\/fourth line is reflected bargraph<\/p>\n<p>bargraphWorksFWDREF();<\/p>\n<p>}<\/p>\n<p>\/\/******************************************************************************************<br \/>\nvoid displayMode1(){ \/\/Forward Mode<br \/>\n\/\/******************************************************************************************<br \/>\n\/\/first line<br \/>\nlcd.setCursor(0, 0);<br \/>\nlcd.print(&#8220;FWD=&#8221;);<br \/>\nif (wattfwd &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattfwd &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattfwd &lt; 1000) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (wattfwd , 0);<br \/>\nlcd.print(&#8220;W &#8220;);<br \/>\nlcd.setCursor ( 10 , 0);<br \/>\nlcd.print(&#8220;T =&#8221;);<br \/>\nif (temp &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (temp &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (temp , 0);<br \/>\nlcd.print (&#8221; &#8220;);<br \/>\nlcd.print((char)223);<br \/>\nlcd.print(&#8220;C &#8220;);<\/p>\n<p>\/\/second line<br \/>\nlcd.setCursor(0, 1);<br \/>\nlcd.print(&#8220;REF=&#8221;);<br \/>\nif (wattref &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattref &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattref &lt; 1000) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (wattref , 0);<br \/>\nlcd.print(&#8220;W &#8220;);<br \/>\nlcd.setCursor(10,1);<br \/>\nlcd.print(&#8220;SWR= &#8220;);<br \/>\nlcd.setCursor(15,1);<br \/>\nif (wattfwd &lt; 5 )<br \/>\n{ lcd.print(&#8220;LOW&#8221;);}<br \/>\nelse<br \/>\n{ lcd.print(swr , 1);}<\/p>\n<p>if (swr &lt; 10) {<br \/>\nlcd.setCursor (18,1);<br \/>\nlcd.print (&#8221; &#8220;); }<\/p>\n<p>\/\/third line<br \/>\nlcd.setCursor(0, 2);<br \/>\nlcd.print(&#8220;FWD &#8220;);<br \/>\nlcd.print(&#8220;FS PWR=&#8221;);<br \/>\nif (counterPwr == 0) {<br \/>\nlcd.print(&#8221; 5kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 1) {<br \/>\nlcd.print(&#8221; 2kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 2) {<br \/>\nlcd.print(&#8221; 1kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 3) {<br \/>\nlcd.print(&#8220;500W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 4) {<br \/>\nlcd.print(&#8220;200W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 5) {<br \/>\nlcd.print(&#8220;100W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 6) {<br \/>\nlcd.print(&#8221; 50W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 7) {<br \/>\nlcd.print(&#8221; 20W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 8) {<br \/>\nlcd.print(&#8221; 10W&#8221;);<br \/>\n}<\/p>\n<p>lcd.setCursor(0 , 3);<br \/>\nbargraphWorksFWD();<\/p>\n<p>}<\/p>\n<p>\/\/******************************************************************************************<br \/>\nvoid displayMode2(){ \/\/ reflected mode<br \/>\n\/\/******************************************************************************************<br \/>\n\/\/first line<br \/>\nlcd.setCursor(0, 0);<br \/>\nlcd.print(&#8220;FWD=&#8221;);<br \/>\nif (wattfwd &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattfwd &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattfwd &lt; 1000) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (wattfwd , 0);<br \/>\nlcd.print(&#8220;W &#8220;);<br \/>\nlcd.setCursor ( 10 , 0);<br \/>\nlcd.print(&#8220;T =&#8221;);<br \/>\nif (temp &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (temp &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (temp , 0);<br \/>\nlcd.print (&#8221; &#8220;);<br \/>\nlcd.print((char)223);<br \/>\nlcd.print(&#8220;C &#8220;);<\/p>\n<p>\/\/second line<br \/>\nlcd.setCursor(0, 1);<br \/>\nlcd.print(&#8220;REF=&#8221;);<br \/>\nif (wattref &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattref &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattref &lt; 1000) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (wattref , 0);<br \/>\nlcd.print(&#8220;W &#8220;);<br \/>\nlcd.setCursor(10,1);<br \/>\nlcd.print(&#8220;SWR= &#8220;);<br \/>\nlcd.setCursor(15,1);<br \/>\nif (wattfwd &lt; 5 )<br \/>\n{ lcd.print(&#8220;LOW&#8221;);}<br \/>\nelse<br \/>\n{ lcd.print(swr , 1);}<\/p>\n<p>if (swr &lt; 10) {<br \/>\nlcd.setCursor (18,1);<br \/>\nlcd.print (&#8221; &#8220;); }<\/p>\n<p>\/\/third line<br \/>\nlcd.setCursor(0, 2);<br \/>\nlcd.print(&#8220;REF &#8220;);<br \/>\nlcd.print(&#8220;FS PWR=&#8221;);<br \/>\nif (counterPwr == 0) {<br \/>\nlcd.print(&#8221; 5kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 1) {<br \/>\nlcd.print(&#8221; 2kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 2) {<br \/>\nlcd.print(&#8221; 1kW&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 3) {<br \/>\nlcd.print(&#8220;500W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 4) {<br \/>\nlcd.print(&#8220;200W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 5) {<br \/>\nlcd.print(&#8220;100W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 6) {<br \/>\nlcd.print(&#8221; 50W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 7) {<br \/>\nlcd.print(&#8221; 20W&#8221;);<br \/>\n}<br \/>\nif (counterPwr == 8) {<br \/>\nlcd.print(&#8221; 10W&#8221;);<br \/>\n}<br \/>\nlcd.print(&#8221; &#8220;);<\/p>\n<p>bargraphWorksREF();<\/p>\n<p>}<\/p>\n<p>\/\/******************************************************************************************<br \/>\nvoid displayMode3(){ \/\/temperature mode<br \/>\n\/\/******************************************************************************************<br \/>\n\/\/first line<br \/>\nlcd.setCursor(0, 0);<br \/>\nlcd.print(&#8220;FWD=&#8221;);<br \/>\nif (wattfwd &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattfwd &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattfwd &lt; 1000) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (wattfwd , 0);<br \/>\nlcd.print(&#8220;W &#8220;);<br \/>\nlcd.setCursor ( 10 , 0);<br \/>\nlcd.print(&#8220;T =&#8221;);<br \/>\nif (temp &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (temp &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (temp , 0);<br \/>\nlcd.print (&#8221; &#8220;);<br \/>\nlcd.print((char)223);<br \/>\nlcd.print(&#8220;C &#8220;);<\/p>\n<p>\/\/second line<br \/>\nlcd.setCursor(0, 1);<br \/>\nlcd.print(&#8220;REF=&#8221;);<br \/>\nif (wattref &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattref &lt; 100) { lcd.print (&#8221; &#8220;); }<br \/>\nelse if (wattref &lt; 1000) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print (wattref , 0);<br \/>\nlcd.print(&#8220;W &#8220;);<br \/>\nlcd.setCursor(10,1);<br \/>\nlcd.print(&#8220;SWR= &#8220;);<br \/>\nlcd.setCursor(15,1);<br \/>\nif (wattfwd &lt; 5 )<br \/>\n{ lcd.print(&#8220;LOW&#8221;);}<br \/>\nelse<br \/>\n{ lcd.print(swr , 1);}<\/p>\n<p>if (swr &lt; 10) {<br \/>\nlcd.setCursor (18,1);<br \/>\nlcd.print (&#8221; &#8220;); }<\/p>\n<p>\/\/third line<br \/>\nlcd.setCursor(0, 2);<br \/>\nlcd.print(&#8220;TEMP &#8220;);<br \/>\nlcd.print(&#8220;FS= 100&#8221;);<br \/>\nlcd.print((char)223);<br \/>\nlcd.print(&#8220;C &#8220;);<\/p>\n<p>bargraphWorksTEMP();<\/p>\n<p>}<\/p>\n<p>\/\/******************************************************************************************<br \/>\nvoid displayMode4(){ \/\/milliwatt mode<br \/>\n\/\/******************************************************************************************<\/p>\n<p>\/\/FWD Milliwatt meter<\/p>\n<p>lcd.clear();<\/p>\n<p>lcd.setCursor(0, 0);<br \/>\nlcd.print(&#8220;FWD &#8220;);<br \/>\n\/\/if (out_fwddbm &lt; 10 ) { lcd.print (&#8221; &#8220;); }<br \/>\nout_fwddbm = (out_fwddbm + attFWD);<br \/>\nlcd.print(out_fwddbm, 1);<br \/>\nlcd.print(&#8221; dBm &#8220;);<\/p>\n<p>\/\/calculates wattfwd in mW<br \/>\nwattfwd = pow(10 , (out_fwddbm\/10));<br \/>\nwattfwd = constrain(wattfwd, 0, 99.9);<br \/>\nlcd.print(wattfwd ,1);<br \/>\nlcd.print(&#8221; mW&#8221;);<\/p>\n<p>lcd.setCursor(0,1);<br \/>\ndraw_bar(wattfwd*1);<br \/>\ndelay(1);<\/p>\n<p>\/\/ REF Milliwatt meter<\/p>\n<p>lcd.setCursor(0, 2);<br \/>\nlcd.print(&#8220;REF &#8220;);<br \/>\nout_refdbm = (out_refdbm + attREF);<br \/>\n\/\/if (wattref &lt; 10) { lcd.print (&#8221; &#8220;); }<br \/>\nlcd.print(out_refdbm, 1);<br \/>\nlcd.print(&#8221; dBm &#8220;);<\/p>\n<p>\/\/calculates wattref in mW<br \/>\nwattref = pow(10 , (out_refdbm\/10));<br \/>\nwattref = constrain(wattref, 0, 99.9);<br \/>\nlcd.print(wattref ,1);<br \/>\nlcd.print(&#8221; mW&#8221;);<\/p>\n<p>lcd.setCursor(0,3);<br \/>\ndraw_bar(wattref*1);<br \/>\ndelay(1);<\/p>\n<p>}<br \/>\n\/\/******************************************************************************************<br \/>\nvoid bargraphWorksTEMP(){<br \/>\n\/\/******************************************************************************************<\/p>\n<p>\/\/ following prints graph bar counterMode = 3 This is Temperature Mode<br \/>\nif (counterMode == 3) {<br \/>\nlcd.setCursor(0,3);<br \/>\ndraw_bar(temp*1);<br \/>\ndelay(1);<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/******************************************************************************************<br \/>\nvoid calibrate(){<br \/>\n\/\/***************************************************************************************<br \/>\n\/\/variables<\/p>\n<p>const int numReadings = 100;<\/p>\n<p>long totalFWD = 0; \/\/ the running total<br \/>\nlong totalREF = 0; \/\/ the running total<br \/>\nlong ADCalFWD = 0; \/\/ the readings from the analog inputA0<br \/>\nlong ADCalREF = 0; \/\/ the readings from the analog inputA1<\/p>\n<p>\/\/***************************<br \/>\n\/\/Calibration FWD<br \/>\n\/\/***************************<br \/>\nlcd.clear();<br \/>\nlcd.setCursor(0,0);<br \/>\nlcd.print(&#8220;Calibration Mode&#8221;);<br \/>\ndelay(20);<br \/>\nlcd.setCursor(0,1);<br \/>\nlcd.print(&#8220;Input -20db into FWD&#8221;);<br \/>\nlcd.setCursor(0,2);<br \/>\nlcd.print(&#8220;Press Butt. to start&#8221;);<br \/>\nlcd.setCursor(0,3);<br \/>\nlcd.print(&#8220;or Reset to cancel &#8220;);<br \/>\nwhile (digitalRead (buttonPin) == HIGH){<br \/>\ndelay(1);<br \/>\n};<\/p>\n<p>\/\/measuring values<\/p>\n<p>for(int i = 0; i &lt;=numReadings; i++) {<br \/>\nADCalFWD = analogRead(analogInputFWD);<br \/>\ntotalFWD = (ADCalFWD + totalFWD);<br \/>\ndelay(50);<br \/>\n}<\/p>\n<p>totalFWD = (totalFWD \/ numReadings);<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;totalFWD &#8220;); Serial.println(totalFWD);<br \/>\n#endif<\/p>\n<p>EEPROMWritelong(addressFWD, (totalFWD * 10000));<\/p>\n<p>\/\/convert to volts<\/p>\n<p>ufwd = (totalFWD * 2.5) \/ 1024; \/\/FWD<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;ADCalFWD &#8220;); Serial.println(ADCalFWD);<br \/>\nSerial.print(&#8220;ufwd &#8220;); Serial.println(ufwd,4);<br \/>\n#endif<\/p>\n<p>lcd.setCursor(0,3);<br \/>\nlcd.print(&#8220;UFWD= &#8220;);<br \/>\nlcd.setCursor(7,3);<br \/>\nlcd.print(ufwd, 4);<br \/>\n\/\/ delay(2000);<br \/>\nlcd.setCursor(0,2);<br \/>\nlcd.print(&#8220;Press Butt. to kont.&#8221;);<br \/>\nwhile (digitalRead (buttonPin) == HIGH){<br \/>\ndelay(1);<br \/>\n};<\/p>\n<p>\/\/***************************<br \/>\n\/\/Calibration REF<br \/>\n\/\/***************************<\/p>\n<p>lcd.clear();<br \/>\nlcd.setCursor(0,0);<br \/>\nlcd.print(&#8220;Calibration Mode&#8221;);<br \/>\ndelay(20);<br \/>\nlcd.setCursor(0,1);<br \/>\nlcd.print(&#8220;Input -20db into REF&#8221;);<br \/>\nlcd.setCursor(0,2);<br \/>\nlcd.print(&#8220;Press Butt. to start&#8221;);<\/p>\n<p>while (digitalRead (buttonPin) == HIGH){<br \/>\ndelay(1);<br \/>\n};<\/p>\n<p>\/\/measuring values<\/p>\n<p>for(int i = 0; i &lt;=numReadings; i++) {<br \/>\nADCalREF = analogRead(analogInputREF);<br \/>\ntotalREF = (ADCalREF + totalREF);<br \/>\ndelay(50);<br \/>\n}<br \/>\ntotalREF = (totalREF \/ numReadings);<br \/>\nEEPROMWritelong(addressREF, (totalREF * 10000));<br \/>\nuref = (totalREF * 2.5) \/ 1024; \/\/REF<\/p>\n<p>#ifdef DEBUG<br \/>\nSerial.print(&#8220;ADCalREF &#8220;); Serial.println(ADCalREF);<br \/>\nSerial.print(&#8220;uref &#8220;); Serial.println(uref,4);<br \/>\n#endif<br \/>\nlcd.setCursor(0,3);<br \/>\nlcd.print(&#8220;UREF= &#8220;);<br \/>\nlcd.setCursor(7,3);<br \/>\nlcd.print(uref, 3);<br \/>\n\/\/ delay(2000);<br \/>\nlcd.setCursor(0,2);<br \/>\nlcd.print(&#8220;Press Reset Butt. &#8220;);<\/p>\n<p>while(1) { }; \/\/endless loop to force reset<\/p>\n<p>}<\/p>\n<p>\/\/******************************************************************************<br \/>\n\/\/ Subroutine write the EEPROM<br \/>\n\/\/******************************************************************************<br \/>\nvoid EEPROMWritelong(int address, long value)<br \/>\n{<br \/>\n\/\/Decomposition from a long to 4 bytes by using bitshift.<br \/>\n\/\/One = Most significant -&gt; Four = Least significant byte<br \/>\nbyte four = (value &amp; 0xFF);<br \/>\nbyte three = ((value &gt;&gt; 8) &amp; 0xFF);<br \/>\nbyte two = ((value &gt;&gt; 16) &amp; 0xFF);<br \/>\nbyte one = ((value &gt;&gt; 24) &amp; 0xFF);<\/p>\n<p>\/\/Write the 4 bytes into the eeprom memory.<br \/>\nEEPROM.write(address, four);<br \/>\nEEPROM.write(address + 1, three);<br \/>\nEEPROM.write(address + 2, two);<br \/>\nEEPROM.write(address + 3, one);<br \/>\n}<\/p>\n<p>\/\/*****************************************************************************<br \/>\n\/\/ Subroutine read the EEPROM<br \/>\n\/\/*****************************************************************************<\/p>\n<p>long EEPROMReadlong(long address)<br \/>\n{<br \/>\n\/\/Read the 4 bytes from the eeprom memory.<br \/>\nlong four = EEPROM.read(address);<br \/>\nlong three = EEPROM.read(address + 1);<br \/>\nlong two = EEPROM.read(address + 2);<br \/>\nlong one = EEPROM.read(address + 3);<\/p>\n<p>\/\/Return the recomposed long by using bitshift.<br \/>\nreturn ((four &lt;&lt; 0) &amp; 0xFF) + ((three &lt;&lt; 8) &amp; 0xFFFF) + ((two &lt;&lt; 16) &amp; 0xFFFFFF) + ((one &lt;&lt; 24) &amp; 0xFFFFFFFF);<br \/>\n}<\/p>\n<p>\/\/*****************************************************************************<br \/>\nvoid displaySettings(){<br \/>\n\/\/*****************************************************************************<br \/>\nlcd.clear();<br \/>\nlcd.setCursor(0,0);<br \/>\nlcd.print (&#8220;swrA=&#8221;);<br \/>\nlcd.setCursor (5 , 0);<br \/>\nlcd.print(swralarm , 1);<br \/>\nlcd.setCursor (10 , 0);<br \/>\nlcd.print (&#8220;tA=&#8221;);<br \/>\nlcd.setCursor (13 , 0);<br \/>\nlcd.print(tempalarmOn);<br \/>\nlcd.setCursor (0 , 1);<br \/>\nlcd.print (&#8220;F&#8221;);<br \/>\nlcd.setCursor (2 , 1);<br \/>\nlcd.print (coupFWD , 1 );<br \/>\nlcd.setCursor (7 , 1);<br \/>\nlcd.print (attFWD , 1);<br \/>\nlcd.setCursor (10 , 1);<br \/>\nlcd.print ((uDBfwd * 1000) , 0);<br \/>\nlcd.print (&#8220;mV&#8221;);<br \/>\nlcd.setCursor (15 , 1);<br \/>\nlcd.print (ufwd , 3);<br \/>\nlcd.setCursor (0 , 2);<br \/>\nlcd.print (&#8220;R&#8221;);<br \/>\nlcd.setCursor (2 , 2);<br \/>\nlcd.print (coupREF , 1 );<br \/>\nlcd.setCursor (7 , 2);<br \/>\nlcd.print (attREF , 1);<br \/>\nlcd.setCursor (10 , 2);<br \/>\nlcd.print ((uDBref * 1000) , 0);<br \/>\nlcd.print (&#8220;mV&#8221;);<br \/>\nlcd.setCursor (15 , 2);<br \/>\nlcd.print (uref , 3);<br \/>\nlcd.setCursor(0,3);<br \/>\nlcd.print(call);<br \/>\nlcd.setCursor(7,3);<br \/>\nlcd.print(&#8221; Press Reset!&#8221;);<br \/>\nwhile(1) { } \/\/endless loop to stop<br \/>\n};<\/p>\n<p><!--nextpage--><\/p>\n<h2>SWR Power meter with protection for Solid State PA<\/h2>\n<p>Also usable as a dual mW meter with a few changes in the software.<\/p>\n<h4>Introduction<\/h4>\n<p>This SWR Power meter was my first own project\u00a0 for the Arduino. I started it from scratch and decided to build an accurate Power meter for the directional coupler described <a title=\"Coupler for 1-30 MHz\" href=\"https:\/\/pa3csg.nl\/?page_id=55\" target=\"_self\" rel=\"noopener noreferrer\">HERE<\/a>. This meter had to be suitable for a large power range. I used my experience from early days with the AD8307 log detector chip from Analog Devices. <a title=\"mW meter\" href=\"https:\/\/pa3csg.nl\/?page_id=14\" target=\"_self\" rel=\"noopener noreferrer\">(HERE)<\/a> This chip is suitable up to 500 MHz and has a very high dynamic range. It can measure almost from almost the noisefloor (-74dBm or even lower)\u00a0 up to 10 mW where the upper range is less accurate, so we better stay away from that. The measurement accuracy is excellent. With a dynamic range of 88dB the accuracy is 1dB according to the data sheet. This accuracy is also valid for the SWR-Power meter if your calibration is accurate. But even without calibration this power \/ SWR meter is better than most of the commercial available SWR Power meters.<\/p>\n<p>The first steps showed very nice results and I build a number of SWR-Power meters to replace the older gear in my shack. They worked very well and I am still using them. In a conversation with Wim PA0WMX he suggested a few protection circuit features to be build in as well. More and more the idea developed and it now has SWR protection, temperature protection and a blower speed control. There are also 2 current protection circuits and a voltage protection. This is the maximum I could use with my programming skills, there were no pins left on the Atmega328.<\/p>\n<p>Wim PA0WMX needed some boards and so did I, so we decided to design\u00a0 a board and we had it made professionally. See some pictures below.<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2039_klein.jpg\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-593\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2039_klein.jpg\" width=\"1118\" height=\"459\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2039_klein.jpg 1118w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2039_klein-300x123.jpg 300w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2039_klein-1024x420.jpg 1024w\" sizes=\"(max-width: 1118px) 100vw, 1118px\" \/><\/a><\/p>\n<p>The first line of the display shows the forward power and the temperature<\/p>\n<p>The second line shows the reflected power and the calculated SWR<\/p>\n<p>The third line shows the mode and the full scale power of the bar graph which is on the fourth line.<\/p>\n<h4>Short description of the buttons<\/h4>\n<p>The unit has 3 buttons:<\/p>\n<p>#1. is the reset button in case of an alarm, you can only reset the protection circuitry with this button. Alarms are set at SWR 1:2 and temperature at 45 degrees C. You can change these values in the software.\u00a0 If you push this button it will pause for few seconds and than the greeting screen will show for 1 second.<\/p>\n<p>The greeting screen:<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2050_klein-1.jpg\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-729\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2050_klein-1.jpg\" width=\"928\" height=\"414\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2050_klein-1.jpg 928w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2050_klein-1-300x134.jpg 300w\" sizes=\"(max-width: 928px) 100vw, 928px\" \/><\/a><\/p>\n<p>#2. Is the Mode button. With this button you will change from Forward ( the third line will show FWD), Second mode is Reflected (REF) and Third mode is Temp. In FWD mode the bargraph will display FWD power, In REF mode the bar graph will display REF power, in third mode the bar graph will show Temperature from 0-100 degrees.<\/p>\n<h4>The Forward mode<\/h4>\n<p>The bar graph displays the forward power. With the &#8220;Full Scalle Power&#8221; button you can set the full scale power of the bar graph. Mode and full scale power are shown on the third line of the display.<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2052_klein.jpg\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-599\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2052_klein.jpg\" width=\"984\" height=\"702\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2052_klein.jpg 984w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2052_klein-300x214.jpg 300w\" sizes=\"(max-width: 984px) 100vw, 984px\" \/><\/a><\/p>\n<h4>The Reflected mode<\/h4>\n<p>This mode shows the reflected power on the bar graph. Again the full scale power can be set for this mode with the &#8220;Full scale power&#8221; This allows you to align an antenna very accurate for SWR.<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2048_klein.jpg\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-596\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2048_klein.jpg\" width=\"905\" height=\"376\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2048_klein.jpg 905w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2048_klein-300x125.jpg 300w\" sizes=\"(max-width: 905px) 100vw, 905px\" \/><\/a><\/p>\n<h4>The temperature mode<\/h4>\n<p>Now the bar graph displays the temperature. Note that the full scale temperature is fixed to 100 degrees. In this mode you can watch the temperature rise of your PA.<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2049_klein.jpg\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-597\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2049_klein.jpg\" width=\"924\" height=\"359\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2049_klein.jpg 924w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2049_klein-300x117.jpg 300w\" sizes=\"(max-width: 924px) 100vw, 924px\" \/><\/a><\/p>\n<p>#3. This button is the the &#8220;full scale power button&#8221; It will display the full scale power of the bar graph on the third line to the right. With this button you can scale down (ONLY DOWN) It will automatically scale up when you reach the limit of the bar graph. So when you produce 105W it will go to the 200W full scale position. If you lower your power to say 90W you will have to scale it manually\u00a0 down to 100W full scale.<\/p>\n<p>The 2 leds display alarm for SWR and temp. They will light in case of high SWR or temperature. The display with show a warning also. This warning will only go away by resetting the PWR SWR meter with the reset button. If for example the temperature has not gone down it will produce immediately another alarm.\u00a0 If the level\u00a0 has gone down below the alarm level, it will work again as a protection circuit.<\/p>\n<p>In case of an alarm Pin #3 of theP10 connector will go high as well, you will have to put a 560 Ohm resistor in series with this pin. (It will be on the board for the next version). For now it is not short circuit protected! This alarm pin can switch off your amp or transceiver PTT or whatever. So whenever there is something wrong with your amplifier or your antenna it will automatically switch your station to standby preventing further damage.<\/p>\n<p>The blower control is on Connector P11 pin #3. You need to insert few more components to get a blower running, see schematic. The temperature where the blower will start running and for what percentage is set in the software. This will vary for different blowers. In fact it is a PWM control.<\/p>\n<h4>\u00a0Schematic and board<\/h4>\n<p>Below is the schematic of the PWR-SWR meter and protection. It is rather small but you can download a PDF <a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2015\/04\/AD8307-PWR-meter.pdf\">AD8307-PWR-meter<\/a><\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/AD8307-PWR-meter-1.jpg\" data-rel=\"lightbox-image-5\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-721\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/AD8307-PWR-meter-1.jpg\" width=\"1005\" height=\"700\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/AD8307-PWR-meter-1.jpg 1005w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/AD8307-PWR-meter-1-300x209.jpg 300w\" sizes=\"(max-width: 1005px) 100vw, 1005px\" \/><\/a><\/p>\n<p>In Europe most hams have some amount of grey hair. This is clearly visible on the flea market \ud83d\ude42<\/p>\n<p>For this reason I decided that the board had to be lumped components. But prices of the AD8307 made me decide different. For a DIL8 $15 was normal price, for the SMD version it was only $3 (prices January 2015). The AD8307 in SMD is not very small so with fine solder point and some 0.4mm solder wire it should be possible. Attenuator network was also done in SMD1206 components (except the 2W resistors).<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2037_klein.jpg\" data-rel=\"lightbox-image-6\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-592\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2037_klein.jpg\" width=\"970\" height=\"438\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2037_klein.jpg 970w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2037_klein-300x135.jpg 300w\" sizes=\"(max-width: 970px) 100vw, 970px\" \/><\/a><\/p>\n<p>Below is a close up of the SMD section<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2036_klein.jpg\" data-rel=\"lightbox-image-7\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-591\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2036_klein.jpg\" width=\"604\" height=\"626\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2036_klein.jpg 604w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2036_klein-289x300.jpg 289w\" sizes=\"(max-width: 604px) 100vw, 604px\" \/><\/a><\/p>\n<p>The LCD display can be mounted on the top of the board. But you can also make the wires a bit longer and mount it in a different way.<\/p>\n<p>The top view of the board:<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2041_klein-1.jpg\" data-rel=\"lightbox-image-8\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-725\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2041_klein-1.jpg\" width=\"1080\" height=\"438\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2041_klein-1.jpg 1080w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2041_klein-1-300x122.jpg 300w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/DSC_2041_klein-1-1024x415.jpg 1024w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/a><\/p>\n<p>Left of the LCD display there are 2 holes. In combination with the left mounting holes a small board with an AD8313 and a small software adaptation the Power SWR meter will be usable up to 2.5 GHz including the 432, 1296 and 2320 MHz frequencies.<\/p>\n<p>The Power SWR meter works very well in combination with the couplers published on the page.<\/p>\n<p>A high power version can be found RF-engineering section, this will work up to 30 MHz<\/p>\n<p>A slightly different version will handle 1kW but will go from 1.5 to 70 MHz. Or from 1.5 to 80 MHz.<\/p>\n<p>There is not much test equipment needed. A DVM should do the job. If you have excess to a signal generator that would make things more accurate.<\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-top.jpg\" data-rel=\"lightbox-image-9\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-610\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-top.jpg\" width=\"4983\" height=\"2205\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-top.jpg 4983w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-top-300x133.jpg 300w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-top-1024x453.jpg 1024w\" sizes=\"(max-width: 4983px) 100vw, 4983px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-bot-1.jpg\" data-rel=\"lightbox-image-10\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" class=\"alignnone size-full wp-image-739\" title=\"\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-bot-1.jpg\" width=\"4477\" height=\"2068\" srcset=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-bot-1.jpg 4477w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-bot-1-300x139.jpg 300w, https:\/\/pa3csg.nl\/wp-content\/uploads\/2016\/06\/pcb-pwr-swr-meter-bot-1-1024x473.jpg 1024w\" sizes=\"(max-width: 4477px) 100vw, 4477px\" \/><\/a><\/p>\n<p>Please find the code below! Note that I am not a professional programmer and not even a skilled programmer. If you discover any bugs errors or make improvements please let me know!<\/p>\n<div class=\"line number1 index0 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">\/*<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">Copyright Geert Stams PA3CSG<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">All trademarks referred to in source code and documentation are copyright their respective owners.<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">This program is free software: you can redistribute it and\/or modify<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">it under the terms of the GNU General Public License as published by<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">the Free Software Foundation, either version 3 of the License, or<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">(at your option) any later version.<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">This program is distributed in the hope that it will be useful,<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">but WITHOUT ANY WARRANTY; without even the implied warranty of<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\u00a0 See the<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">GNU General Public License for more details.<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">You should have received a copy of the GNU General Public License<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">along with this program.\u00a0 If not, see &lt;<\/code><code class=\"xml keyword\">http:<\/code><code class=\"xml plain\">\/\/www.gnu.org\/licenses\/&gt;.<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">************************************************************************<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">PWR SWR meter &amp; TEMP PA protection + Blower PWM Control<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">PA3CSG January 2015 V1.0<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">***********************CHANGELOG****************************************<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">14 april 2015 added second measurement you can choose one of two measurements<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">20 april 2015 added low level limits for power, noiselevel of ad8307 might cause swr alarm<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><\/div>\n<div class=\"line number29 index28 alt2\"><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">************************************************************************ <\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"xml plain\">*\/<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"xml plain\">\/\/ include the library code:<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"xml plain\">#include &lt;<\/code><code class=\"xml keyword\">LiquidCrystal.h<\/code><code class=\"xml plain\">&gt;<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"xml plain\">#include &lt;<\/code><code class=\"xml keyword\">EEPROM.h<\/code><code class=\"xml plain\">&gt;<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"xml plain\">#include &lt;<\/code><code class=\"xml keyword\">LcdBarGraph.h<\/code><code class=\"xml plain\">&gt;<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><\/div>\n<div class=\"line number38 index37 alt1\"><\/div>\n<div class=\"line number39 index38 alt2\"><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"xml plain\">\/\/ initialize the library with the numbers of the interface pins<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"xml plain\">LiquidCrystal lcd(12, 11, 5, 4, 3, 2);<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"xml plain\">\/\/ -- creating bargraph instance, format is (&amp;lcd, lcdNumCols, start X, start Y). So (&amp;lcd, 16, 0, 1) would set the bargraph length to 16 columns and start the bargraph at column 0 on row 1.<\/code><\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"xml plain\">LcdBarGraph lbg(&amp;lcd, 20, 0, 3); <\/code><\/div>\n<div class=\"line number44 index43 alt1\"><\/div>\n<div class=\"line number45 index44 alt2\"><code class=\"xml plain\">\/\/ variables for input pin and control LED<\/code><\/div>\n<div class=\"line number46 index45 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/variables for the power meter<\/code><\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ For the AD converters<\/code><\/div>\n<div class=\"line number48 index47 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number49 index48 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int analogInputFWD = 0; \/\/input FWD voltage on pin A0<\/code><\/div>\n<div class=\"line number50 index49 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int analogInputREF = 1; \/\/input REF voltage on pin A1<\/code><\/div>\n<div class=\"line number51 index50 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int analogInputTemp = 5; \/\/input from LM35 temp sensor<\/code><\/div>\n<div class=\"line number52 index51 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number53 index52 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/For the alarms<\/code><\/div>\n<div class=\"line number54 index53 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int alarmswr = 7; \/\/SWR alarm on pin 7<\/code><\/div>\n<div class=\"line number55 index54 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int alarmtemp = 1; \/\/Temp warning on pin 1<\/code><\/div>\n<div class=\"line number56 index55 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number57 index56 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number58 index57 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/For the blower control<\/code><\/div>\n<div class=\"line number59 index58 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int fan = 6; \/\/ the pin where fan is<\/code><\/div>\n<div class=\"line number60 index59 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int tempMin = 25; \/\/ the temperature to start the fan<\/code><\/div>\n<div class=\"line number61 index60 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int tempMax = 50; \/\/ the maximum temperature when fan is at 100%<\/code><\/div>\n<div class=\"line number62 index61 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int fanSpeed;<\/code><\/div>\n<div class=\"line number63 index62 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int eff;<\/code><\/div>\n<div class=\"line number64 index63 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number65 index64 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/float variables<\/code><\/div>\n<div class=\"line number66 index65 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float vout2 = 0.0;<\/code><\/div>\n<div class=\"line number67 index66 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float vin2 = 0.0;<\/code><\/div>\n<div class=\"line number68 index67 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float vout3 = 0.0;<\/code><\/div>\n<div class=\"line number69 index68 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float vin3 = 0.0;<\/code><\/div>\n<div class=\"line number70 index69 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float out2dbm = 0.0;<\/code><\/div>\n<div class=\"line number71 index70 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float out3dbm = 0.0;<\/code><\/div>\n<div class=\"line number72 index71 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float RL = 0.0;<\/code><\/div>\n<div class=\"line number73 index72 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float coupFWD = 60.4; \/\/coupling factor and attenuators value set before ad8307 mW meter input in dB for FWD<\/code><\/div>\n<div class=\"line number74 index73 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float coupREF = 60.4; \/\/coupling factor and attenuators value set before ad8307 mW meter input in dB for REF<\/code><\/div>\n<div class=\"line number75 index74 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float wattfwd = 0.0;<\/code><\/div>\n<div class=\"line number76 index75 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float wattref = 0.0;<\/code><\/div>\n<div class=\"line number77 index76 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float swr = 0.0;<\/code><\/div>\n<div class=\"line number78 index77 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float temp = 0.0;<\/code><\/div>\n<div class=\"line number79 index78 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number80 index79 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number81 index80 alt2\"><code class=\"xml plain\">\/\/ variable to store the value <\/code><\/div>\n<div class=\"line number82 index81 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int counterPwr = EEPROM.read(0);<\/code><\/div>\n<div class=\"line number83 index82 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int counteroldPwr = counterPwr;<\/code><\/div>\n<div class=\"line number84 index83 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int counterMode = 0;<\/code><\/div>\n<div class=\"line number85 index84 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int counteroldMode = counterMode;<\/code><\/div>\n<div class=\"line number86 index85 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int value2 = 0;<\/code><\/div>\n<div class=\"line number87 index86 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int value3 = 0;<\/code><\/div>\n<div class=\"line number88 index87 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int value2a = 0;<\/code><\/div>\n<div class=\"line number89 index88 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int value3a = 0;<\/code><\/div>\n<div class=\"line number90 index89 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int updater = 0; <\/code><\/div>\n<div class=\"line number91 index90 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int incrementStatePwr = 0; \/\/will read increment for Power button<\/code><\/div>\n<div class=\"line number92 index91 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int lastIncrementStatePwr = 0;<\/code><\/div>\n<div class=\"line number93 index92 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int incrementStateMode = 0; \/\/will read increment for Mode button<\/code><\/div>\n<div class=\"line number94 index93 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">int lastIncrementStateMode = 0;<\/code><\/div>\n<div class=\"line number95 index94 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">byte incrementButtonPwr = 8; \/\/ the pin that the pushbutton for the power selection is attached to<\/code><\/div>\n<div class=\"line number96 index95 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">byte incrementButtonMode = 13; \/\/ the pin that the pushbutton for the power selection is attached to<\/code><\/div>\n<div class=\"line number97 index96 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number98 index97 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number99 index98 alt2\"><code class=\"xml plain\">void setup(){<\/code><\/div>\n<div class=\"line number100 index99 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number101 index100 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ declaration of pin modes<\/code><\/div>\n<div class=\"line number102 index101 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">analogReference(EXTERNAL); \/\/sets reference to external connected reference 2,5V LT1009 reference<\/code><\/div>\n<div class=\"line number103 index102 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number104 index103 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ For the AD converters<\/code><\/div>\n<div class=\"line number105 index104 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">pinMode (analogInputFWD, INPUT); \/\/input from AD8307<\/code><\/div>\n<div class=\"line number106 index105 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">pinMode (analogInputREF, INPUT); \/\/input from AD8307<\/code><\/div>\n<div class=\"line number107 index106 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">pinMode (analogInputTemp, INPUT); \/\/input from temp sensor LM35<\/code><\/div>\n<div class=\"line number108 index107 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number109 index108 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number110 index109 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/For the pussh buttons<\/code><\/div>\n<div class=\"line number111 index110 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">pinMode(incrementButtonPwr, INPUT); \/\/ initialize the button pin\u00a0 for the Pwr switch as an input:<\/code><\/div>\n<div class=\"line number112 index111 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">pinMode(incrementButtonMode, INPUT); \/\/ initialize the button pin\u00a0 for the Mode switch as an input:<\/code><\/div>\n<div class=\"line number113 index112 alt2\"><\/div>\n<div class=\"line number114 index113 alt1\"><code class=\"xml plain\">\/\/for the leds outputs<\/code><\/div>\n<div class=\"line number115 index114 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">pinMode (alarmswr, OUTPUT); \/\/SWR alarm on pin 7<\/code><\/div>\n<div class=\"line number116 index115 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">pinMode (alarmtemp, OUTPUT); \/\/Temp warning on pin 1<\/code><\/div>\n<div class=\"line number117 index116 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number118 index117 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/setup alarms<\/code><\/div>\n<div class=\"line number119 index118 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">digitalWrite(alarmswr, LOW);<\/code><\/div>\n<div class=\"line number120 index119 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">digitalWrite(alarmtemp, LOW);<\/code><\/div>\n<div class=\"line number121 index120 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number122 index121 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number123 index122 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/for the PWM control of the blower<\/code><\/div>\n<div class=\"line number124 index123 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">pinMode(fan, OUTPUT);<\/code><\/div>\n<div class=\"line number125 index124 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number126 index125 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ set up the LCD's number of columns and rows:<\/code><\/div>\n<div class=\"line number127 index126 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.begin(20, 4);<\/code><\/div>\n<div class=\"line number128 index127 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number129 index128 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ A little bit of PR<\/code><\/div>\n<div class=\"line number130 index129 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0,0);<\/code><\/div>\n<div class=\"line number131 index130 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"SWR-PWR &amp; protection\");<\/code><\/div>\n<div class=\"line number132 index131 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(7,1);<\/code><\/div>\n<div class=\"line number133 index132 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"PA3CSG\");<\/code><\/div>\n<div class=\"line number134 index133 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(6,2);<\/code><\/div>\n<div class=\"line number135 index134 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"Welcome\");<\/code><\/div>\n<div class=\"line number136 index135 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(5,3);<\/code><\/div>\n<div class=\"line number137 index136 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"Have fun!\");<\/code><\/div>\n<div class=\"line number138 index137 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1000);<\/code><\/div>\n<div class=\"line number139 index138 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.clear();<\/code><\/div>\n<div class=\"line number140 index139 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number141 index140 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/print things on the lcd that donnot change anymore<\/code><\/div>\n<div class=\"line number142 index141 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number143 index142 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/first line<\/code><\/div>\n<div class=\"line number144 index143 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 0);<\/code><\/div>\n<div class=\"line number145 index144 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"FWD=\");<\/code><\/div>\n<div class=\"line number146 index145 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(9, 0);<\/code><\/div>\n<div class=\"line number147 index146 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"W\");<\/code><\/div>\n<div class=\"line number148 index147 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(11, 0);<\/code><\/div>\n<div class=\"line number149 index148 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"T =\");<\/code><\/div>\n<div class=\"line number150 index149 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(18, 0);<\/code><\/div>\n<div class=\"line number151 index150 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print((char)223);<\/code><\/div>\n<div class=\"line number152 index151 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"C\");<\/code><\/div>\n<div class=\"line number153 index152 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number154 index153 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/second line<\/code><\/div>\n<div class=\"line number155 index154 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 1);<\/code><\/div>\n<div class=\"line number156 index155 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"REF=\");<\/code><\/div>\n<div class=\"line number157 index156 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(9, 1);<\/code><\/div>\n<div class=\"line number158 index157 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"W\");<\/code><\/div>\n<div class=\"line number159 index158 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(11,1);<\/code><\/div>\n<div class=\"line number160 index159 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"SWR=\");<\/code><\/div>\n<div class=\"line number161 index160 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number162 index161 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number163 index162 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/third line is done later<\/code><\/div>\n<div class=\"line number164 index163 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number165 index164 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number166 index165 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/fourth line is bargraph<\/code><\/div>\n<div class=\"line number167 index166 alt2\"><code class=\"xml plain\">} <\/code><\/div>\n<div class=\"line number168 index167 alt1\"><\/div>\n<div class=\"line number169 index168 alt2\"><\/div>\n<div class=\"line number170 index169 alt1\"><\/div>\n<div class=\"line number171 index170 alt2\"><code class=\"xml plain\">\/\/ main calculation routine starts here<\/code><\/div>\n<div class=\"line number172 index171 alt1\"><\/div>\n<div class=\"line number173 index172 alt2\"><code class=\"xml plain\">void loop() {<\/code><\/div>\n<div class=\"line number174 index173 alt1\"><\/div>\n<div class=\"line number175 index174 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number176 index175 alt1\"><code class=\"xml plain\">\/\/code for the Power SWR meter\u00a0 <\/code><\/div>\n<div class=\"line number177 index176 alt2\"><\/div>\n<div class=\"line number178 index177 alt1\"><code class=\"xml plain\">\/\/ resets value 2 &amp; 3<\/code><\/div>\n<div class=\"line number179 index178 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number180 index179 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">value2 = 0;<\/code><\/div>\n<div class=\"line number181 index180 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">value3 = 0;<\/code><\/div>\n<div class=\"line number182 index181 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number183 index182 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number184 index183 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ read the value on analog input 15 times and determine max value<\/code><\/div>\n<div class=\"line number185 index184 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">for(int i = 0; i &lt;=15; i++) {<\/code><\/div>\n<div class=\"line number186 index185 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">value2a = analogRead(analogInputFWD);<\/code><\/div>\n<div class=\"line number187 index186 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">value3a = analogRead(analogInputREF);<\/code><\/div>\n<div class=\"line number188 index187 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">value2 = max(value2a , value2);<\/code><\/div>\n<div class=\"line number189 index188 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">value3 = max(value3a , value3);<\/code><\/div>\n<div class=\"line number190 index189 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">delay(5);<\/code><\/div>\n<div class=\"line number191 index190 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">} <\/code><\/div>\n<div class=\"line number192 index191 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number193 index192 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">vout2 = (value2 * 2.5) \/ 1024.0; \/\/FWD<\/code><\/div>\n<div class=\"line number194 index193 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">vout3 = (value3 * 2.5) \/ 1024.0; \/\/REF<\/code><\/div>\n<div class=\"line number195 index194 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number196 index195 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/Conversion to DBM the 0.1851 is the output voltage from the AD8307 with -20dbm applied to the input of the chip.<\/code><\/div>\n<div class=\"line number197 index196 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/This means that with the 30 dB attenuators on the PCB you have to apply +10dBm at the input BNC connector.<\/code><\/div>\n<div class=\"line number198 index197 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/This voltage seems to be more or less the same for most AD8307 if you have no means of measuring leave it like this.<\/code><\/div>\n<div class=\"line number199 index198 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number200 index199 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/For the FWD measurement<\/code><\/div>\n<div class=\"line number201 index200 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number202 index201 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number203 index202 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (vout2 &gt;= 1.851) <\/code><\/div>\n<div class=\"line number204 index203 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number205 index204 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out2dbm = ((vout2 - 1.851) \/ 0.025); <\/code><\/div>\n<div class=\"line number206 index205 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out2dbm = (-20 + out2dbm);<\/code><\/div>\n<div class=\"line number207 index206 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number208 index207 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number209 index208 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (vout2 &lt; <\/code><code class=\"xml keyword\">1.851<\/code><code class=\"xml plain\">) <\/code><\/div>\n<div class=\"line number210 index209 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number211 index210 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out2dbm = ((1.851 - vout2) \/ 0.025);<\/code><\/div>\n<div class=\"line number212 index211 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out2dbm = (-20 - out2dbm);<\/code><\/div>\n<div class=\"line number213 index212 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number214 index213 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number215 index214 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number216 index215 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/For the REF measurement<\/code><\/div>\n<div class=\"line number217 index216 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (vout3 &lt; 1.855) <\/code><\/div>\n<div class=\"line number218 index217 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number219 index218 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out3dbm = ((1.855 - vout3) \/ 0.025);<\/code><\/div>\n<div class=\"line number220 index219 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out3dbm = (-20 - out3dbm);<\/code><\/div>\n<div class=\"line number221 index220 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number222 index221 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number223 index222 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (vout3 &gt;= 1.855) <\/code><\/div>\n<div class=\"line number224 index223 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number225 index224 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out3dbm = ((vout3 - 1.855) \/ 0.025);<\/code><\/div>\n<div class=\"line number226 index225 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out3dbm = (-20 + out3dbm);<\/code><\/div>\n<div class=\"line number227 index226 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">} <\/code><\/div>\n<div class=\"line number228 index227 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number229 index228 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number230 index229 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out2dbm = (out2dbm + coupFWD); \/\/FWD<\/code><\/div>\n<div class=\"line number231 index230 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">out3dbm = (out3dbm + coupREF); \/\/REF<\/code><\/div>\n<div class=\"line number232 index231 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number233 index232 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number234 index233 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">\/*<\/code><\/div>\n<div class=\"line number235 index234 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/converts the reading to dbm<\/code><\/div>\n<div class=\"line number236 index235 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">out2dbm = vout2-0.830;\u00a0 \/\/set output of ad8307 to 0,830V with -60dbm (at input ad8307) applied FWD<\/code><\/div>\n<div class=\"line number237 index236 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">out3dbm = vout3-0.830;\u00a0 \/\/set output of ad8307 to 0,830V with -60dbm (at input ad8307) applied REF<\/code><\/div>\n<div class=\"line number238 index237 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">out2dbm = (out2dbm\/0.025)-60+coupFWD; \/\/FWD<\/code><\/div>\n<div class=\"line number239 index238 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">out3dbm = (out3dbm\/0.025)-60+coupREF; \/\/REF<\/code><\/div>\n<div class=\"line number240 index239 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number241 index240 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">*\/<\/code><\/div>\n<div class=\"line number242 index241 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number243 index242 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/calculates return loss and sets limit to 0<\/code><\/div>\n<div class=\"line number244 index243 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">RL = out2dbm-out3dbm;<\/code><\/div>\n<div class=\"line number245 index244 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (RL &lt; <\/code><code class=\"xml keyword\">2<\/code><code class=\"xml plain\">) {<\/code><\/div>\n<div class=\"line number246 index245 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">RL<\/code><code class=\"xml plain\">=<\/code><code class=\"xml string\">0<\/code><code class=\"xml plain\">;<\/code><\/div>\n<div class=\"line number247 index246 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number248 index247 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number249 index248 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/sets level for the SWR protection and turns a led on pin 7 on for alarm<\/code><\/div>\n<div class=\"line number250 index249 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/if RL &lt;10 (SWR 1 : 2) the led will light<\/code><\/div>\n<div class=\"line number251 index250 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number252 index251 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (out2dbm &lt;=20 &amp;&amp; out3dbm &lt;= 20) {<\/code><\/div>\n<div class=\"line number253 index252 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">RL<\/code> <code class=\"xml plain\">= <\/code><code class=\"xml string\">0<\/code><code class=\"xml plain\">;<\/code><\/div>\n<div class=\"line number254 index253 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number255 index254 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number256 index255 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number257 index256 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/sets level for the SWR protection and turns a led on pin 7 on for alarm<\/code><\/div>\n<div class=\"line number258 index257 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/if RL &lt;10 (SWR 1 : 2) the led will light<\/code><\/div>\n<div class=\"line number259 index258 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (RL &lt; 10) <\/code><\/div>\n<div class=\"line number260 index259 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (RL &gt; 2)\u00a0 {<\/code><\/div>\n<div class=\"line number261 index260 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">digitalWrite(alarmswr, HIGH);<\/code><\/div>\n<div class=\"line number262 index261 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number263 index262 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ If used to switch off a solid state PA or similar uncomment the lines below.<\/code><\/div>\n<div class=\"line number264 index263 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number265 index264 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.clear();<\/code><\/div>\n<div class=\"line number266 index265 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.setCursor(4,0);<\/code><\/div>\n<div class=\"line number267 index266 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.print(\"***ALARM***\");<\/code><\/div>\n<div class=\"line number268 index267 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.setCursor(3,2);<\/code><\/div>\n<div class=\"line number269 index268 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.print(\"*****SWR*****\");<\/code><\/div>\n<div class=\"line number270 index269 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/while(1) { } \/\/endless loop to stop<\/code><\/div>\n<div class=\"line number271 index270 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number272 index271 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number273 index272 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number274 index273 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/calculates Pfwd in watts<\/code><\/div>\n<div class=\"line number275 index274 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float wattfwd = pow(10 , (out2dbm\/10));<\/code><\/div>\n<div class=\"line number276 index275 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">wattfwd = wattfwd\/1000;<\/code><\/div>\n<div class=\"line number277 index276 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number278 index277 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/calculates Pref in watts<\/code><\/div>\n<div class=\"line number279 index278 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float wattref = pow(10 , (out3dbm\/10));<\/code><\/div>\n<div class=\"line number280 index279 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">wattref = wattref\/1000;<\/code><\/div>\n<div class=\"line number281 index280 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number282 index281 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/Reading and counting the button for Pwr<\/code><\/div>\n<div class=\"line number283 index282 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number284 index283 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">incrementStatePwr = digitalRead(incrementButtonPwr); \/\/read the increment button state<\/code><\/div>\n<div class=\"line number285 index284 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if(incrementStatePwr != lastIncrementStatePwr) \/\/compare increment button state to its last state<\/code><\/div>\n<div class=\"line number286 index285 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number287 index286 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if(incrementStatePwr == LOW)\/\/increment button is pressed<\/code><\/div>\n<div class=\"line number288 index287 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number289 index288 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = counterPwr + 1; \/\/increment the counter<\/code><\/div>\n<div class=\"line number290 index289 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">delay(10); \/\/debounce delay<\/code><\/div>\n<div class=\"line number291 index290 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number292 index291 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number293 index292 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lastIncrementStatePwr = incrementStatePwr;<\/code><\/div>\n<div class=\"line number294 index293 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number295 index294 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number296 index295 alt1\"><code class=\"xml plain\">\/\/Reading and counting the button for Mode<\/code><\/div>\n<div class=\"line number297 index296 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number298 index297 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">incrementStateMode = digitalRead(incrementButtonMode); \/\/read the increment button state<\/code><\/div>\n<div class=\"line number299 index298 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if(incrementStateMode != lastIncrementStateMode) \/\/compare increment button state to its last state<\/code><\/div>\n<div class=\"line number300 index299 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number301 index300 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if(incrementStateMode == LOW)\/\/increment button is pressed<\/code><\/div>\n<div class=\"line number302 index301 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number303 index302 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterMode = counterMode + 1; \/\/increment the counter<\/code><\/div>\n<div class=\"line number304 index303 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">delay(10); \/\/debounce delay<\/code><\/div>\n<div class=\"line number305 index304 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number306 index305 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number307 index306 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lastIncrementStateMode = incrementStateMode;<\/code><\/div>\n<div class=\"line number308 index307 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number309 index308 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number310 index309 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/limits the the counterPwr to 9 counts and resets to 0<\/code><\/div>\n<div class=\"line number311 index310 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number312 index311 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if(counterPwr &gt; 8) <\/code><\/div>\n<div class=\"line number313 index312 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{ <\/code><\/div>\n<div class=\"line number314 index313 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 0;<\/code><\/div>\n<div class=\"line number315 index314 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number316 index315 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/limits the the counterMode to 6 counts and resets to 0<\/code><\/div>\n<div class=\"line number317 index316 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number318 index317 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if(counterMode &gt; 2) <\/code><\/div>\n<div class=\"line number319 index318 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{ <\/code><\/div>\n<div class=\"line number320 index319 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterMode = 0;<\/code><\/div>\n<div class=\"line number321 index320 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number322 index321 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number323 index322 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number324 index323 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/routine to semi automatically set the FS level of the wattmeter for fwd pwr in countermode 0. It will scale up but NOT down<\/code><\/div>\n<div class=\"line number325 index324 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number326 index325 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterMode == 0)\u00a0 {<\/code><\/div>\n<div class=\"line number327 index326 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number328 index327 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 10 )<\/code><\/div>\n<div class=\"line number329 index328 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==8)<\/code><\/div>\n<div class=\"line number330 index329 alt1\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number331 index330 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 7;<\/code><\/div>\n<div class=\"line number332 index331 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number333 index332 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number334 index333 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 20 )<\/code><\/div>\n<div class=\"line number335 index334 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==7)<\/code><\/div>\n<div class=\"line number336 index335 alt1\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number337 index336 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 6;<\/code><\/div>\n<div class=\"line number338 index337 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number339 index338 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number340 index339 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 50 )<\/code><\/div>\n<div class=\"line number341 index340 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==6)<\/code><\/div>\n<div class=\"line number342 index341 alt1\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number343 index342 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 5;<\/code><\/div>\n<div class=\"line number344 index343 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number345 index344 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number346 index345 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 100 )<\/code><\/div>\n<div class=\"line number347 index346 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==5)<\/code><\/div>\n<div class=\"line number348 index347 alt1\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number349 index348 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 4;<\/code><\/div>\n<div class=\"line number350 index349 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number351 index350 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number352 index351 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 200 )<\/code><\/div>\n<div class=\"line number353 index352 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==4)<\/code><\/div>\n<div class=\"line number354 index353 alt1\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number355 index354 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr= 3;<\/code><\/div>\n<div class=\"line number356 index355 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number357 index356 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number358 index357 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 500 )<\/code><\/div>\n<div class=\"line number359 index358 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==3)<\/code><\/div>\n<div class=\"line number360 index359 alt1\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number361 index360 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 2;<\/code><\/div>\n<div class=\"line number362 index361 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number363 index362 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number364 index363 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 1000 )<\/code><\/div>\n<div class=\"line number365 index364 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==2)<\/code><\/div>\n<div class=\"line number366 index365 alt1\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number367 index366 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 1;<\/code><\/div>\n<div class=\"line number368 index367 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number369 index368 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number370 index369 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 2000 )<\/code><\/div>\n<div class=\"line number371 index370 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==1)<\/code><\/div>\n<div class=\"line number372 index371 alt1\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number373 index372 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 0;<\/code><\/div>\n<div class=\"line number374 index373 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number375 index374 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number376 index375 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number377 index376 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number378 index377 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number379 index378 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/routine to semi automatically set the FS level of the wattmeter for ref pwr in countermode 1. It will scale up but NOT down<\/code><\/div>\n<div class=\"line number380 index379 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number381 index380 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterMode == 1)\u00a0 {<\/code><\/div>\n<div class=\"line number382 index381 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number383 index382 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattref &gt; 10 )<\/code><\/div>\n<div class=\"line number384 index383 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==8)<\/code><\/div>\n<div class=\"line number385 index384 alt2\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number386 index385 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 7;<\/code><\/div>\n<div class=\"line number387 index386 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number388 index387 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number389 index388 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattref &gt; 20 )<\/code><\/div>\n<div class=\"line number390 index389 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==7)<\/code><\/div>\n<div class=\"line number391 index390 alt2\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number392 index391 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 6;<\/code><\/div>\n<div class=\"line number393 index392 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number394 index393 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number395 index394 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattref &gt; 50 )<\/code><\/div>\n<div class=\"line number396 index395 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==6)<\/code><\/div>\n<div class=\"line number397 index396 alt2\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number398 index397 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 5;<\/code><\/div>\n<div class=\"line number399 index398 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number400 index399 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number401 index400 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattref &gt; 100 )<\/code><\/div>\n<div class=\"line number402 index401 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==5)<\/code><\/div>\n<div class=\"line number403 index402 alt2\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number404 index403 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 4;<\/code><\/div>\n<div class=\"line number405 index404 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number406 index405 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number407 index406 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattref &gt; 200 )<\/code><\/div>\n<div class=\"line number408 index407 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==4)<\/code><\/div>\n<div class=\"line number409 index408 alt2\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number410 index409 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr= 3;<\/code><\/div>\n<div class=\"line number411 index410 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number412 index411 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number413 index412 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (wattref &gt; 500 )<\/code><\/div>\n<div class=\"line number414 index413 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==3)<\/code><\/div>\n<div class=\"line number415 index414 alt2\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number416 index415 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 2;<\/code><\/div>\n<div class=\"line number417 index416 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number418 index417 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number419 index418 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (wattref &gt; 1000 )<\/code><\/div>\n<div class=\"line number420 index419 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==2)<\/code><\/div>\n<div class=\"line number421 index420 alt2\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number422 index421 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 1;<\/code><\/div>\n<div class=\"line number423 index422 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number424 index423 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number425 index424 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (wattref &gt; 2000 )<\/code><\/div>\n<div class=\"line number426 index425 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterPwr ==1)<\/code><\/div>\n<div class=\"line number427 index426 alt2\"><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number428 index427 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">counterPwr = 0;<\/code><\/div>\n<div class=\"line number429 index428 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number430 index429 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number431 index430 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number432 index431 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number433 index432 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/routine to calculate SWR<\/code><\/div>\n<div class=\"line number434 index433 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">float swr = (1 + sqrt(wattref\/wattfwd))\/(1 - sqrt(wattref\/wattfwd));<\/code><\/div>\n<div class=\"line number435 index434 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">swr = constrain(swr, 0, 20);<\/code><\/div>\n<div class=\"line number436 index435 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if(wattfwd &lt;= 1)<\/code><\/div>\n<div class=\"line number437 index436 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number438 index437 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">swr = 0;<\/code><\/div>\n<div class=\"line number439 index438 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number440 index439 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number441 index440 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/code to read and calculate temp. from sensor<\/code><\/div>\n<div class=\"line number442 index441 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number443 index442 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">temp = analogRead(analogInputTemp); <\/code><\/div>\n<div class=\"line number444 index443 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number445 index444 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">temp = (temp \/ 4.096);<\/code><\/div>\n<div class=\"line number446 index445 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay (5);<\/code><\/div>\n<div class=\"line number447 index446 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number448 index447 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">\/\/routine for the blower PWM control<\/code><\/div>\n<div class=\"line number449 index448 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if(temp &lt; <\/code><code class=\"xml keyword\">tempMin<\/code><code class=\"xml plain\">) { \/\/ if temp is lower than minimum temp<\/code><\/div>\n<div class=\"line number450 index449 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml color1\">fanSpeed<\/code> <code class=\"xml plain\">= <\/code><code class=\"xml string\">0<\/code><code class=\"xml plain\">; \/\/ fan is not spinning<\/code><\/div>\n<div class=\"line number451 index450 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">digitalWrite(fan, LOW);<\/code><\/div>\n<div class=\"line number452 index451 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number453 index452 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if((temp &gt;= tempMin) &amp;&amp; (temp &lt;= tempMax)) { \/\/ if temperature is higher than minimum temp<\/code><\/div>\n<div class=\"line number454 index453 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">fanSpeed = map(temp, tempMin, tempMax, 50, 255); \/\/ the actual speed of fan, set<\/code><\/div>\n<div class=\"line number455 index454 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/values so that fan actually starts spinning<\/code><\/div>\n<div class=\"line number456 index455 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">analogWrite(fan, fanSpeed); \/\/ spin the fan at the fanSpeed speed<\/code><\/div>\n<div class=\"line number457 index456 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number458 index457 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number459 index458 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/sets level for the alarmtemp. protection <\/code><\/div>\n<div class=\"line number460 index459 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number461 index460 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (temp &gt; 45)\u00a0\u00a0 {<\/code><\/div>\n<div class=\"line number462 index461 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number463 index462 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">digitalWrite (alarmtemp, HIGH);<\/code><\/div>\n<div class=\"line number464 index463 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.clear();<\/code><\/div>\n<div class=\"line number465 index464 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.setCursor(4,0);<\/code><\/div>\n<div class=\"line number466 index465 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.print(\"***ALARM***\");<\/code><\/div>\n<div class=\"line number467 index466 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.setCursor(2,2);<\/code><\/div>\n<div class=\"line number468 index467 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.print(\"***TEMPERATURE***\");<\/code><\/div>\n<div class=\"line number469 index468 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/while(1) { } \/\/endless loop to stop<\/code><\/div>\n<div class=\"line number470 index469 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">} <\/code><\/div>\n<div class=\"line number471 index470 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number472 index471 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number473 index472 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">\/\/ print calculated results to lcd display<\/code><\/div>\n<div class=\"line number474 index473 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number475 index474 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ first line of the display<\/code><\/div>\n<div class=\"line number476 index475 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number477 index476 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/clears the space were the fwd power is printed<\/code><\/div>\n<div class=\"line number478 index477 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(4,0);<\/code><\/div>\n<div class=\"line number479 index478 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number480 index479 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number481 index480 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ small routine to place power on the correct place on the lcd<\/code><\/div>\n<div class=\"line number482 index481 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number483 index482 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &gt; 1000) {<\/code><\/div>\n<div class=\"line number484 index483 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(4,0);<\/code><\/div>\n<div class=\"line number485 index484 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number486 index485 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &lt; 1000) {<\/code><\/div>\n<div class=\"line number487 index486 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(5,0);<\/code><\/div>\n<div class=\"line number488 index487 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number489 index488 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &lt; 100) {<\/code><\/div>\n<div class=\"line number490 index489 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(6,0);<\/code><\/div>\n<div class=\"line number491 index490 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number492 index491 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattfwd &lt; 10) {<\/code><\/div>\n<div class=\"line number493 index492 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(7,0);<\/code><\/div>\n<div class=\"line number494 index493 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number495 index494 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number496 index495 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(wattfwd, 0);<\/code><\/div>\n<div class=\"line number497 index496 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number498 index497 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number499 index498 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/clears the space were the temp is printed<\/code><\/div>\n<div class=\"line number500 index499 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15, 0);<\/code><\/div>\n<div class=\"line number501 index500 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number502 index501 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15, 0);<\/code><\/div>\n<div class=\"line number503 index502 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(temp, 0);<\/code><\/div>\n<div class=\"line number504 index503 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number505 index504 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/second line of the display<\/code><\/div>\n<div class=\"line number506 index505 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number507 index506 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/clears the space were the ref power is printed<\/code><\/div>\n<div class=\"line number508 index507 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number509 index508 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(4,1);<\/code><\/div>\n<div class=\"line number510 index509 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number511 index510 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number512 index511 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ small routine to print the REF power on the correct spot<\/code><\/div>\n<div class=\"line number513 index512 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number514 index513 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (wattref &lt; 5000) {<\/code><\/div>\n<div class=\"line number515 index514 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(4,1);<\/code><\/div>\n<div class=\"line number516 index515 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}\u00a0 <\/code><\/div>\n<div class=\"line number517 index516 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number518 index517 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattref &lt; 1000) {<\/code><\/div>\n<div class=\"line number519 index518 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(5,1);<\/code><\/div>\n<div class=\"line number520 index519 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number521 index520 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number522 index521 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattref &lt; 100) {<\/code><\/div>\n<div class=\"line number523 index522 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(6,1);<\/code><\/div>\n<div class=\"line number524 index523 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number525 index524 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number526 index525 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (wattref &lt; 10) {<\/code><\/div>\n<div class=\"line number527 index526 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(7,1);<\/code><\/div>\n<div class=\"line number528 index527 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number529 index528 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number530 index529 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(wattref, 0);<\/code><\/div>\n<div class=\"line number531 index530 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number532 index531 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/clears the space were the swr is printed<\/code><\/div>\n<div class=\"line number533 index532 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number534 index533 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(16,1);<\/code><\/div>\n<div class=\"line number535 index534 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number536 index535 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number537 index536 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(16,1);<\/code><\/div>\n<div class=\"line number538 index537 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(swr , 1);<\/code><\/div>\n<div class=\"line number539 index538 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number540 index539 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number541 index540 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number542 index541 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/third line of the display\u00a0 <\/code><\/div>\n<div class=\"line number543 index542 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number544 index543 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/small routine to print the FS power of the bargraph on the third line of the display. <\/code><\/div>\n<div class=\"line number545 index544 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/This FS power is the same for the Fwd power bargraph.<\/code><\/div>\n<div class=\"line number546 index545 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number547 index546 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number548 index547 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 0 )<\/code><\/div>\n<div class=\"line number549 index548 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number550 index549 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(14,2);<\/code><\/div>\n<div class=\"line number551 index550 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number552 index551 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number553 index552 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"5000\");<\/code><\/div>\n<div class=\"line number554 index553 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number555 index554 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 1 ) {<\/code><\/div>\n<div class=\"line number556 index555 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(14,2);<\/code><\/div>\n<div class=\"line number557 index556 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number558 index557 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number559 index558 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"2000\");<\/code><\/div>\n<div class=\"line number560 index559 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number561 index560 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 2 ) {<\/code><\/div>\n<div class=\"line number562 index561 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number563 index562 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"1000\");<\/code><\/div>\n<div class=\"line number564 index563 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number565 index564 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 3 ) {<\/code><\/div>\n<div class=\"line number566 index565 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number567 index566 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number568 index567 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(16,2);<\/code><\/div>\n<div class=\"line number569 index568 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"500\");<\/code><\/div>\n<div class=\"line number570 index569 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number571 index570 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 4 ) {<\/code><\/div>\n<div class=\"line number572 index571 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number573 index572 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number574 index573 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(16,2);<\/code><\/div>\n<div class=\"line number575 index574 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"200\");<\/code><\/div>\n<div class=\"line number576 index575 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number577 index576 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 5 ) {<\/code><\/div>\n<div class=\"line number578 index577 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number579 index578 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number580 index579 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(16,2);<\/code><\/div>\n<div class=\"line number581 index580 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"100\");<\/code><\/div>\n<div class=\"line number582 index581 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number583 index582 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 6 ) {<\/code><\/div>\n<div class=\"line number584 index583 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number585 index584 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number586 index585 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(17,2);<\/code><\/div>\n<div class=\"line number587 index586 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"50\");<\/code><\/div>\n<div class=\"line number588 index587 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number589 index588 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 7 ) {<\/code><\/div>\n<div class=\"line number590 index589 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number591 index590 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number592 index591 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(17,2);<\/code><\/div>\n<div class=\"line number593 index592 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"20\");<\/code><\/div>\n<div class=\"line number594 index593 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number595 index594 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 8 ) {<\/code><\/div>\n<div class=\"line number596 index595 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(15,2);<\/code><\/div>\n<div class=\"line number597 index596 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number598 index597 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(17,2);<\/code><\/div>\n<div class=\"line number599 index598 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"10\");<\/code><\/div>\n<div class=\"line number600 index599 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number601 index600 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number602 index601 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number603 index602 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number604 index603 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number605 index604 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.setCursor(0, 2);<\/code><\/div>\n<div class=\"line number606 index605 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.print(\"\u00a0 \");<\/code><\/div>\n<div class=\"line number607 index606 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/lcd.setCursor(0, 2);<\/code><\/div>\n<div class=\"line number608 index607 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number609 index608 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number610 index609 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterMode == 0 )<\/code><\/div>\n<div class=\"line number611 index610 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{ <\/code><\/div>\n<div class=\"line number612 index611 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 2);<\/code><\/div>\n<div class=\"line number613 index612 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number614 index613 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 2);<\/code><\/div>\n<div class=\"line number615 index614 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"FWD\"); <\/code><\/div>\n<div class=\"line number616 index615 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(8, 2);<\/code><\/div>\n<div class=\"line number617 index616 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"); <\/code><\/div>\n<div class=\"line number618 index617 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(8, 2);<\/code><\/div>\n<div class=\"line number619 index618 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"FS PWR=\");<\/code><\/div>\n<div class=\"line number620 index619 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(19, 2);<\/code><\/div>\n<div class=\"line number621 index620 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"W\");<\/code><\/div>\n<div class=\"line number622 index621 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number623 index622 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number624 index623 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number625 index624 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterMode == 1 )<\/code><\/div>\n<div class=\"line number626 index625 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{ <\/code><\/div>\n<div class=\"line number627 index626 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 2);<\/code><\/div>\n<div class=\"line number628 index627 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number629 index628 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 2);<\/code><\/div>\n<div class=\"line number630 index629 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"REF\");<\/code><\/div>\n<div class=\"line number631 index630 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(8, 2);<\/code><\/div>\n<div class=\"line number632 index631 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"); <\/code><\/div>\n<div class=\"line number633 index632 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(8, 2);<\/code><\/div>\n<div class=\"line number634 index633 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"FS PWR=\");<\/code><\/div>\n<div class=\"line number635 index634 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(19, 2);<\/code><\/div>\n<div class=\"line number636 index635 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"W\");<\/code><\/div>\n<div class=\"line number637 index636 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number638 index637 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number639 index638 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}\u00a0 <\/code><\/div>\n<div class=\"line number640 index639 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number641 index640 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterMode == 2 )<\/code><\/div>\n<div class=\"line number642 index641 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{ <\/code><\/div>\n<div class=\"line number643 index642 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number644 index643 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 2);<\/code><\/div>\n<div class=\"line number645 index644 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \");<\/code><\/div>\n<div class=\"line number646 index645 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 2);<\/code><\/div>\n<div class=\"line number647 index646 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"TEMP\"); <\/code><\/div>\n<div class=\"line number648 index647 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(12, 2);<\/code><\/div>\n<div class=\"line number649 index648 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"FS=100\");<\/code><\/div>\n<div class=\"line number650 index649 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(18, 2);<\/code><\/div>\n<div class=\"line number651 index650 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print((char)223);<\/code><\/div>\n<div class=\"line number652 index651 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(19, 2);<\/code><\/div>\n<div class=\"line number653 index652 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"C\");<\/code><\/div>\n<div class=\"line number654 index653 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}\u00a0 <\/code><\/div>\n<div class=\"line number655 index654 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number656 index655 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number657 index656 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">\/*<\/code><\/div>\n<div class=\"line number658 index657 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterMode == 0)\u00a0 {<\/code><\/div>\n<div class=\"line number659 index658 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number660 index659 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counteroldMode == 6);<\/code><\/div>\n<div class=\"line number661 index660 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">{<\/code><\/div>\n<div class=\"line number662 index661 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0, 3);<\/code><\/div>\n<div class=\"line number663 index662 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lcd.print(\"\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \"); <\/code><\/div>\n<div class=\"line number664 index663 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number665 index664 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">*\/<\/code><\/div>\n<div class=\"line number666 index665 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number667 index666 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">\/\/fourth line of the display counterMode sets the function of the fourth line<\/code><\/div>\n<div class=\"line number668 index667 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">\/\/ following prints graph bar counterMode = 0 This is FWD Mode<\/code><\/div>\n<div class=\"line number669 index668 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number670 index669 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0,3); <\/code><\/div>\n<div class=\"line number671 index670 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number672 index671 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterMode == 0)\u00a0 {<\/code><\/div>\n<div class=\"line number673 index672 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number674 index673 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number675 index674 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 0 ) {<\/code><\/div>\n<div class=\"line number676 index675 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 5000); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number677 index676 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number678 index677 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number679 index678 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 1 ) {<\/code><\/div>\n<div class=\"line number680 index679 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 2000); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number681 index680 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number682 index681 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number683 index682 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number684 index683 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 2 ) {<\/code><\/div>\n<div class=\"line number685 index684 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 1000); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number686 index685 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number687 index686 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number688 index687 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number689 index688 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 3 ) {<\/code><\/div>\n<div class=\"line number690 index689 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 500); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number691 index690 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number692 index691 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number693 index692 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number694 index693 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 4 ) {<\/code><\/div>\n<div class=\"line number695 index694 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 200); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number696 index695 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number697 index696 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number698 index697 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number699 index698 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 5 ) {<\/code><\/div>\n<div class=\"line number700 index699 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 100); \/\/ -- draw bar graph from the analog value readed<\/code><\/div>\n<div class=\"line number701 index700 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number702 index701 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number703 index702 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number704 index703 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 6 ) {<\/code><\/div>\n<div class=\"line number705 index704 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 50); \/\/ -- draw bar graph from the analog value readed<\/code><\/div>\n<div class=\"line number706 index705 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number707 index706 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number708 index707 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number709 index708 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 7 ) {<\/code><\/div>\n<div class=\"line number710 index709 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 20); \/\/ -- draw bar graph from the analog value readed<\/code><\/div>\n<div class=\"line number711 index710 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number712 index711 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number713 index712 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number714 index713 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 8 ) {<\/code><\/div>\n<div class=\"line number715 index714 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattfwd, 10); \/\/ -- draw bar graph from the analog value readed<\/code><\/div>\n<div class=\"line number716 index715 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number717 index716 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number718 index717 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number719 index718 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number720 index719 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">\/\/ following prints graph bar counterMode = 1 This is REF Mode<\/code><\/div>\n<div class=\"line number721 index720 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number722 index721 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterMode == 1)\u00a0 {<\/code><\/div>\n<div class=\"line number723 index722 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number724 index723 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number725 index724 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0,3); <\/code><\/div>\n<div class=\"line number726 index725 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 0 ) {<\/code><\/div>\n<div class=\"line number727 index726 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 5000); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number728 index727 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number729 index728 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number730 index729 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 1 ) {<\/code><\/div>\n<div class=\"line number731 index730 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 2000); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number732 index731 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number733 index732 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number734 index733 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number735 index734 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 2 ) {<\/code><\/div>\n<div class=\"line number736 index735 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 1000); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number737 index736 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number738 index737 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number739 index738 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number740 index739 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 3 ) {<\/code><\/div>\n<div class=\"line number741 index740 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 500); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number742 index741 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number743 index742 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number744 index743 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number745 index744 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 4 ) {<\/code><\/div>\n<div class=\"line number746 index745 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 200); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number747 index746 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number748 index747 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number749 index748 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number750 index749 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 5 ) {<\/code><\/div>\n<div class=\"line number751 index750 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 100); \/\/ -- draw bar graph from the analog value readed<\/code><\/div>\n<div class=\"line number752 index751 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number753 index752 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number754 index753 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number755 index754 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 6 ) {<\/code><\/div>\n<div class=\"line number756 index755 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 50); \/\/ -- draw bar graph from the analog value readed<\/code><\/div>\n<div class=\"line number757 index756 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number758 index757 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number759 index758 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number760 index759 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 7 ) {<\/code><\/div>\n<div class=\"line number761 index760 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 20); \/\/ -- draw bar graph from the analog value readed<\/code><\/div>\n<div class=\"line number762 index761 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number763 index762 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number764 index763 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number765 index764 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr == 8 ) {<\/code><\/div>\n<div class=\"line number766 index765 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( wattref, 10); \/\/ -- draw bar graph from the analog value readed<\/code><\/div>\n<div class=\"line number767 index766 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number768 index767 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number769 index768 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number770 index769 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number771 index770 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number772 index771 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ following prints graph bar counterMode = 2 This is Temperature Mode<\/code><\/div>\n<div class=\"line number773 index772 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">if (counterMode == 2)\u00a0 {<\/code><\/div>\n<div class=\"line number774 index773 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">lcd.setCursor(0,3); <\/code><\/div>\n<div class=\"line number775 index774 alt2\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">lbg.drawValue( temp, 100); \/\/ -- draw bar graph from the analog value readed <\/code><\/div>\n<div class=\"line number776 index775 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(1);<\/code><\/div>\n<div class=\"line number777 index776 alt2\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number778 index777 alt1\"><code class=\"xml spaces\">\u00a0<\/code><code class=\"xml plain\">};<\/code><\/div>\n<div class=\"line number779 index778 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number780 index779 alt1\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number781 index780 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/saves the counterPwr value in the eeprom for the next time so that you don't have to set the FS power every time.<\/code><\/div>\n<div class=\"line number782 index781 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">if (counterPwr != counteroldPwr) {<\/code><\/div>\n<div class=\"line number783 index782 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">EEPROM.write(0,counterPwr);<\/code><\/div>\n<div class=\"line number784 index783 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">}<\/code><\/div>\n<div class=\"line number785 index784 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><\/div>\n<div class=\"line number786 index785 alt1\"><code class=\"xml spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><\/div>\n<div class=\"line number787 index786 alt2\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">\/\/ sleep...<\/code><\/div>\n<div class=\"line number788 index787 alt1\"><code class=\"xml spaces\">\u00a0\u00a0<\/code><code class=\"xml plain\">delay(30);<\/code><\/div>\n<div class=\"line number789 index788 alt2\"><code class=\"xml spaces\">\u00a0<\/code><\/div>\n<div class=\"line number790 index789 alt1\"><code class=\"xml plain\">}<\/code><\/div>\n<p>Below is a picture of the unit build by Dave G4RGK<\/p>\n<p><img loading=\"lazy\" class=\"size-medium wp-image-951 aligncenter\" src=\"https:\/\/pa3csg.nl\/wp-content\/uploads\/2015\/04\/G4RGK-unit-300x225.jpg\" alt=\"G4RGK-unit\" width=\"300\" height=\"225\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>SWR Power meter with protection for Solid State PA Version II Old article below this one Some people who built the power meter came with <a class=\"mh-excerpt-more\" href=\"https:\/\/pa3csg.nl\/?page_id=64\" title=\"SWR Power meter with protection for Solid State PA\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":724,"parent":0,"menu_order":7,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"categories":[29],"tags":[],"_links":{"self":[{"href":"https:\/\/pa3csg.nl\/index.php?rest_route=\/wp\/v2\/pages\/64"}],"collection":[{"href":"https:\/\/pa3csg.nl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pa3csg.nl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pa3csg.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pa3csg.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=64"}],"version-history":[{"count":25,"href":"https:\/\/pa3csg.nl\/index.php?rest_route=\/wp\/v2\/pages\/64\/revisions"}],"predecessor-version":[{"id":1565,"href":"https:\/\/pa3csg.nl\/index.php?rest_route=\/wp\/v2\/pages\/64\/revisions\/1565"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pa3csg.nl\/index.php?rest_route=\/wp\/v2\/media\/724"}],"wp:attachment":[{"href":"https:\/\/pa3csg.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=64"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pa3csg.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=64"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pa3csg.nl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=64"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}