Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
products:laboratory_iot_с:exp13 [2024/11/14 14:43] – [Программный код эксперимента] labuser30products:laboratory_iot_с:exp13 [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1
Строка 1: Строка 1:
-===== Эксперимент 13. Лампа настроения ===== 
  
-Теперь будем управлять яркостью сразу трех цветов, чтобы получить различные их сочетания. Но если мы будем управлять тремя цветами одновременно, то получим лишь пульсирующий белый цвет. Ведь все три составляющие вместе дают белый, интенсивностью которого мы управляем. Как же получить плавно переливающиеся цвета? Будем управлять каждым цветом по функции синуса, но с разными периодами. 
- 
-{{ :products:esp-iot:sins.png?direct&600 |}} 
-//Рисунок 1. Графики яркости светодиодов в зависимости от времени// 
- 
-Из рисунка видно, что периоды изменения цветов разные, благодаря этому на каждом шаге мы получаем разную яркость для каждого цвета и, соответственно, разный результирующий цвет. Вертикальными пунктирными линиями показаны условные шаги. 
- 
-==== Схема эксперимента ==== 
-Оставим собранной без изменений схему из прошлого эксперимента 
- 
-{{ :products:esp-iot:6.2_sch.png?nolink |}} 
-//Рисунок 2. Электрическая принципиальная схема эксперимента// 
- 
-<WRAP center round alert 60%> 
-Токоограничительные резисторы в схеме обязательны! 
-</WRAP> 
- 
-{{ :products:esp-iot:exp6.2_mont.png?direct&600 |}} 
-//Рисунок 3. Монтажная схема эксперимента// 
- 
-==== Программный код эксперимента ==== 
- 
-<file arduino Exp13.ino[enable_line_numbers="2", start_line_numbers_at="1"]> 
-#define LED_PIN_B 15 
-#define LED_PIN_G 14 
-#define LED_PIN_R 13 
- 
-void setup() { 
-  pinMode(LED_PIN_B, OUTPUT);  
-  pinMode(LED_PIN_G, OUTPUT); 
-  pinMode(LED_PIN_R, OUTPUT); 
-  analogWriteFreq(500); 
-  analogWriteRange(1024); 
-  analogWrite(LED_PIN_B, 1023); 
-  analogWrite(LED_PIN_G, 1023); 
-  analogWrite(LED_PIN_R, 1023); 
-} 
- 
-void loop() { 
-  for (int i = 0; i < 100; i++) { 
-    analogWrite(LED_PIN_B, int(sin(i / 50.0 * PI) * 500 + 500)); 
-    analogWrite(LED_PIN_G, int(sin(i / 75.0 * PI) * 500 + 500)); 
-    analogWrite(LED_PIN_R, int(sin(i / 25.0 * PI) * 500 + 500)); 
-    delay(30); 
-  } 
-} 
-</file> 
- 
-Разные периоды мы получаем благодаря использованию разных делителей в формуле.