<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; VU meter + GMG12864-06D]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=504&amp;type=atom" />
	<updated>2022-08-11T08:45:24Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=504</id>
		<entry>
			<title type="html"><![CDATA[VU meter + GMG12864-06D]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=6527#p6527" />
			<content type="html"><![CDATA[<p>Как подключить дисплей и установить библиотеку - <a href="http://rcl-radio.ru/?p=83094">http://rcl-radio.ru/?p=83094</a></p><p><span class="postimg"><img src="http://forum.rcl-radio.ru/uploads/images/2022/08/c34990ea1add5b28e37a3b2a3f43495b.png" alt="http://forum.rcl-radio.ru/uploads/images/2022/08/c34990ea1add5b28e37a3b2a3f43495b.png" /></span> </p><br /><div class="codebox"><pre><code>#define GAIN      100
#define STEP      4
#define LOW_SOUND 50
#define MAX_SOUND 600

#include &lt;Arduino.h&gt;
#include &lt;U8g2lib.h&gt;
#include &lt;SPI.h&gt;
 
U8G2_ST7565_ERC12864_1_4W_SW_SPI u8g2(U8G2_R0, /* scl=*/ 13, /* si=*/ 11, /* cs=*/ 10, /* rs=*/ 9, /* rse=*/ 8);

  int strela=-45;
  int hMeter = 64;                      
  int vMeter = 85;                      
  int rMeter = 83;
  int ur,urr,x;
 
void setup(void) {
  u8g2.begin(); 
  u8g2.setContrast(5); 
  u8g2.enableUTF8Print();
  u8g2.setFont(u8g2_font_6x10_tf);
  analogReference(INTERNAL);  // если очень маленький уровень сигнала
  pinMode(A2,INPUT);
}
 
void loop(void) {
  strela = map(log(analogRead(A2))*GAIN, LOW_SOUND,MAX_SOUND, -45,45);
  strela = constrain(strela, -45, 45);
  urr = strela;if(urr&lt;ur){ur=ur-STEP;}else{ur = strela;}  

  u8g2.firstPage();
  do { 
  u8g2.drawLine(10, 17, 85, 17);// line 1
  u8g2.drawLine(88, 17, 125, 17);u8g2.drawLine(88, 16, 125, 16);// line 2
  u8g2.drawLine(3, 20, 85, 20);// line3  

  byte b1_2[10]{95,108,124,10,33,60,84,50,68,77};
  byte c1_2[10]{12,14,12,12,12,12,12,14,15,15};
  for(int i=0;i&lt;10;i++){u8g2.drawLine(b1_2[i], 17, b1_2[i], c1_2[i]);} 
  byte b3[5]{3,25,48,67,84};
  for(int i=0;i&lt;5;i++){u8g2.drawLine(b3[i], 20, b3[i], 24);}

  u8g2.setCursor(4, 10); u8g2.print(F(&quot;20  10   3   0 1&quot;));
  u8g2.setCursor(2, 35); u8g2.print(F(&quot;0  25&quot;));
  u8g2.setCursor(42, 35);  u8g2.print(F(&quot;50&quot;));
  u8g2.setCursor(61, 35);u8g2.print(F(&quot;75&quot;));
  u8g2.setCursor(76, 35);u8g2.print(F(&quot;100&quot;));
  u8g2.setCursor(106, 10);u8g2.print(F(&quot;2&quot;));
  u8g2.setCursor(122, 10);u8g2.print(F(&quot;3&quot;));
  u8g2.setCursor(3, 55); u8g2.print(F(&quot;-&quot;));
  u8g2.setCursor(119, 55);u8g2.print(F(&quot;+&quot;));
  u8g2.setCursor(40, 55);u8g2.print(F(&quot;VU meter&quot;));
  
  int a1 = (hMeter + (sin(ur / 57.296) * rMeter)); // meter needle horizontal coordinate
  int a2 = (vMeter - (cos(ur / 57.296) * rMeter)); // meter needle vertical coordinate
  u8g2.drawLine(a1, a2, hMeter, vMeter);
  u8g2.drawLine(a1-1, a2-1, hMeter-1, vMeter+1);
 
  } while ( u8g2.nextPage() );
  
}</code></pre></div><p><div class="fancy_video_tag_player"><iframe class="youtube-player" type="text/html" width="640" height="385" src="https://www.youtube.com/embed/wJvYdFQHkOk" frameborder="0"></iframe></div></p>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2022-08-11T08:45:24Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=6527#p6527</id>
		</entry>
</feed>
