<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[RemoteXY community — Лабораторный эксперимент2-трубка Кундта]]></title>
	<link rel="self" href="https://forum.remotexy.com/extern.php?action=feed&amp;tid=1935&amp;type=atom" />
	<updated>2025-02-21T13:18:23Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.remotexy.com/viewtopic.php?id=1935</id>
		<entry>
			<title type="html"><![CDATA[Лабораторный эксперимент2-трубка Кундта]]></title>
			<link rel="alternate" href="https://forum.remotexy.com/viewtopic.php?pid=5911#p5911" />
			<content type="html"><![CDATA[<p>Прошло почти два года как был опубликован материал по учебному эксперименту. Судя по отзывам тема обучения не актуальна на этом форуме. Тем не менее я попытаюсь еще раз обратиться к этой теме, так как результат первого эксперимента был положительный и&nbsp; хотелось бы его продолжить. Дело в том, что вывод графиков на экран оказался не так прост, как ожидалось, так как он конкурирует с прерываниями самой программы. ПОэтому пришлось решать эту проблему. Ее решение показано в следующем тексте<br /></p><div class="codebox"><pre><code>/*
   -- doublems --
   Два графика масштабированы
   This source code of graphical user interface 
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 3.1.8 or later version 
   download by link [url]http://remotexy.com/en/library/[/url]
   To connect using RemoteXY mobile app by link [url]http://remotexy.com/en/download/[/url]                   
     - for ANDROID 4.11.1 or later version;
     - for iOS 1.9.1 or later version;
    
   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.    
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// определение режима соединения и подключение библиотеки RemoteXY 
#define REMOTEXY_MODE__ESP8266WIFI_LIB_POINT
#include &lt;ESP8266WiFi.h&gt;

#include &lt;RemoteXY.h&gt;

// настройки соединения 
#define REMOTEXY_WIFI_SSID &quot;doublems&quot;
#define REMOTEXY_WIFI_PASSWORD &quot;12345678&quot;
#define REMOTEXY_SERVER_PORT 6377
const byte dynPin=2;
//генерация звука на втором пине
const int IN_PIN = A0;
//прием звука на аналоговом пине а0
const int MAX_ADC_VALUE = 1023;//возможно изменить на 255
int frec;

// конфигурация интерфейса  
#pragma pack(push, 1)
uint8_t RemoteXY_CONF[] =   // 43 bytes
  { 255,1,0,8,0,36,0,16,31,1,68,17,1,1,60,49,8,36,68,17,
  2,52,59,40,8,36,2,0,21,93,22,6,2,26,31,31,79,78,0,79,
  70,70,0 };

  
// структура определяет все переменные и события вашего интерфейса управления 
struct {

    // input variables
  uint8_t switch_1; // =1 если переключатель включен и =0 если отключен 

    // output variables
  float onlineGraph_1;
  float onlineGraph_2;

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY;
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////



void setup() 
{
 RemoteXY_Init (); 
  pinMode(dynPin,OUTPUT);
  pinMode(IN_PIN, INPUT);
frec=3000;//исходное значение частоты 3000 Гц
 }

void loop() 
{ RemoteXY_Handler ();
   
   if ((RemoteXY.switch_1!=0)and(frec&lt;5000)){
      //инициализируем переменные
int mn = 1024;
int mx = 0;
tone(dynPin,frec);//запускаем генератор звука
for (int i=0; i &lt; 1000; ++i) {
    
  //ищем макс и мин значения амплитуды
int val = analogRead(IN_PIN);
mn = min(mn, val);
mx = max(mx, val);
}
//нашли размах амплитуды
       noTone(dynPin);//отключаем звук
    delayRXY(250);  
    RemoteXY.onlineGraph_1 = float (frec);
    RemoteXY.onlineGraph_2 = float (5.0 / MAX_ADC_VALUE* (mx - mn));
     frec=frec+10;//увеличиваем частоту на 100 для следующего измерения
 }
 else {if (RemoteXY.connect_flag==0) //если соединение смартфона и контроллера разорвалось, то

   {RemoteXY.switch_1=0; //устанавливаем выключатель в положение OFF.

   } //в этом случае при повторном соединении эффекты не запустятся самопроизвольно
    
  }
  }
  void delayRXY (uint32_t ms) {
  uint32_t t = millis ();
  while (millis () - t &lt; ms) RemoteXY_Handler ();
    
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[gorchakov]]></name>
				<uri>https://forum.remotexy.com/profile.php?id=2370</uri>
			</author>
			<updated>2025-02-21T13:18:23Z</updated>
			<id>https://forum.remotexy.com/viewtopic.php?pid=5911#p5911</id>
		</entry>
</feed>
