<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent posts to User Submitted Projects, Demos &amp; Guides</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/</link><description>Recent posts to User Submitted Projects, Demos &amp; Guides</description><atom:link href="https://sourceforge.net/p/gcbasic/discussion/projects&amp;guides/feed.rss" rel="self"/><language>en</language><lastBuildDate>Tue, 03 Mar 2026 14:56:18 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/gcbasic/discussion/projects&amp;guides/feed.rss" rel="self" type="application/rss+xml"/><item><title>Polyphonic MUSICBOX (using sound sample)</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bb212146b3/?limit=250#b561</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Lifted, edit, posted.&lt;/p&gt;
&lt;p&gt;See &lt;a href="https://github.com/GreatCowBASIC/Demonstration_Sources/blob/main/Music" rel="nofollow"&gt;https://github.com/GreatCowBASIC/Demonstration_Sources/blob/main/Music&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anobium</dc:creator><pubDate>Tue, 03 Mar 2026 14:56:18 -0000</pubDate><guid>https://sourceforge.net49b3ef39d73d8a9c30ffe3cb87629f7af56fda4d</guid></item><item><title>Polyphonic MUSICBOX (using sound sample)</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bb212146b3/?limit=25#260b</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Thank you! -Sure! Go ahead!&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Roger Jönsson</dc:creator><pubDate>Tue, 03 Mar 2026 10:04:03 -0000</pubDate><guid>https://sourceforge.netaa2d9b3446dfbf8c244b68c70811bec72b652c94</guid></item><item><title>Polyphonic MUSICBOX (using sound sample)</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bb212146b3/?limit=250#e827</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Genius code!&lt;/p&gt;
&lt;p&gt;May I make a YouTube video on this ?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anobium</dc:creator><pubDate>Tue, 03 Mar 2026 07:40:53 -0000</pubDate><guid>https://sourceforge.net5aed81818d56ca4be4442bb83fba86cd2e45d7e6</guid></item><item><title>Polyphonic MUSICBOX (using sound sample)</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bb212146b3/?limit=25#1346</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;A Polyphonic MUSICBOX on PIC 18F57Q84 using a sound sample as audio source.&lt;/p&gt;
&lt;p&gt;Exploring GCBasic programming , I decided to try and make a musicbox. It resulted in a polyphonic and can play up to 8 independent voices simultaneously.&lt;br/&gt;
I was asked to make a demo video and figured that 3min of a PIC chip just laying on my desk was kind boring to look at, so I added a LED-bar that shows when the voices are sounding.&lt;/p&gt;
&lt;p&gt;Here is a demo video:&lt;br/&gt;
-Maple Leaf Rag by Scott Joplin (Public Domain).&lt;br/&gt;
&lt;a href="https://lineaudio.se/div/Musicbox%20Maple%20Leaf%20Rag.mp4" rel="nofollow"&gt;https://lineaudio.se/div/Musicbox%20Maple%20Leaf%20Rag.mp4&lt;/a&gt;&lt;br/&gt;
(Most of the distortion is actually added by the camera)&lt;/p&gt;
&lt;p&gt;The 8-bit SOUND SAMPLE is stored in program memory and uploaded to RAM on start, which is then slightly faster than reading bytes with ProgramRead. The sample is played back using a Timer0 interrupt acting sample clock at 32000 times per second, running 8 voices, so sound can be made of bytes flowing though the 8-bit DAC at up to 256kB/s.&lt;br/&gt;
In this example all voices read from one single sound sample, which is stepped through at individual speeds (pattern of skip and repeat in the sample array) to produce the different pitches.&lt;br/&gt;
It would be easy to use different samples for each voice, combining percussion with different sounding instruments etc, but in this experient I decided to go for one sample making it sound kind of organ like.&lt;/p&gt;
&lt;p&gt;The MUSIC SCORE is stored in word format and read directly using ProgramRead, stepped along by a second Timer. This conducts the voices, sets their pitches and starts them off at the right time ("Note On"). To simplify things I skipped "Note Off", so when a voice is started it just stops at its own at the end of the sample. Only when notes overlap in a voice is it stopped and restarted with the new pitch before it is finished.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Roger Jönsson</dc:creator><pubDate>Sun, 01 Mar 2026 19:09:41 -0000</pubDate><guid>https://sourceforge.net161727ac5caaa705a6c853a5550f8c80ca71e043</guid></item><item><title>Simple GLCD analogue meter</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bc831171/?limit=250#0548</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;This may help you.&lt;/p&gt;
&lt;h1 id="h-gcbasic-trigonometry-functions"&gt;GCBASIC Trigonometry Functions&lt;/h1&gt;
&lt;p&gt;(Sine, Cosine, and Tangent)&lt;/p&gt;
&lt;p&gt;GCBASIC provides fast, integer-only trigonometric functions using lookup tables.&lt;br/&gt;
They work with &lt;strong&gt;whole-degree angles&lt;/strong&gt; (no radians or fractions) and return scaled integer results — no floating-point library needed.&lt;/p&gt;
&lt;h3 id="h-available-precision-levels"&gt;Available Precision Levels&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Include File&lt;/th&gt;
&lt;th&gt;Decimal Places&lt;/th&gt;
&lt;th&gt;Scale Factor&lt;/th&gt;
&lt;th&gt;sin/cos Range&lt;/th&gt;
&lt;th&gt;tan Range (near ±90°)&lt;/th&gt;
&lt;th&gt;Approx. Table Size&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;#include &amp;lt;trig2places.h&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;×100&lt;/td&gt;
&lt;td&gt;–100 to +100&lt;/td&gt;
&lt;td&gt;up to ~32767&lt;/td&gt;
&lt;td&gt;~270 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;#include &amp;lt;trig3places.h&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;×1000&lt;/td&gt;
&lt;td&gt;–1000 to +1000&lt;/td&gt;
&lt;td&gt;up to ~32767&lt;/td&gt;
&lt;td&gt;~550 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;#include &amp;lt;trig4places.h&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;×10000&lt;/td&gt;
&lt;td&gt;–10000 to +10000&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;not supported&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~1100 bytes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="h-example-returned-values-2-place-version"&gt;Example Returned Values (2-place version)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sin(30)&lt;/code&gt;  → 50     → 0.50  &lt;/li&gt;
&lt;li&gt;&lt;code&gt;sin(45)&lt;/code&gt;  → 71     → 0.71  &lt;/li&gt;
&lt;li&gt;&lt;code&gt;sin(60)&lt;/code&gt;  → 87     → 0.87  &lt;/li&gt;
&lt;li&gt;&lt;code&gt;sin(90)&lt;/code&gt;  → 100    → 1.00  &lt;/li&gt;
&lt;li&gt;&lt;code&gt;cos(0)&lt;/code&gt;   → 100  &lt;/li&gt;
&lt;li&gt;&lt;code&gt;tan(45)&lt;/code&gt;  → 100    → 1.00  &lt;/li&gt;
&lt;li&gt;&lt;code&gt;tan(60)&lt;/code&gt;  → 173    → 1.73  &lt;/li&gt;
&lt;li&gt;&lt;code&gt;tan(89)&lt;/code&gt;  → ~5729  → 57.29  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h-main-features"&gt;Main Features&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Accepts &lt;strong&gt;any integer angle&lt;/strong&gt; (positive, negative, very large)  &lt;/li&gt;
&lt;li&gt;Automatically reduces angle using &lt;code&gt;mod 360&lt;/code&gt;  &lt;/li&gt;
&lt;li&gt;Correct signs in all four quadrants  &lt;/li&gt;
&lt;li&gt;Respects odd/even properties:  &lt;/li&gt;
&lt;li&gt;sin(−θ) = −sin(θ)  &lt;/li&gt;
&lt;li&gt;cos(−θ) = cos(θ)  &lt;/li&gt;
&lt;li&gt;tan(−θ) = −tan(θ)  &lt;/li&gt;
&lt;li&gt;Very fast — usually just one table lookup + a few adjustments  &lt;/li&gt;
&lt;li&gt;No floating-point code — perfect for small PIC/AVR chips  &lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="h-how-it-works-deep-insight"&gt;How It Works (Deep Insight)&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Normalise angle&lt;/strong&gt;&lt;br/&gt;
&lt;code&gt;angle = angle mod 360&lt;/code&gt; → result is 0° to 359°&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Handle negative angles &amp;amp; determine sign&lt;/strong&gt;  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;sin and tan are odd functions → flip sign and negate angle if negative  &lt;/li&gt;
&lt;li&gt;cos is even → only negate angle if negative  &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Apply quadrant-based sign rules (II/III negative for cos, etc.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fold to reference angle (0°–90°)&lt;/strong&gt;  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;0–90   → use as is  &lt;/li&gt;
&lt;li&gt;90–180 → 180 − angle  &lt;/li&gt;
&lt;li&gt;180–270 → angle − 180  &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;270–360 → 360 − angle  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Lookup value&lt;/strong&gt;  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;sin and cos use the &lt;strong&gt;same table&lt;/strong&gt; (&lt;code&gt;sineTab&lt;/code&gt;) containing sin(0°) to sin(90°)  &lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tan uses a separate &lt;code&gt;tanTab&lt;/code&gt;  &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cosine shortcut&lt;/strong&gt;&lt;br/&gt;
&lt;code&gt;cos(θ) = sin(90° − θ)&lt;/code&gt;&lt;br/&gt;
   → cosine just reads the sine table at (90 − reference angle)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Apply final sign&lt;/strong&gt;&lt;br/&gt;
   Return table value × calculated sign&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This clever folding + co-function trick keeps memory use low and speed high.&lt;/p&gt;
&lt;h3 id="h-displaying-results-on-lcdserial-common-helper"&gt;Displaying Results on LCD/Serial (Common Helper)&lt;/h3&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="vg"&gt;sub&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;printTrig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vg"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;integer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="vg"&gt;dim&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;sign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;string&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="vg"&gt;sign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="vg"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="il"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="vg"&gt;sign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"-"&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="vg"&gt;value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="vg"&gt;value&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="vg"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;if&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vg"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="vg"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="vg"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="il"&gt;1&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="vg"&gt;print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;sign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.0"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="c1"&gt;' 7 → 0.07&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="vg"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="il"&gt;2&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="vg"&gt;print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;sign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0."&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="w"&gt;          &lt;/span&gt;&lt;span class="c1"&gt;' 71 → 0.71&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="vg"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="il"&gt;3&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="vg"&gt;print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;sign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;left&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="il"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;right&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="il"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;' 100 → 1.00&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="vg"&gt;case&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="il"&gt;4&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="vg"&gt;print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;sign&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;left&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="il"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;right&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="vg"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="il"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="c1"&gt;' 173 → 1.73&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="vg"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;select&lt;/span&gt;
&lt;span class="vg"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="vg"&gt;sub&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;(Extend the &lt;code&gt;select case&lt;/code&gt; for 3-place and 4-place versions.)&lt;/p&gt;
&lt;h3 id="h-recommendation"&gt;Recommendation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;&lt;code&gt;&amp;lt;trig2places.h&amp;gt;&lt;/code&gt;&lt;/strong&gt; for most projects — smallest and fastest  &lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;&lt;code&gt;&amp;lt;trig3places.h&amp;gt;&lt;/code&gt;&lt;/strong&gt; when you want noticeably better accuracy (e.g. 0.866 instead of 0.87 for sin(60°))  &lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;&lt;code&gt;&amp;lt;trig4places.h&amp;gt;&lt;/code&gt;&lt;/strong&gt; only when tangent is not needed and you want maximum sin/cos resolution  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These routines are lightweight, efficient, and still one of the best fixed-point trig solutions for 8-bit microcontrollers in the GCBASIC ecosystem.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anobium</dc:creator><pubDate>Wed, 25 Feb 2026 16:21:08 -0000</pubDate><guid>https://sourceforge.net5b5bfb4ea3f089e99b0e2cd38a8ae1aa793c7bd2</guid></item><item><title>Simple GLCD analogue meter</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bc831171/?limit=25&amp;page=1#0dcd</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Thanks for the help Anobium,  yes it works fine, its just that I would have liked to know what that Sin and Cos stuff is doing. I will have a look at the help files.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Willem</dc:creator><pubDate>Wed, 25 Feb 2026 14:47:07 -0000</pubDate><guid>https://sourceforge.netac662d9776b4a8a2346558e21987d9ea73ab029d</guid></item><item><title>Simple GLCD analogue meter</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bc831171/?limit=250#e07d</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;There is a range to Sin(). Your random number must not exceed the range of mathematical Sin(). See the Help.&lt;/p&gt;
&lt;p&gt;From the photo ..did you get working?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Anobium</dc:creator><pubDate>Tue, 24 Feb 2026 16:27:35 -0000</pubDate><guid>https://sourceforge.net44e82061ea761b57ec7743adc7a1057e120cdf3c</guid></item><item><title>Simple GLCD analogue meter</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bc831171/?limit=25&amp;page=1#5fff/7e16/2b66</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Sorry for posting 100 times, I was not sure if it posts or what.&lt;br/&gt;
The 100 hits and misses were like this, I put random numbers in the 2 equation's and then compile it, load it into the pic and see what happens on the screen, until it was coming right, took quite some time.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Willem</dc:creator><pubDate>Tue, 24 Feb 2026 14:46:51 -0000</pubDate><guid>https://sourceforge.netf739da7e098a461b257d5285f46c082fb34f6204</guid></item><item><title>Simple GLCD analogue meter</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bc831171/?limit=25&amp;page=1#4ea0</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;A Voltmeter with a GLCD 240x320 with a ili9341 chip,  thanks to Stan and Anobium for the original code.  Can someone please explain how this part of the code works, I managed to make it work on the bigger screen, but with hundreds of hits and misses:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;     sub plotdial

  xend = 166 + radius  &lt;span class="gs"&gt;* sin (angle)/185&lt;/span&gt;
&lt;span class="gs"&gt;  yend = 165 - radius  *&lt;/span&gt; cos (angle)/185

  pset (xend,yend,0XFFE0)


  Here is the working code on a BIG screen
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;'''You can change the microcontroller, the GLCD and the analogue port.&lt;br/&gt;
'''To change the microcontroller simply change the #chip statement&lt;br/&gt;
'''To change the GLCD replace GLCD definition&lt;br/&gt;
'''To change the analogue port change the ADCChannelSelected constant&lt;br/&gt;
' Many thanks to Stan and Anobium who wrote this in 2017. I only adapte&lt;br/&gt;
'it to work with 16F887 pic and a Temu GLCD 240 x 320 screen&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="cp"&gt;#chip 16f887,20&lt;/span&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;glcd.h&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;#option explicit&lt;/span&gt;
&lt;span class="cp"&gt;#INCLUDE &amp;lt;TRIG2PLACES.H&amp;gt;&lt;/span&gt;

&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Defines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ILI9341&lt;/span&gt;
&lt;span class="cp"&gt;#define GLCD_TYPE GLCD_TYPE_ILI9341&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;'Setup the GLCD to 16F887&lt;br/&gt;
      #define GLCD_DC     PORTC.0&lt;br/&gt;
      #define GLCD_CS     PORTC.1&lt;br/&gt;
      #define GLCD_RESET  PORTC.2&lt;br/&gt;
      #define GLCD_DI     PORTC.4&lt;br/&gt;
      #define GLCD_DO     PORTC.5&lt;br/&gt;
      #define GLCD_SCK    PORTC.3&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="s1"&gt;'Specify the type of GLCD&lt;/span&gt;

&lt;span class="c1"&gt;#define GLCD_WIDTH 320&lt;/span&gt;
&lt;span class="c1"&gt;#define GLCD_HEIGHT 240&lt;/span&gt;
&lt;span class="c1"&gt;#define GLCD_PROTECTOVERRUN&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="s1"&gt;'FONT SIZE&lt;/span&gt;
&lt;span class="c1"&gt;#define GLCD_OLED_FONT 'The constant is required to support OLED fonts&lt;/span&gt;
&lt;span class="n"&gt;GLCDfntDefaultSize&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;' 8 pixels high = 1 , 2 = 16 pixels high&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;GLCDRotate (landscape)&lt;br/&gt;
GLCDCLS ILI9341_BLACK&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="s1"&gt;'analogue port selection&lt;/span&gt;
&lt;span class="s1"&gt;    #define ADCChannelSelected AN0&lt;/span&gt;
&lt;span class="s1"&gt;    #define ADSpeed LowSpeed&lt;/span&gt;

&lt;span class="s1"&gt;dim xcentre,ycentre,xend,old_xend,yend,old_yend as word&lt;/span&gt;
&lt;span class="s1"&gt;DIM RADIUS as word&lt;/span&gt;
&lt;span class="s1"&gt;dim angle,old_angle,adcval as word&lt;/span&gt;
&lt;span class="s1"&gt;dim volts as string * 4&lt;/span&gt;

&lt;span class="s1"&gt;xcentre=168  '&lt;/span&gt;&lt;span class="nt"&gt;X&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;en&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needle&lt;/span&gt;
&lt;span class="nt"&gt;ycentre&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;160&lt;/span&gt;

&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;draw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dial&lt;/span&gt;
&lt;span class="nt"&gt;GLCDCLS&lt;/span&gt;
&lt;span class="nt"&gt;box&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;310&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;210&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;0xf800&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;BOX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;135&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;175&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;205&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;200&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;0XF800&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="s1"&gt;'''dail size''''&lt;/span&gt;
&lt;span class="s1"&gt;for radius=260 to 200&lt;/span&gt;
&lt;span class="s1"&gt;  dial&lt;/span&gt;
&lt;span class="s1"&gt;next radius&lt;/span&gt;

&lt;span class="s1"&gt;              '''&lt;/span&gt;&lt;span class="nt"&gt;DAIL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;decoration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'''&lt;/span&gt;
&lt;span class="s1"&gt;GLCDDrawChar (40,95,asc("0")):GLCDDrawChar (285,95,asc("5"))&lt;/span&gt;
&lt;span class="s1"&gt; GLCDprint (82,55,"1",0xffff):GLCDprint (135,27,"2",0xffff)&lt;/span&gt;
&lt;span class="s1"&gt; GLCDprint (190,25,"3",0xffff): GLCDprint (240,50,"4",0xffff)&lt;/span&gt;

&lt;span class="s1"&gt;       '''&lt;/span&gt;&lt;span class="nt"&gt;length&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needle&lt;/span&gt;&lt;span class="s1"&gt;'''''&lt;/span&gt;
&lt;span class="s1"&gt;radius = 250     '&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;lengte&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;van&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;naald&lt;/span&gt;
&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;
&lt;span class="nt"&gt;anglecheck&lt;/span&gt;

&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;
&lt;span class="nt"&gt;do&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;old_angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;---&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;DVM&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;ReadAD&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;ADCChannelSelected&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;2&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nt"&gt;100&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;51&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;str&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"0.0"&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;left&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;goto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volt_format_done&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;100&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"0."&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;mid&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;left&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;)+&lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;mid&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;volt_format_done&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;---&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;anglecheck&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;old_xend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;xcentre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;radius&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;old_angle&lt;/span&gt;&lt;span class="o"&gt;)/&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;old_yend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ycentre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;radius&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cos&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;old_angle&lt;/span&gt;&lt;span class="o"&gt;)/&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;xend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;xcentre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;radius&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;)/&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;yend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ycentre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;radius&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cos&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;)/&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;old_angle&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;--&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;update&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;screen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;has&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;changed&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nt"&gt;erase&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;old&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needle&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;line&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;xcentre&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;ycentre&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;old_xend&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;old_yend&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="s1"&gt;'black&lt;/span&gt;

&lt;span class="s1"&gt;;   '''&lt;/span&gt;&lt;span class="nt"&gt;Print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Volts&lt;/span&gt;&lt;span class="s1"&gt;'''&lt;/span&gt;
&lt;span class="s1"&gt;    GLCDPrint (140,180,volts,0x07e0) ;print Voltage&lt;/span&gt;
&lt;span class="s1"&gt;    GLCDprint (190,180,"V",0x07e0)&lt;/span&gt;

&lt;span class="s1"&gt;;   '''&lt;/span&gt;&lt;span class="nt"&gt;draw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needle&lt;/span&gt;&lt;span class="s1"&gt;'''&lt;/span&gt;
&lt;span class="s1"&gt;    line (xcentre,ycentre,xend,yend,0xf800)&lt;/span&gt;
&lt;span class="s1"&gt;    wait 110 ms&lt;/span&gt;
&lt;span class="s1"&gt;  end if&lt;/span&gt;
&lt;span class="s1"&gt;loop&lt;/span&gt;
&lt;span class="s1"&gt;  ;end main&lt;/span&gt;

&lt;span class="s1"&gt;sub plotdial  ''''Dail height,beginning and end posistion''''&lt;/span&gt;

&lt;span class="s1"&gt;  xend = 166 + radius  * sin (angle)/185&lt;/span&gt;
&lt;span class="s1"&gt;  yend = 165 - radius  * cos (angle)/185&lt;/span&gt;

&lt;span class="s1"&gt;  pset (xend,yend,0XFFE0)&lt;/span&gt;
&lt;span class="s1"&gt;end sub&lt;/span&gt;
&lt;span class="s1"&gt;;&lt;/span&gt;
&lt;span class="s1"&gt;sub dial&lt;/span&gt;

&lt;span class="s1"&gt;         ''''dail'''&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;296&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;359&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;plotdial&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;next&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;65&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;plotdial&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;next&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;
&lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sub&lt;/span&gt;

&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;sub anglecheck&lt;br/&gt;
      if angle&amp;gt;127 then&lt;br/&gt;
        angle =angle-127&lt;br/&gt;
      else&lt;br/&gt;
        angle =296+angle&lt;br/&gt;
      end if&lt;br/&gt;
    end sub&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;'''Enjoy'''
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Willem</dc:creator><pubDate>Mon, 23 Feb 2026 16:42:23 -0000</pubDate><guid>https://sourceforge.netbf4b2e48682a85acac0b974810ce520318d8d3c5</guid></item><item><title>Simple GLCD analogue meter</title><link>https://sourceforge.net/p/gcbasic/discussion/projects%2526guides/thread/bc831171/?limit=25&amp;page=1#3aa5</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;A Voltmeter with a GLCD 240x320 with a ili9341 chip,  thanks to Stan and Anobium for the original code.  Can someone please explain how this part of the code works, I managed to make it work on the bigger screen, but with hundreds of hits and misses:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;     sub plotdial

  xend = 166 + radius  &lt;span class="gs"&gt;* sin (angle)/185&lt;/span&gt;
&lt;span class="gs"&gt;  yend = 165 - radius  *&lt;/span&gt; cos (angle)/185

  pset (xend,yend,0XFFE0)


  Here is the working code on a BIG screen
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;'''You can change the microcontroller, the GLCD and the analogue port.&lt;br/&gt;
'''To change the microcontroller simply change the #chip statement&lt;br/&gt;
'''To change the GLCD replace GLCD definition&lt;br/&gt;
'''To change the analogue port change the ADCChannelSelected constant&lt;br/&gt;
' Many thanks to Stan and Anobium who wrote this in 2017. I only adapte&lt;br/&gt;
'it to work with 16F887 pic and a Temu GLCD 240 x 320 screen&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="cp"&gt;#chip 16f887,20&lt;/span&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;glcd.h&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;#option explicit&lt;/span&gt;
&lt;span class="cp"&gt;#INCLUDE &amp;lt;TRIG2PLACES.H&amp;gt;&lt;/span&gt;

&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="n"&gt;Defines&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ILI9341&lt;/span&gt;
&lt;span class="cp"&gt;#define GLCD_TYPE GLCD_TYPE_ILI9341&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;'Setup the GLCD to 16F887&lt;br/&gt;
      #define GLCD_DC     PORTC.0&lt;br/&gt;
      #define GLCD_CS     PORTC.1&lt;br/&gt;
      #define GLCD_RESET  PORTC.2&lt;br/&gt;
      #define GLCD_DI     PORTC.4&lt;br/&gt;
      #define GLCD_DO     PORTC.5&lt;br/&gt;
      #define GLCD_SCK    PORTC.3&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="s1"&gt;'Specify the type of GLCD&lt;/span&gt;

&lt;span class="c1"&gt;#define GLCD_WIDTH 320&lt;/span&gt;
&lt;span class="c1"&gt;#define GLCD_HEIGHT 240&lt;/span&gt;
&lt;span class="c1"&gt;#define GLCD_PROTECTOVERRUN&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="s1"&gt;'FONT SIZE&lt;/span&gt;
&lt;span class="c1"&gt;#define GLCD_OLED_FONT 'The constant is required to support OLED fonts&lt;/span&gt;
&lt;span class="n"&gt;GLCDfntDefaultSize&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;' 8 pixels high = 1 , 2 = 16 pixels high&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;GLCDRotate (landscape)&lt;br/&gt;
GLCDCLS ILI9341_BLACK&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="s1"&gt;'analogue port selection&lt;/span&gt;
&lt;span class="s1"&gt;    #define ADCChannelSelected AN0&lt;/span&gt;
&lt;span class="s1"&gt;    #define ADSpeed LowSpeed&lt;/span&gt;

&lt;span class="s1"&gt;dim xcentre,ycentre,xend,old_xend,yend,old_yend as word&lt;/span&gt;
&lt;span class="s1"&gt;DIM RADIUS as word&lt;/span&gt;
&lt;span class="s1"&gt;dim angle,old_angle,adcval as word&lt;/span&gt;
&lt;span class="s1"&gt;dim volts as string * 4&lt;/span&gt;

&lt;span class="s1"&gt;xcentre=168  '&lt;/span&gt;&lt;span class="nt"&gt;X&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;en&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needle&lt;/span&gt;
&lt;span class="nt"&gt;ycentre&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;160&lt;/span&gt;

&lt;span class="w"&gt;       &lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;draw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dial&lt;/span&gt;
&lt;span class="nt"&gt;GLCDCLS&lt;/span&gt;
&lt;span class="nt"&gt;box&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;25&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;20&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;310&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;210&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;0xf800&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;BOX&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;135&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;175&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;205&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;200&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;0XF800&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="s1"&gt;'''dail size''''&lt;/span&gt;
&lt;span class="s1"&gt;for radius=260 to 200&lt;/span&gt;
&lt;span class="s1"&gt;  dial&lt;/span&gt;
&lt;span class="s1"&gt;next radius&lt;/span&gt;

&lt;span class="s1"&gt;              '''&lt;/span&gt;&lt;span class="nt"&gt;DAIL&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;decoration&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'''&lt;/span&gt;
&lt;span class="s1"&gt;GLCDDrawChar (40,95,asc("0")):GLCDDrawChar (285,95,asc("5"))&lt;/span&gt;
&lt;span class="s1"&gt; GLCDprint (82,55,"1",0xffff):GLCDprint (135,27,"2",0xffff)&lt;/span&gt;
&lt;span class="s1"&gt; GLCDprint (190,25,"3",0xffff): GLCDprint (240,50,"4",0xffff)&lt;/span&gt;

&lt;span class="s1"&gt;       '''&lt;/span&gt;&lt;span class="nt"&gt;length&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needle&lt;/span&gt;&lt;span class="s1"&gt;'''''&lt;/span&gt;
&lt;span class="s1"&gt;radius = 250     '&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;lengte&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;van&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;naald&lt;/span&gt;
&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;
&lt;span class="nt"&gt;anglecheck&lt;/span&gt;

&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;
&lt;span class="nt"&gt;do&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;old_angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;---&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;DVM&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;ReadAD&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;ADCChannelSelected&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;2&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nt"&gt;100&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;51&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;str&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"0.0"&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;left&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;goto&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volt_format_done&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;adcval&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;100&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;then&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"0."&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;mid&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;else&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;left&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;1&lt;/span&gt;&lt;span class="o"&gt;)+&lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nt"&gt;mid&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;volt_format_done&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;---&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;anglecheck&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;old_xend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;xcentre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;radius&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;old_angle&lt;/span&gt;&lt;span class="o"&gt;)/&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;old_yend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ycentre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;radius&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cos&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;old_angle&lt;/span&gt;&lt;span class="o"&gt;)/&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;xend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;xcentre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;radius&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;)/&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;yend&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ycentre&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;radius&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cos&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;)/&lt;/span&gt;&lt;span class="nt"&gt;255&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;old_angle&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;then&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;--&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;update&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;screen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;volts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;has&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;changed&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nt"&gt;erase&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;old&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needle&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;line&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;xcentre&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;ycentre&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;old_xend&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;old_yend&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="s1"&gt;'black&lt;/span&gt;

&lt;span class="s1"&gt;;   '''&lt;/span&gt;&lt;span class="nt"&gt;Print&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;Volts&lt;/span&gt;&lt;span class="s1"&gt;'''&lt;/span&gt;
&lt;span class="s1"&gt;    GLCDPrint (140,180,volts,0x07e0) ;print Voltage&lt;/span&gt;
&lt;span class="s1"&gt;    GLCDprint (190,180,"V",0x07e0)&lt;/span&gt;

&lt;span class="s1"&gt;;   '''&lt;/span&gt;&lt;span class="nt"&gt;draw&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;needle&lt;/span&gt;&lt;span class="s1"&gt;'''&lt;/span&gt;
&lt;span class="s1"&gt;    line (xcentre,ycentre,xend,yend,0xf800)&lt;/span&gt;
&lt;span class="s1"&gt;    wait 110 ms&lt;/span&gt;
&lt;span class="s1"&gt;  end if&lt;/span&gt;
&lt;span class="s1"&gt;loop&lt;/span&gt;
&lt;span class="s1"&gt;  ;end main&lt;/span&gt;

&lt;span class="s1"&gt;sub plotdial  ''''Dail height,beginning and end posistion''''&lt;/span&gt;

&lt;span class="s1"&gt;  xend = 166 + radius  * sin (angle)/185&lt;/span&gt;
&lt;span class="s1"&gt;  yend = 165 - radius  * cos (angle)/185&lt;/span&gt;

&lt;span class="s1"&gt;  pset (xend,yend,0XFFE0)&lt;/span&gt;
&lt;span class="s1"&gt;end sub&lt;/span&gt;
&lt;span class="s1"&gt;;&lt;/span&gt;
&lt;span class="s1"&gt;sub dial&lt;/span&gt;

&lt;span class="s1"&gt;         ''''dail'''&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;296&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;359&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;plotdial&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;next&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;
&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;65&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;plotdial&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;next&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;angle&lt;/span&gt;
&lt;span class="nt"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sub&lt;/span&gt;

&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;sub anglecheck&lt;br/&gt;
      if angle&amp;gt;127 then&lt;br/&gt;
        angle =angle-127&lt;br/&gt;
      else&lt;br/&gt;
        angle =296+angle&lt;br/&gt;
      end if&lt;br/&gt;
    end sub&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;'''Enjoy'''
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Willem</dc:creator><pubDate>Mon, 23 Feb 2026 16:42:20 -0000</pubDate><guid>https://sourceforge.net194c58661ab5b8850684deea67a5a743b4390866</guid></item></channel></rss>