<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[forum.rcl-radio.ru &mdash; Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
	<link rel="self" href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=699&amp;type=atom" />
	<updated>2025-04-27T16:31:11Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.rcl-radio.ru/viewtopic.php?id=699</id>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11788#p11788" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// Подключение выводов RGB светодиода
#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11

// Параметры перехода
const int STEPS = 100;          // Число шагов перехода
const int DELAY_PER_STEP = 10;  // Задержка между шагами (мс)

void setup() {
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
}

void loop() {
  // Переменные для хранения текущих значений RGB
  int redValue = 255;
  int greenValue = 0;
  int blueValue = 0;

  // Первый переход: красный -&gt; зелёный
  for (int i = 0; i &lt;= STEPS; i++) {
    redValue -= round((float)(redValue * i) / STEPS);
    greenValue += round((float)((255-redValue) * i) / STEPS);
    analogWrite(RED_PIN, redValue);
    analogWrite(GREEN_PIN, greenValue);
    analogWrite(BLUE_PIN, blueValue);
    delay(DELAY_PER_STEP);
  }

  // Второй переход: зелёный -&gt; синий
  for (int i = 0; i &lt;= STEPS; i++) {
    greenValue -= round((float)(greenValue * i) / STEPS);
    blueValue += round((float)((255-greenValue) * i) / STEPS);
    analogWrite(RED_PIN, redValue);
    analogWrite(GREEN_PIN, greenValue);
    analogWrite(BLUE_PIN, blueValue);
    delay(DELAY_PER_STEP);
  }

  // Третий переход: синий -&gt; красный
  for (int i = 0; i &lt;= STEPS; i++) {
    blueValue -= round((float)(blueValue * i) / STEPS);
    redValue += round((float)((255-blueValue) * i) / STEPS);
    analogWrite(RED_PIN, redValue);
    analogWrite(GREEN_PIN, greenValue);
    analogWrite(BLUE_PIN, blueValue);
    delay(DELAY_PER_STEP);
  }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-27T16:31:11Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11788#p11788</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11787#p11787" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// Подключение выводов RGB светодиода
#define RED_PIN 9
#define GREEN_PIN 10
#define BLUE_PIN 11

// Значения начальной скорости изменения цвета
const int STEP_DELAY = 20; // Время между обновлениями (мс)

void setup() {
  pinMode(RED_PIN, OUTPUT);
  pinMode(GREEN_PIN, OUTPUT);
  pinMode(BLUE_PIN, OUTPUT);
}

void loop() {
  // Фаза 1: от красного к зелёному
  for (int i = 255; i &gt;= 0; --i) {
    analogWrite(RED_PIN, i);       // уменьшаем красный
    analogWrite(GREEN_PIN, 255-i); // увеличиваем зелёный
    delay(STEP_DELAY);
  }

  // Фаза 2: от зелёного к синему
  for (int i = 255; i &gt;= 0; --i) {
    analogWrite(GREEN_PIN, i);     // уменьшаем зелёный
    analogWrite(BLUE_PIN, 255-i); // увеличиваем синий
    delay(STEP_DELAY);
  }

  // Фаза 3: от синего к красному
  for (int i = 255; i &gt;= 0; --i) {
    analogWrite(BLUE_PIN, i);     // уменьшаем синий
    analogWrite(RED_PIN, 255-i);  // увеличиваем красный
    delay(STEP_DELAY);
  }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-27T16:23:42Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11787#p11787</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11786#p11786" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// Пин подключения светодиодов
#define R_PIN 9
#define G_PIN 10
#define B_PIN 11

// Количество шагов для плавного перехода
const int steps = 100;

// Цветовые массивы
int currentColor[] = {255, 0, 0};
int targetColor[] = {0, 255, 0};

// Временные задержки
const unsigned long delayPerStep = 10; // мс между шагами

// Функция отправки цвета на светодиоды
void RGB(int r, int g, int b) {
  analogWrite(R_PIN, r);
  analogWrite(G_PIN, g);
  analogWrite(B_PIN, b);
}

void setup() {
  pinMode(R_PIN, OUTPUT);
  pinMode(G_PIN, OUTPUT);
  pinMode(B_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // Основной цикл плавно меняет цвета
  while(true) {
    // Плавный переход от красного к зелёному
    int fromRedToGreen[] = {255, 0, 0};
    int toGreen[] = {0, 255, 0};
    transitionColors(fromRedToGreen, toGreen);
    delay(1000); // Короткая пауза на чистом зелёном цвете
    
    // Плавный переход от зелёного к синему
    int fromGreenToBlue[] = {0, 255, 0};
    int toBlue[] = {0, 0, 255};
    transitionColors(fromGreenToBlue, toBlue);
    delay(1000); // Пауза на синем цвете
    
    // Плавный переход от синего к красному
    int fromBlueToRed[] = {0, 0, 255};
    int toRed[] = {255, 0, 0};
    transitionColors(fromBlueToRed, toRed);
    delay(1000); // Пауза на красном цвете
  }
}

// Функционал плавного перехода между двумя заданными цветами
void transitionColors(const int start[], const int end[]) {
  for (int i = 0; i &lt;= steps; i++) {
    // Интерполяция каждого компонента цвета
    int red = map(i, 0, steps, start[0], end[0]);
    int green = map(i, 0, steps, start[1], end[1]);
    int blue = map(i, 0, steps, start[2], end[2]);

    // Установка новых значений цветов
    RGB(red, green, blue);

    // Небольшая задержка для визуального эффекта
    delay(delayPerStep);
  }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-27T16:13:42Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11786#p11786</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11785#p11785" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// Пин подключения светодиодов
#define R_PIN 9
#define G_PIN 10
#define B_PIN 11

// Количество шагов для плавного перехода
const int steps = 100;

// Цветовые массивы
int currentColor[] = {255, 0, 0};
int targetColor[] = {0, 255, 0};

// Временные задержки
const unsigned long delayPerStep = 10; // Мс между шагами

// Функция отправки цвета на светодиоды
void RGB(int r, int g, int b) {
  analogWrite(R_PIN, r);
  analogWrite(G_PIN, g);
  analogWrite(B_PIN, b);
}

void setup() {
  pinMode(R_PIN, OUTPUT);
  pinMode(G_PIN, OUTPUT);
  pinMode(B_PIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  // Основной цикл плавно меняет цвета
  while(true) {
    // Плавный переход от красного к зелёному
    transitionColors({255, 0, 0}, {0, 255, 0});
    delay(1000); // Короткая пауза на чистом зелёном цвете
    
    // Плавный переход от зелёного к синему
    transitionColors({0, 255, 0}, {0, 0, 255});
    delay(1000); // Пауза на синем цвете
    
    // Плавный переход от синего к красному
    transitionColors({0, 0, 255}, {255, 0, 0});
    delay(1000); // Пауза на красном цвете
  }
}

// Функционал плавного перехода между двумя заданными цветами
void transitionColors(const int start[], const int end[]) {
  for (int i = 0; i &lt;= steps; i++) {
    // Интерполяция каждого компонента цвета
    int red = map(i, 0, steps, start[0], end[0]);
    int green = map(i, 0, steps, start[1], end[1]);
    int blue = map(i, 0, steps, start[2], end[2]);

    // Установка новых значений цветов
    RGB(red, green, blue);

    // Небольшая задержка для визуального эффекта
    delay(delayPerStep);
  }
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-27T16:02:40Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11785#p11785</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11784#p11784" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// Пин подключения светодиодов
#define R_PIN 9
#define G_PIN 10
#define B_PIN 11

// Константа для числа шагов
const int steps = 100;

// Массивы текущего и целевого цветов
int currentColor[] = {255, 0, 0};   // Начальный красный цвет
int targetColor[] = {0, 255, 0};    // Следующий зеленый цвет

// Дельты для плавного изменения
float deltaR, deltaG, deltaB;

// Время начала последнего шага
unsigned long lastStepTime = 0;

// Задержка между шагами в миллисекундах
const unsigned long stepDelay = 10;

// Отправляет цвет на вывод
void RGB(int R, int G, int B){
  analogWrite(R_PIN, R);
  analogWrite(G_PIN, G);
  analogWrite(B_PIN, B);
}

void setup() {
  pinMode(R_PIN, OUTPUT);  
  pinMode(G_PIN, OUTPUT);  
  pinMode(B_PIN, OUTPUT);  
  Serial.begin(9600);

  // Рассчитываем дельты заранее
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}

void loop() {
  unsigned long now = millis();

  // Проверяем, прошло ли достаточно времени для следующего шага
  if ((now - lastStepTime) &gt;= stepDelay) {
    // Обновляем текущее время
    lastStepTime = now;

    // Меняем цвета плавно
    currentColor[0] += deltaR;
    currentColor[1] += deltaG;
    currentColor[2] += deltaB;

    // Ограничиваем диапазон значений RGB от 0 до 255
    currentColor[0] = constrain(currentColor[0], 0, 255);
    currentColor[1] = constrain(currentColor[1], 0, 255);
    currentColor[2] = constrain(currentColor[2], 0, 255);

    // Устанавливаем новые значения
    RGB(currentColor[0], currentColor[1], currentColor[2]);

    // Проверяем, достигли ли мы целевого цвета
    bool reachedTarget = true;
    for (int i = 0; i &lt; 3; ++i) {
      if (abs(currentColor[i] - targetColor[i]) &gt; 1) { // Проверяем точность совпадения ±1
        reachedTarget = false;
        break;
      }
    }
    
    // Если достигли целевого цвета — смена на следующий
    if (reachedTarget) {
      nextColorPhase(); // Переход к следующей фазе цветов
    }
  }
}

// Изменяет целевой цвет на следующем этапе
void nextColorPhase() {
  static int phase = 0; // Текущая фаза

  switch (phase++ % 3) { // Используем остаток от деления для циклического поведения
    case 0: // Красное → Зеленое
      targetColor[0] = 0;
      targetColor[1] = 255;
      targetColor[2] = 0;
      break;
    case 1: // Зеленое → Синее
      targetColor[0] = 0;
      targetColor[1] = 0;
      targetColor[2] = 255;
      break;
    case 2: // Синее → Красное
      targetColor[0] = 255;
      targetColor[1] = 0;
      targetColor[2] = 0;
      break;
  }

  // Пересчитываем дельты заново
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-27T15:48:16Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11784#p11784</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11783#p11783" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// Пин подключения светодиодов
#define R_PIN 9
#define G_PIN 10
#define B_PIN 11

// Константа для числа шагов
const int steps = 100;

// Массивы текущего и целевого цветов
int currentColor[] = {255, 0, 0};   // Начальный красный цвет
int targetColor[] = {0, 255, 0};    // Следующий зеленый цвет

// Дельты для плавного изменения
float deltaR, deltaG, deltaB;

// Время начала последнего шага
unsigned long lastStepTime = 0;

// Задержка между шагами в миллисекундах
const unsigned long stepDelay = 10;

// Отправляет цвет на вывод
void RGB(int R, int G, int B){
  analogWrite(R_PIN, R);
  analogWrite(G_PIN, G);
  analogWrite(B_PIN, B);
}

void setup() {
  pinMode(R_PIN, OUTPUT);  
  pinMode(G_PIN, OUTPUT);  
  pinMode(B_PIN, OUTPUT);  
  Serial.begin(9600);

  // Рассчитываем дельты заранее
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}

void loop() {
  unsigned long now = millis();

  // Проверяем, прошло ли достаточно времени для следующего шага
  if ((now - lastStepTime) &gt;= stepDelay) {
    // Обновляем текущее время
    lastStepTime = now;

    // Меняем цвета плавно
    currentColor[0] += deltaR;
    currentColor[1] += deltaG;
    currentColor[2] += deltaB;

    // Ограничиваем диапазон значений RGB от 0 до 255
    currentColor[0] = constrain(currentColor[0], 0, 255);
    currentColor[1] = constrain(currentColor[1], 0, 255);
    currentColor[2] = constrain(currentColor[2], 0, 255);

    // Устанавливаем новые значения
    RGB(currentColor[0], currentColor[1], currentColor[2]);

    // Проверяем, достигли ли мы целевого цвета
    bool reachedTarget = true;
    for (int i = 0; i &lt; 3; ++i) {
      if (abs(currentColor[i] - targetColor[i]) &gt; abs(deltaR + deltaG + deltaB)/3) {
        reachedTarget = false;
        break;
      }
    }
    
    // Если достигли целевого цвета — смена на следующий
    if (reachedTarget) {
      nextColorPhase(); // Переход к следующей фазе цветов
    }
  }
}

// Изменяет целевой цвет на следующем этапе
void nextColorPhase() {
  static int phase = 0; // Текущая фаза

  switch (phase % 3) { // Используем остаток от деления для циклического поведения
    case 0: // Красное → Зеленое
      targetColor[0] = 0;
      targetColor[1] = 255;
      targetColor[2] = 0;
      break;
    case 1: // Зеленое → Синее
      targetColor[0] = 0;
      targetColor[1] = 0;
      targetColor[2] = 255;
      break;
    case 2: // Синее → Красное
      targetColor[0] = 255;
      targetColor[1] = 0;
      targetColor[2] = 0;
      break;
  }

  phase++; // Простое увеличение фазы каждый раз

  // Пересчитываем дельты заново
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-27T15:07:09Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11783#p11783</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11779#p11779" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>// Пин подключения светодиодов
#define R_PIN 9
#define G_PIN 10
#define B_PIN 11

// Константа для числа шагов
const int steps = 100;

// Массивы текущего и целевого цветов
int currentColor[] = {255, 0, 0};   // Начальный красный цвет
int targetColor[] = {0, 255, 0};    // Следующий зеленый цвет

// Дельты для плавного изменения
float deltaR, deltaG, deltaB;

// Время начала последнего шага
unsigned long lastStepTime = 0;

// Задержка между шагами в миллисекундах
const unsigned long stepDelay = 10;

// Отправляет цвет на вывод
void RGB(int R, int G, int B){
  analogWrite(R_PIN, R);
  analogWrite(G_PIN, G);
  analogWrite(B_PIN, B);
}

void setup() {
  pinMode(R_PIN, OUTPUT);  
  pinMode(G_PIN, OUTPUT);  
  pinMode(B_PIN, OUTPUT);  
  Serial.begin(9600);

  // Рассчитываем дельты заранее
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}

void loop() {
  unsigned long now = millis();

  // Проверяем, прошло ли достаточно времени для следующего шага
  if ((now - lastStepTime) &gt;= stepDelay) {
    // Обновляем текущее время
    lastStepTime = now;

    // Меняем цвета плавно
    currentColor[0] += deltaR;
    currentColor[1] += deltaG;
    currentColor[2] += deltaB;

    // Устанавливаем новые значения
    RGB(currentColor[0], currentColor[1], currentColor[2]);

    // Проверяем, достигли ли мы целевого цвета
    bool reachedTarget = true;
    for (int i = 0; i &lt; 3; ++i) {
      if (abs(currentColor[i] - targetColor[i]) &gt; abs(deltaR)) {
        reachedTarget = false;
        break;
      }
    }
    
    // Если достигли целевого цвета — смена на следующий
    if (reachedTarget) {
      nextColorPhase(); // Переход к следующей фазе цветов
    }
  }
}

// Изменяет целевой цвет на следующем этапе
void nextColorPhase() {
  static int phase = 0; // Текущая фаза

  switch (phase) {
    case 0: // Красное → Зеленое
      targetColor[0] = 0;
      targetColor[1] = 255;
      targetColor[2] = 0;
      break;
    case 1: // Зеленое → Синее
      targetColor[0] = 0;
      targetColor[1] = 0;
      targetColor[2] = 255;
      break;
    default: // Синее → Красное
      targetColor[0] = 255;
      targetColor[1] = 0;
      targetColor[2] = 0;
      phase = -1; // Для цикличности
      break;
  }

  phase++;

  // Пересчитываем дельты заново
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-25T13:09:48Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11779#p11779</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11774#p11774" />
			<content type="html"><![CDATA[<p>millis()</p><div class="codebox"><pre><code>// Пин подключения светодиодов
#define R_PIN 9
#define G_PIN 10
#define B_PIN 11

// Константа для числа шагов
const int steps = 100;

// Массивы текущего и целевого цветов
int currentColor[] = {255, 0, 0};
int targetColor[] = {0, 255, 0};

// Дельты для плавного изменения
float deltaR, deltaG, deltaB;

// Время начала последнего шага
unsigned long lastStepTime = 0;

// Задержка между шагами в миллисекундах
const unsigned long stepDelay = 10;

// Отправляет цвет на вывод
void RGB(int R, int G, int B){
  analogWrite(R_PIN, R);
  analogWrite(G_PIN, G);
  analogWrite(B_PIN, B);
}

void setup() {
  pinMode(R_PIN, OUTPUT);  
  pinMode(G_PIN, OUTPUT);  
  pinMode(B_PIN, OUTPUT);  
  Serial.begin(9600);

  // Рассчитываем дельты заранее
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}

void loop() {
  unsigned long now = millis();

  // Проверяем, прошло ли достаточно времени для следующего шага
  if ((now - lastStepTime) &gt;= stepDelay) {
    // Обновляем текущее время
    lastStepTime = now;

    // Меняем цвета плавно
    currentColor[0] += deltaR;
    currentColor[1] += deltaG;
    currentColor[2] += deltaB;

    // Устанавливаем новые значения
    RGB(currentColor[0], currentColor[1], currentColor[2]);

    // Когда достигли цели, переходим к следующему этапу
    if (currentColor[0] &lt;= abs(deltaR)) {
      nextColorPhase(); // Переход к следующей фазе цветов
    }
  }
}

// Изменяет целевой цвет на следующем этапе
void nextColorPhase() {
  if (targetColor[0] &gt; 0 &amp;&amp; targetColor[1] == 0 &amp;&amp; targetColor[2] == 0) {
    targetColor[0] = 0;
    targetColor[1] = 255;
    targetColor[2] = 0; // Зеленый
  } else if (targetColor[0] == 0 &amp;&amp; targetColor[1] &gt; 0 &amp;&amp; targetColor[2] == 0) {
    targetColor[0] = 0;
    targetColor[1] = 0;
    targetColor[2] = 255; // Синий
  } else {
    targetColor[0] = 255;
    targetColor[1] = 0;
    targetColor[2] = 0; // Красный
  }

  // Пересчитываем дельты снова
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-17T15:02:51Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11774#p11774</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11773#p11773" />
			<content type="html"><![CDATA[<p>delay()</p><div class="codebox"><pre><code>// Пины управления RGB LED
#define R_PIN 9
#define G_PIN 10
#define B_PIN 11

// Функция установки цвета
void RGB(int R, int G, int B){
  analogWrite(R_PIN, R);
  analogWrite(G_PIN, G);
  analogWrite(B_PIN, B);
}

// Количество шагов для плавности перехода
const int steps = 100;

// Начальное состояние
int currentColor[] = {255, 0, 0}; // Красный
int targetColor[] = {0, 255, 0}; // Зелёный

// Шаги для перемещения цветов
float deltaR = float(targetColor[0] - currentColor[0]) / steps;
float deltaG = float(targetColor[1] - currentColor[1]) / steps;
float deltaB = float(targetColor[2] - currentColor[2]) / steps;

void setup() {
  pinMode(R_PIN, OUTPUT);  
  pinMode(G_PIN, OUTPUT);  
  pinMode(B_PIN, OUTPUT);  
  Serial.begin(9600);
}

void loop() {
  for (int i = 0; i &lt; steps; ++i) {
    // Постепенно меняем каждый канал
    currentColor[0] += deltaR;
    currentColor[1] += deltaG;
    currentColor[2] += deltaB;
    
    // Устанавливаем новый цвет
    RGB(currentColor[0], currentColor[1], currentColor[2]);
    
    delay(10); // Пауза между каждым шагом (~1 секунда полный переход)
  }

  // Перейти к следующему набору цветов
  if (targetColor[0] &gt; 0 &amp;&amp; targetColor[1] == 0 &amp;&amp; targetColor[2] == 0) {
      targetColor[0] = 0;
      targetColor[1] = 255;
      targetColor[2] = 0; // Следующий цвет зеленый
  } else if (targetColor[0] == 0 &amp;&amp; targetColor[1] &gt; 0 &amp;&amp; targetColor[2] == 0) {
      targetColor[0] = 0;
      targetColor[1] = 0;
      targetColor[2] = 255; // Затем синий
  } else {
      targetColor[0] = 255;
      targetColor[1] = 0;
      targetColor[2] = 0; // Возвращаемся к красному
  }

  // Пересчитываем дельту заново
  deltaR = float(targetColor[0] - currentColor[0]) / steps;
  deltaG = float(targetColor[1] - currentColor[1]) / steps;
  deltaB = float(targetColor[2] - currentColor[2]) / steps;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-17T14:24:58Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11773#p11773</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11737#p11737" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#define LCD_CS    2
#define LCD_WR    3
#define LCD_DATA  4

#define R_PIN 9
#define G_PIN 10
#define B_PIN 11

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[9], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt,dp,usb,disk,eon,bass,dw1,dw2;
int xxx;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  pinMode(R_PIN, OUTPUT);
  pinMode(G_PIN, OUTPUT);
  pinMode(B_PIN, OUTPUT);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  analogWrite(R_PIN, 100);
  analogWrite(G_PIN, 100);
  analogWrite(B_PIN, 100);
  xxx++;
  segm(0);hhh(0);
  segm(0);hhh(1);
  segm(0);hhh(2);
  segm(0);hhh(3);
  segm(0);hhh(4);
  segm(0);hhh(5);
  segm(0);hhh(6);
  segm(0);hhh(7);
  segm(xxx);hhh(8);
  if(xxx&gt;9){xxx=0;}
  write_seg();

Serial.println(a[0]);
Serial.println(a[1]);
Serial.println(a[2]);
  
  delay(1000);
  }

void write_seg(){
  lcd_write(0,  k[0]&lt;&lt;0 | c[0]&lt;&lt;1 | j[0]&lt;&lt;2 | b[0]&lt;&lt;3 | g2[0]&lt;&lt;4 | ta&lt;&lt;5 | tp&lt;&lt;6 | af&lt;&lt;7);
  lcd_write(2,  m[0]&lt;&lt;0 | e[0]&lt;&lt;1 | h[0]&lt;&lt;2 | f[0]&lt;&lt;3 | d[0]&lt;&lt;4 | g1[0]&lt;&lt;5 | i[0]&lt;&lt;6| a[0]&lt;&lt;7);

  lcd_write(4,  d[1]&lt;&lt;0 | g1[1]&lt;&lt;1 | i[1]&lt;&lt;2 | a[1]&lt;&lt;3 | k[1]&lt;&lt;4 | c[1]&lt;&lt;5 | j[1]&lt;&lt;6 | b[1]&lt;&lt;7);
  lcd_write(6,  g2[2]&lt;&lt;0 | g2[1]&lt;&lt;1 | dp&lt;&lt;2 | bt&lt;&lt;3 | m[1]&lt;&lt;4 | e[1]&lt;&lt;5 | h[1]&lt;&lt;6 | f[1]&lt;&lt;7);

  lcd_write(8,  g2[6]&lt;&lt;0 | g2[5]&lt;&lt;1 | eon&lt;&lt;2 | bass&lt;&lt;3 | k[6]&lt;&lt;4 | c[6]&lt;&lt;5 | j[6]&lt;&lt;6 | b[6]&lt;&lt;7);
  lcd_write(10, d[5]&lt;&lt;0 | g1[5]&lt;&lt;1 | i[5]&lt;&lt;2 | a[5]&lt;&lt;3 | m[5]&lt;&lt;4 | e[5]&lt;&lt;5 | h[5]&lt;&lt;6 | f[5]&lt;&lt;7);

  lcd_write(12, m[4]&lt;&lt;0 | e[4]&lt;&lt;1 | h[4]&lt;&lt;2 | f[4]&lt;&lt;3 | k[5]&lt;&lt;4 | c[5]&lt;&lt;5 | j[5]&lt;&lt;6 | b[5]&lt;&lt;7);
  lcd_write(14, k[4]&lt;&lt;0 | c[4]&lt;&lt;1 | j[4]&lt;&lt;2 | b[4]&lt;&lt;3 | d[4]&lt;&lt;4 | g1[4]&lt;&lt;5 | i[4]&lt;&lt;6 | a[4]&lt;&lt;7);

  lcd_write(16, m[3]&lt;&lt;0 | e[3]&lt;&lt;1 | h[3]&lt;&lt;2 | f[3]&lt;&lt;3 | g2[4]&lt;&lt;4 | g2[3]&lt;&lt;5 | dw2&lt;&lt;6 | dw1&lt;&lt;7);
  lcd_write(18, k[3]&lt;&lt;0 | c[3]&lt;&lt;1 | j[3]&lt;&lt;2 | b[3]&lt;&lt;3 | d[3]&lt;&lt;4 | g1[3]&lt;&lt;5 | i[3]&lt;&lt;6 | a[3]&lt;&lt;7);

  lcd_write(20, d[2]&lt;&lt;0 | g1[2]&lt;&lt;1 | i[2]&lt;&lt;2 | a[2]&lt;&lt;3 | m[2]&lt;&lt;4 | e[2]&lt;&lt;5 | h[2]&lt;&lt;6 | f[2]&lt;&lt;7);
  lcd_write(22, d[6]&lt;&lt;0 | g1[6]&lt;&lt;1 | i[6]&lt;&lt;2 | a[6]&lt;&lt;3 | k[2]&lt;&lt;4 | c[2]&lt;&lt;5 | j[2]&lt;&lt;6 | b[2]&lt;&lt;7);

  lcd_write(24, k[7]&lt;&lt;0 | c[7]&lt;&lt;1 | j[7]&lt;&lt;2 | b[7]&lt;&lt;3 | m[6]&lt;&lt;4 | e[6]&lt;&lt;5 | h[6]&lt;&lt;6 | f[6]&lt;&lt;7);
  lcd_write(26, m[7]&lt;&lt;0 | e[7]&lt;&lt;1 | h[7]&lt;&lt;2 | f[7]&lt;&lt;3 | d[7]&lt;&lt;4 | g1[7]&lt;&lt;5 | i[7]&lt;&lt;6 | a[7]&lt;&lt;7);
  
  lcd_write(28, k[8]&lt;&lt;0 | c[8]&lt;&lt;1 | j[8]&lt;&lt;2 | b[8]&lt;&lt;3 | g2[8]&lt;&lt;4 | g2[7]&lt;&lt;5 | usb&lt;&lt;6 | disk&lt;&lt;7);
  lcd_write(30, m[8]&lt;&lt;0 | e[8]&lt;&lt;1 | h[8]&lt;&lt;2 | f[8]&lt;&lt;3 | d[8]&lt;&lt;4 | g1[8]&lt;&lt;5 | i[8]&lt;&lt;6 | a[8]&lt;&lt;7);


  

  // lcd_write(10, 777&lt;&lt;0 | 666&lt;&lt;1 | 555&lt;&lt;2 | 444&lt;&lt;3 |   333&lt;&lt;4 |   222&lt;&lt;5 |   111&lt;&lt;6 | 000&lt;&lt;7);
  }  

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1;break;//0
    case 1: seg_b=1,seg_c=1;break;                                                                                          //1
    case 2: seg_a=1,seg_b=1,seg_d=1,seg_e=1,seg_g1=1,seg_g2=1;break;                                                        //2
    case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_g1=1,seg_g2=1;break;                                                        //3
    case 4: seg_b=1,seg_c=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                                //4
    case 5: seg_a=1,seg_c=1,seg_d=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                        //5
    case 6: seg_a=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                //6
    case 7: seg_a=1,seg_b=1,seg_c=1;break;                                                                                  //7
    case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                        //8
    case 9: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                //9
    }
  }  

void eng(int ENG){
switch(ENG){
  case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//A-0
  case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//B-1
  case 2: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//C-2
  case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//D-3
  case 4: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//E-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//F-5
  case 6: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//G-6
  case 7: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//H-7
  case 8: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//I-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//J-9
  case 10: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//K-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//L-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//M-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=1;break;//N-13
  case 14: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//O-14
  case 15: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//P-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=1;break;//Q-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=1;break;//R-17
  case 18: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//S-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//T-19
  case 20: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//U-20
  case 21: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//V-21
  case 22: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//W-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//X-23
  case 24: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Y-24
  case 25: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Z-25
  }
}
void rus(int RUS){
switch(RUS){case 0: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=1,seg_m=1,seg_k=0;break;//А-0
  case 1: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Б-1
  case 2: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//В-2
  case 3: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Г-3
  case 4: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Д-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Е-5
  case 6: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ё-6
  case 7: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=1,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Ж-7
  case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//З-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//И-9
  case 10: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Й-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//К-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Л-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//М-13
  case 14: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Н-14
  case 15: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//О-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//П-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Р-17
  case 18: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//С-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Т-19
  case 20: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//У-20
  case 21: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ф-21
  case 22: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Х-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ц-23
  case 24: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ч-24
  case 25: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ш-25
  case 26: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Щ-26
  case 27: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ъ-27
  case 28: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//Ы-28
  case 29: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ь-29
  case 30: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Э-30
  case 31: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//Ю-31
  case 32: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Я-32
}}

void animation(int ani){//полоски анимации
switch(ani){
  case 0: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//ВЕРХНЯЯ ПОЛОСА
case 1: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//СРЕДНЯЯ ПОЛОСА
case 2: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//НИЖНЯЯ ПОЛОСА
}
}
void animationinmenu(int ani2){//шаги анимации входа в меню
switch(ani2){
  case 0: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//горизонтальная левая полоса
case 1: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//горизонтальная левая полоса+левые боковинки
case 2: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горизонтальная левая полоса+левые боковинки+центр+низ+правые боковинки
case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
}
}
void animationoutmenu(int ani3){//шаги анимации выхода из меню
switch(ani3){
  case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
  case 1: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горизонтальная левая полоса+левые боковинки+центр+низ+правые боковинки 
  case 2: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//горизонтальная левая полоса+левые боковинки
  case 3: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//горизонтальная левая полоса
}
}
void spectrum(int spec){//спектр цастот
switch(spec){
  case 0: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//нижняя полоса
  case 1: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;
  case 2: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;
  case 3: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;
  case 4: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
}
}  

void clear_lcd(){for(int a=0;a&lt;=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ &gt;&gt; 4);data_101(addr_+1,data_ &amp;0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i &lt;=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-09T13:20:03Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11737#p11737</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11736#p11736" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#define R_PIN 9
#define G_PIN 10
#define B_PIN 11
void setup() {
  pinMode(R_PIN, OUTPUT);
  pinMode(G_PIN, OUTPUT);
  pinMode(B_PIN, OUTPUT);
  // работаем с общим анодом
  // цвет бирюзовый не на всю яркость
  
}
void loop() {
analogWrite(R_PIN, 100);
  analogWrite(G_PIN, 100);
  analogWrite(B_PIN, 100);
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[vladbuharkin20]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2352</uri>
			</author>
			<updated>2025-04-09T12:17:53Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11736#p11736</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11735#p11735" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[9], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt,dp,usb,disk,eon,bass,dw1,dw2;
int xxx;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  xxx++;
  segm(0);hhh(0);
  segm(0);hhh(1);
  segm(0);hhh(2);
  segm(0);hhh(3);
  segm(0);hhh(4);
  segm(0);hhh(5);
  segm(0);hhh(6);
  segm(0);hhh(7);
  segm(xxx);hhh(8);
  if(xxx&gt;9){xxx=0;}
  write_seg();

Serial.println(a[0]);
Serial.println(a[1]);
Serial.println(a[2]);
  
  delay(1000);
  }

void write_seg(){
  lcd_write(0,  k[0]&lt;&lt;0 | c[0]&lt;&lt;1 | j[0]&lt;&lt;2 | b[0]&lt;&lt;3 | g2[0]&lt;&lt;4 | ta&lt;&lt;5 | tp&lt;&lt;6 | af&lt;&lt;7);
  lcd_write(2,  m[0]&lt;&lt;0 | e[0]&lt;&lt;1 | h[0]&lt;&lt;2 | f[0]&lt;&lt;3 | d[0]&lt;&lt;4 | g1[0]&lt;&lt;5 | i[0]&lt;&lt;6| a[0]&lt;&lt;7);

  lcd_write(4,  d[1]&lt;&lt;0 | g1[1]&lt;&lt;1 | i[1]&lt;&lt;2 | a[1]&lt;&lt;3 | k[1]&lt;&lt;4 | c[1]&lt;&lt;5 | j[1]&lt;&lt;6 | b[1]&lt;&lt;7);
  lcd_write(6,  g2[2]&lt;&lt;0 | g2[1]&lt;&lt;1 | dp&lt;&lt;2 | bt&lt;&lt;3 | m[1]&lt;&lt;4 | e[1]&lt;&lt;5 | h[1]&lt;&lt;6 | f[1]&lt;&lt;7);

  lcd_write(8,  g2[6]&lt;&lt;0 | g2[5]&lt;&lt;1 | eon&lt;&lt;2 | bass&lt;&lt;3 | k[6]&lt;&lt;4 | c[6]&lt;&lt;5 | j[6]&lt;&lt;6 | b[6]&lt;&lt;7);
  lcd_write(10, d[5]&lt;&lt;0 | g1[5]&lt;&lt;1 | i[5]&lt;&lt;2 | a[5]&lt;&lt;3 | m[5]&lt;&lt;4 | e[5]&lt;&lt;5 | h[5]&lt;&lt;6 | f[5]&lt;&lt;7);

  lcd_write(12, m[4]&lt;&lt;0 | e[4]&lt;&lt;1 | h[4]&lt;&lt;2 | f[4]&lt;&lt;3 | k[5]&lt;&lt;4 | c[5]&lt;&lt;5 | j[5]&lt;&lt;6 | b[5]&lt;&lt;7);
  lcd_write(14, k[4]&lt;&lt;0 | c[4]&lt;&lt;1 | j[4]&lt;&lt;2 | b[4]&lt;&lt;3 | d[4]&lt;&lt;4 | g1[4]&lt;&lt;5 | i[4]&lt;&lt;6 | a[4]&lt;&lt;7);

  lcd_write(16, m[3]&lt;&lt;0 | e[3]&lt;&lt;1 | h[3]&lt;&lt;2 | f[3]&lt;&lt;3 | g2[4]&lt;&lt;4 | g2[3]&lt;&lt;5 | dw2&lt;&lt;6 | dw1&lt;&lt;7);
  lcd_write(18, k[3]&lt;&lt;0 | c[3]&lt;&lt;1 | j[3]&lt;&lt;2 | b[3]&lt;&lt;3 | d[3]&lt;&lt;4 | g1[3]&lt;&lt;5 | i[3]&lt;&lt;6 | a[3]&lt;&lt;7);

  lcd_write(20, d[2]&lt;&lt;0 | g1[2]&lt;&lt;1 | i[2]&lt;&lt;2 | a[2]&lt;&lt;3 | m[2]&lt;&lt;4 | e[2]&lt;&lt;5 | h[2]&lt;&lt;6 | f[2]&lt;&lt;7);
  lcd_write(22, d[6]&lt;&lt;0 | g1[6]&lt;&lt;1 | i[6]&lt;&lt;2 | a[6]&lt;&lt;3 | k[2]&lt;&lt;4 | c[2]&lt;&lt;5 | j[2]&lt;&lt;6 | b[2]&lt;&lt;7);

  lcd_write(24, k[7]&lt;&lt;0 | c[7]&lt;&lt;1 | j[7]&lt;&lt;2 | b[7]&lt;&lt;3 | m[6]&lt;&lt;4 | e[6]&lt;&lt;5 | h[6]&lt;&lt;6 | f[6]&lt;&lt;7);
  lcd_write(26, m[7]&lt;&lt;0 | e[7]&lt;&lt;1 | h[7]&lt;&lt;2 | f[7]&lt;&lt;3 | d[7]&lt;&lt;4 | g1[7]&lt;&lt;5 | i[7]&lt;&lt;6 | a[7]&lt;&lt;7);
  
  lcd_write(28, k[8]&lt;&lt;0 | c[8]&lt;&lt;1 | j[8]&lt;&lt;2 | b[8]&lt;&lt;3 | g2[8]&lt;&lt;4 | g2[7]&lt;&lt;5 | usb&lt;&lt;6 | disk&lt;&lt;7);
  lcd_write(30, m[8]&lt;&lt;0 | e[8]&lt;&lt;1 | h[8]&lt;&lt;2 | f[8]&lt;&lt;3 | d[8]&lt;&lt;4 | g1[8]&lt;&lt;5 | i[8]&lt;&lt;6 | a[8]&lt;&lt;7);


  

  // lcd_write(10, 777&lt;&lt;0 | 666&lt;&lt;1 | 555&lt;&lt;2 | 444&lt;&lt;3 |   333&lt;&lt;4 |   222&lt;&lt;5 |   111&lt;&lt;6 | 000&lt;&lt;7);
  }  

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1;break;//0
    case 1: seg_b=1,seg_c=1;break;                                                                                          //1
    case 2: seg_a=1,seg_b=1,seg_d=1,seg_e=1,seg_g1=1,seg_g2=1;break;                                                        //2
    case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_g1=1,seg_g2=1;break;                                                        //3
    case 4: seg_b=1,seg_c=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                                //4
    case 5: seg_a=1,seg_c=1,seg_d=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                        //5
    case 6: seg_a=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                //6
    case 7: seg_a=1,seg_b=1,seg_c=1;break;                                                                                  //7
    case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                        //8
    case 9: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                //9
    }
  }  

void eng(int ENG){
switch(ENG){
  case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//A-0
  case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//B-1
  case 2: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//C-2
  case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//D-3
  case 4: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//E-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//F-5
  case 6: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//G-6
  case 7: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//H-7
  case 8: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//I-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//J-9
  case 10: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//K-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//L-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//M-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=1;break;//N-13
  case 14: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//O-14
  case 15: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//P-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=1;break;//Q-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=1;break;//R-17
  case 18: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//S-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//T-19
  case 20: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//U-20
  case 21: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//V-21
  case 22: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//W-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//X-23
  case 24: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Y-24
  case 25: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Z-25
  }
}
void rus(int RUS){
switch(RUS){case 0: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=1,seg_m=1,seg_k=0;break;//А-0
  case 1: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Б-1
  case 2: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//В-2
  case 3: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Г-3
  case 4: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Д-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Е-5
  case 6: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ё-6
  case 7: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=1,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Ж-7
  case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//З-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//И-9
  case 10: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Й-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//К-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Л-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//М-13
  case 14: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Н-14
  case 15: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//О-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//П-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Р-17
  case 18: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//С-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Т-19
  case 20: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//У-20
  case 21: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ф-21
  case 22: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Х-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ц-23
  case 24: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ч-24
  case 25: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ш-25
  case 26: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Щ-26
  case 27: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ъ-27
  case 28: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//Ы-28
  case 29: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ь-29
  case 30: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Э-30
  case 31: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//Ю-31
  case 32: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Я-32
}}

void animation(int ani){//полоски анимации
switch(ani){
  case 0: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//ВЕРХНЯЯ ПОЛОСА
case 1: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//СРЕДНЯЯ ПОЛОСА
case 2: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//НИЖНЯЯ ПОЛОСА
}
}
void animationinmenu(int ani2){//шаги анимации входа в меню
switch(ani2){
  case 0: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//горизонтальная левая полоса
case 1: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//горизонтальная левая полоса+левые боковинки
case 2: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горизонтальная левая полоса+левые боковинки+центр+низ+правые боковинки
case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
}
}
void animationoutmenu(int ani3){//шаги анимации выхода из меню
switch(ani3){
  case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
  case 1: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горизонтальная левая полоса+левые боковинки+центр+низ+правые боковинки 
  case 2: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//горизонтальная левая полоса+левые боковинки
  case 3: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//горизонтальная левая полоса
}
}
void spectrum(int spec){//спектр цастот
switch(spec){
  case 0: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//нижняя полоса
  case 1: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;
  case 2: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;
  case 3: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;
  case 4: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
}
}  

void clear_lcd(){for(int a=0;a&lt;=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ &gt;&gt; 4);data_101(addr_+1,data_ &amp;0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i &lt;=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-09T12:01:49Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11735#p11735</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11734#p11734" />
			<content type="html"><![CDATA[<p>коректировки в русском шрифте</p><div class="codebox"><pre><code>void rus(int RUS){
switch(RUS){case 0: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=1,seg_m=1,seg_k=0;break;//А-0
  case 1: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Б-1
  case 2: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//В-2
  case 3: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Г-3
  case 4: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Д-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Е-5
  case 6: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ё-6
  case 7: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=1,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Ж-7
  case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//З-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//И-9
  case 10: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Й-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//К-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Л-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//М-13
  case 14: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Н-14
  case 15: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//О-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//П-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Р-17
  case 18: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//С-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Т-19
  case 20: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//У-20
  case 21: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ф-21
  case 22: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Х-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ц-23
  case 24: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ч-24
  case 25: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ш-25
  case 26: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Щ-26
  case 27: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ъ-27
  case 28: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//Ы-28
  case 29: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ь-29
  case 30: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Э-30
  case 31: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//Ю-31
  case 32: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Я-32
}}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[vladbuharkin20]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2352</uri>
			</author>
			<updated>2025-04-08T21:43:42Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11734#p11734</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11732#p11732" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[9], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt,dp,usb,disk,eon,bass,dw1,dw2;
int xxx;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  xxx++;
  segm(0);hhh(0);
  segm(0);hhh(1);
  segm(0);hhh(2);
  segm(0);hhh(3);
  segm(0);hhh(4);
  segm(0);hhh(5);
  segm(0);hhh(6);
  segm(0);hhh(7);
  segm(xxx);hhh(8);
  if(xxx&gt;9){xxx=0;}
  write_seg();

Serial.println(a[0]);
Serial.println(a[1]);
Serial.println(a[2]);
  
  delay(1000);
  }

void write_seg(){
  lcd_write(0,  k[0]&lt;&lt;0 | c[0]&lt;&lt;1 | i[0]&lt;&lt;2 | b[0]&lt;&lt;3 | g2[0]&lt;&lt;4 | ta&lt;&lt;5 | tp&lt;&lt;6 | af&lt;&lt;7);
  lcd_write(2,  m[0]&lt;&lt;0 | e[0]&lt;&lt;1 | h[0]&lt;&lt;2 | f[0]&lt;&lt;3 | d[0]&lt;&lt;4 | g1[0]&lt;&lt;5 | i[0]&lt;&lt;6| a[0]&lt;&lt;7);

  lcd_write(4,  d[1]&lt;&lt;0 | g1[1]&lt;&lt;1 | i[1]&lt;&lt;2 | a[1]&lt;&lt;3 | k[1]&lt;&lt;4 | c[1]&lt;&lt;5 | j[1]&lt;&lt;6 | b[1]&lt;&lt;7);
  lcd_write(6,  g2[2]&lt;&lt;0 | g2[1]&lt;&lt;1 | dp&lt;&lt;2 | bt&lt;&lt;3 | m[1]&lt;&lt;4 | e[1]&lt;&lt;5 | h[1]&lt;&lt;6 | f[1]&lt;&lt;7);

  lcd_write(8,  g2[6]&lt;&lt;0 | g2[5]&lt;&lt;1 | eon&lt;&lt;2 | bass&lt;&lt;3 | k[6]&lt;&lt;4 | c[6]&lt;&lt;5 | j[6]&lt;&lt;6 | b[6]&lt;&lt;7);
  lcd_write(10, d[5]&lt;&lt;0 | g1[5]&lt;&lt;1 | i[5]&lt;&lt;2 | a[5]&lt;&lt;3 | m[5]&lt;&lt;4 | e[5]&lt;&lt;5 | h[5]&lt;&lt;6 | f[5]&lt;&lt;7);

  lcd_write(12, m[4]&lt;&lt;0 | e[4]&lt;&lt;1 | h[4]&lt;&lt;2 | f[4]&lt;&lt;3 | k[5]&lt;&lt;4 | c[5]&lt;&lt;5 | j[5]&lt;&lt;6 | b[5]&lt;&lt;7);
  lcd_write(14, k[4]&lt;&lt;0 | c[4]&lt;&lt;1 | j[4]&lt;&lt;2 | b[4]&lt;&lt;3 | d[4]&lt;&lt;4 | g1[4]&lt;&lt;5 | i[4]&lt;&lt;6 | a[4]&lt;&lt;7);

  lcd_write(16, m[3]&lt;&lt;0 | e[3]&lt;&lt;1 | h[3]&lt;&lt;2 | f[3]&lt;&lt;3 | g2[4]&lt;&lt;4 | g2[3]&lt;&lt;5 | dw2&lt;&lt;6 | dw1&lt;&lt;7);
  lcd_write(18, k[3]&lt;&lt;0 | c[3]&lt;&lt;1 | j[3]&lt;&lt;2 | b[3]&lt;&lt;3 | d[3]&lt;&lt;4 | g1[3]&lt;&lt;5 | i[3]&lt;&lt;6 | a[3]&lt;&lt;7);

  lcd_write(20, d[2]&lt;&lt;0 | g1[2]&lt;&lt;1 | i[2]&lt;&lt;2 | a[2]&lt;&lt;3 | m[2]&lt;&lt;4 | e[2]&lt;&lt;5 | h[2]&lt;&lt;6 | f[2]&lt;&lt;7);
  lcd_write(22, d[6]&lt;&lt;0 | g1[6]&lt;&lt;1 | i[6]&lt;&lt;2 | a[6]&lt;&lt;3 | k[2]&lt;&lt;4 | c[2]&lt;&lt;5 | j[2]&lt;&lt;6 | b[2]&lt;&lt;7);

  lcd_write(24, k[7]&lt;&lt;0 | c[7]&lt;&lt;1 | j[7]&lt;&lt;2 | b[7]&lt;&lt;3 | m[6]&lt;&lt;4 | e[6]&lt;&lt;5 | h[6]&lt;&lt;6 | f[6]&lt;&lt;7);
  lcd_write(26, m[7]&lt;&lt;0 | e[7]&lt;&lt;1 | h[7]&lt;&lt;2 | f[7]&lt;&lt;3 | d[7]&lt;&lt;4 | g1[7]&lt;&lt;5 | i[7]&lt;&lt;6 | a[7]&lt;&lt;7);
  
  lcd_write(28, k[8]&lt;&lt;0 | c[8]&lt;&lt;1 | j[8]&lt;&lt;2 | b[8]&lt;&lt;3 | g2[8]&lt;&lt;4 | g2[7]&lt;&lt;5 | usb&lt;&lt;6 | disk&lt;&lt;7);
  lcd_write(30, m[8]&lt;&lt;0 | e[8]&lt;&lt;1 | h[8]&lt;&lt;2 | f[8]&lt;&lt;3 | d[8]&lt;&lt;4 | g1[8]&lt;&lt;5 | i[8]&lt;&lt;6 | a[8]&lt;&lt;7);


  

  // lcd_write(10, 777&lt;&lt;0 | 666&lt;&lt;1 | 555&lt;&lt;2 | 444&lt;&lt;3 |   333&lt;&lt;4 |   222&lt;&lt;5 |   111&lt;&lt;6 | 000&lt;&lt;7);
  }  

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1;break;//0
    case 1: seg_b=1,seg_c=1;break;                                                                                          //1
    case 2: seg_a=1,seg_b=1,seg_d=1,seg_e=1,seg_g1=1,seg_g2=1;break;                                                        //2
    case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_g1=1,seg_g2=1;break;                                                        //3
    case 4: seg_b=1,seg_c=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                                //4
    case 5: seg_a=1,seg_c=1,seg_d=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                        //5
    case 6: seg_a=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                //6
    case 7: seg_a=1,seg_b=1,seg_c=1;break;                                                                                  //7
    case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                        //8
    case 9: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                //9
    }
  }  

void eng(int ENG){
switch(ENG){
  case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//A-0
  case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//B-1
  case 2: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//C-2
  case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//D-3
  case 4: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//E-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//F-5
  case 6: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//G-6
  case 7: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//H-7
  case 8: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//I-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//J-9
  case 10: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//K-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//L-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//M-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=1;break;//N-13
  case 14: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//O-14
  case 15: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//P-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=1;break;//Q-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=1;break;//R-17
  case 18: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//S-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//T-19
  case 20: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//U-20
  case 21: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//V-21
  case 22: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//W-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//X-23
  case 24: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Y-24
  case 25: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Z-25
  }
}
void rus(int RUS){
switch(RUS){
  case 0: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=1,seg_m=1,seg_k=0;break;//А-0
  case 1: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Б-1
  case 2: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//В-2
  case 3: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Г-3
  case 4: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Д-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Е-5
  case 6: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ё-6
  case 7: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=1,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Ж-7
  case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//З-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//И-9
  case 10: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Й-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//К-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Л-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//М-13
  case 14: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Н-14
  case 15: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//О-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//П-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Р-17
  case 18: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//С-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Т-19
  case 20: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//У-20
  case 21: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ф-21
  case 22: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=1,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Х-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ц-23
  case 24: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ч-24
  case 25: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ш-25
  case 26: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Щ-26
  case 27: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ъ-27
  case 28: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//Ы-28
  case 29: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ь-29
  case 30: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Э-30
  case 31: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//Ю-31
  case 32: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Я-32
}
}
void animation(int ani){//полоски анимации
switch(ani){
  case 0: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//ВЕРХНЯЯ ПОЛОСА
case 1: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//СРЕДНЯЯ ПОЛОСА
case 2: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//НИЖНЯЯ ПОЛОСА
}
}
void animationinmenu(int ani2){//шаги анимации входа в меню
switch(ani2){
  case 0: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//горизонтальная левая полоса
case 1: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//горизонтальная левая полоса+левые боковинки
case 2: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горизонтальная левая полоса+левые боковинки+центр+низ+правые боковинки
case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
}
}
void animationoutmenu(int ani3){//шаги анимации выхода из меню
switch(ani3){
  case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
  case 1: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горизонтальная левая полоса+левые боковинки+центр+низ+правые боковинки 
  case 2: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//горизонтальная левая полоса+левые боковинки
  case 3: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//горизонтальная левая полоса
}
}
void spectrum(int spec){//спектр цастот
switch(spec){
  case 0: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//нижняя полоса
  case 1: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;
  case 2: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;
  case 3: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;
  case 4: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
}
}  

void clear_lcd(){for(int a=0;a&lt;=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ &gt;&gt; 4);data_101(addr_+1,data_ &amp;0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i &lt;=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-07T12:54:45Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11732#p11732</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Управление панелькой от магнитолы aura с драйвером ht1621]]></title>
			<link rel="alternate" href="http://forum.rcl-radio.ru/viewtopic.php?pid=11731#p11731" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>#define LCD_CS    13
#define LCD_WR    12
#define LCD_DATA  10

#define HT1621_BIAS                 0x52                    // 1/3duty 4com
#define HT1621_SYS_DIS              0x00                    // Turn off the oscillator system oscillator and LCD bias generator
#define HT1621_SYS_EN               0x02                    // Turn on the system oscillator
#define HT1621_LCD_OFF              0x04                    // Turn off LCD bias
#define HT1621_LCD_ON               0x06                    // Turn on the LCE bias
#define HT1621_XTAL                 0x28                    // external clock
#define HT1621_RC256                0x30                    // internal clock

bool a[9], b[9], c[9], d[9], e[9], f[9], h[9], i[9], j[9], g1[9], g2[9], m[9], k[9];
bool seg_a,seg_b,seg_c,seg_d,seg_e,seg_f,seg_h,seg_i,seg_j,seg_g1,seg_g2,seg_m,seg_k;
bool af,tp,ta,bt,dp,usb,disk,eon,bass,dw1,dw2;
int xxx;

void setup() {
  Serial.begin(9600);
  pinMode(LCD_CS, OUTPUT);
  pinMode(LCD_WR, OUTPUT);
  pinMode(LCD_DATA, OUTPUT);
  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  data_100(HT1621_SYS_EN); // Turn on the system oscillator
  data_100(HT1621_BIAS);   // BIAS 13 4 public ports
  data_100(HT1621_RC256);  // Use RC_256K system clock source, on-chip RC oscillator
  data_100(HT1621_LCD_ON);
  clear_lcd();
}

void loop(){
  xxx++;
  segm(0);hhh(0);
  segm(0);hhh(1);
  segm(0);hhh(2);
  segm(0);hhh(3);
  segm(0);hhh(4);
  segm(0);hhh(5);
  segm(0);hhh(6);
  segm(0);hhh(7);
  segm(xxx);hhh(8);
  if(xxx&gt;9){xxx=0;}
  write_seg();

Serial.println(a[0]);
Serial.println(a[1]);
Serial.println(a[2]);
  
  delay(1000);
  }

void write_seg(){
  lcd_write(0,  k[0]&lt;&lt;0 | c[0]&lt;&lt;1 | i[0]&lt;&lt;2 | b[0]&lt;&lt;3 | g2[0]&lt;&lt;4 | ta&lt;&lt;5 | tp&lt;&lt;6 | af&lt;&lt;7);
  lcd_write(2,  m[0]&lt;&lt;0 | e[0]&lt;&lt;1 | h[0]&lt;&lt;2 | f[0]&lt;&lt;3 | d[0]&lt;&lt;4 | g1[0]&lt;&lt;5 | i[0]&lt;&lt;6| a[0]&lt;&lt;7);

  lcd_write(4,  d[1]&lt;&lt;0 | g1[1]&lt;&lt;1 | i[1]&lt;&lt;2 | a[1]&lt;&lt;3 | k[1]&lt;&lt;4 | c[1]&lt;&lt;5 | j[1]&lt;&lt;6 | b[1]&lt;&lt;7);
  lcd_write(6,  g2[2]&lt;&lt;0 | g2[1]&lt;&lt;1 | dp&lt;&lt;2 | bt&lt;&lt;3 | m[1]&lt;&lt;4 | e[1]&lt;&lt;5 | h[1]&lt;&lt;6 | f[1]&lt;&lt;7);

  lcd_write(8,  g2[6]&lt;&lt;0 | g2[5]&lt;&lt;1 | eon&lt;&lt;2 | bass&lt;&lt;3 | k[6]&lt;&lt;4 | c[6]&lt;&lt;5 | j[6]&lt;&lt;6 | b[6]&lt;&lt;7);
  lcd_write(10, d[5]&lt;&lt;0 | g1[5]&lt;&lt;1 | i[5]&lt;&lt;2 | a[5]&lt;&lt;3 | m[5]&lt;&lt;4 | e[5]&lt;&lt;5 | h[5]&lt;&lt;6 | f[5]&lt;&lt;7);

  lcd_write(12, m[4]&lt;&lt;0 | e[4]&lt;&lt;1 | h[4]&lt;&lt;2 | f[4]&lt;&lt;3 | k[5]&lt;&lt;4 | c[5]&lt;&lt;5 | j[5]&lt;&lt;6 | b[5]&lt;&lt;7);
  lcd_write(14, k[4]&lt;&lt;0 | c[4]&lt;&lt;1 | j[4]&lt;&lt;2 | b[4]&lt;&lt;3 | d[4]&lt;&lt;4 | g1[4]&lt;&lt;5 | i[4]&lt;&lt;6 | a[4]&lt;&lt;7);

  lcd_write(16, m[3]&lt;&lt;0 | e[3]&lt;&lt;1 | h[3]&lt;&lt;2 | f[3]&lt;&lt;3 | g2[4]&lt;&lt;4 | g2[3]&lt;&lt;5 | dw2&lt;&lt;6 | dw1&lt;&lt;7);
  lcd_write(18, k[3]&lt;&lt;0 | c[3]&lt;&lt;1 | j[3]&lt;&lt;2 | b[3]&lt;&lt;3 | d[3]&lt;&lt;4 | g1[3]&lt;&lt;5 | i[3]&lt;&lt;6 | a[3]&lt;&lt;7);

  lcd_write(20, d[2]&lt;&lt;0 | g1[2]&lt;&lt;1 | i[2]&lt;&lt;2 | a[2]&lt;&lt;3 | m[2]&lt;&lt;4 | e[2]&lt;&lt;5 | h[2]&lt;&lt;6 | f[2]&lt;&lt;7);
  lcd_write(22, d[7]&lt;&lt;0 | g1[6]&lt;&lt;1 | i[6]&lt;&lt;2 | a[6]&lt;&lt;3 | k[2]&lt;&lt;4 | c[2]&lt;&lt;5 | j[2]&lt;&lt;6 | b[2]&lt;&lt;7);

  lcd_write(24, k[7]&lt;&lt;0 | c[7]&lt;&lt;1 | j[7]&lt;&lt;2 | b[7]&lt;&lt;3 | m[6]&lt;&lt;4 | e[6]&lt;&lt;5 | h[6]&lt;&lt;6 | f[6]&lt;&lt;7);
  lcd_write(26, m[7]&lt;&lt;0 | e[7]&lt;&lt;1 | h[7]&lt;&lt;2 | f[7]&lt;&lt;3 | d[7]&lt;&lt;4 | g1[7]&lt;&lt;5 | i[7]&lt;&lt;6 | a[7]&lt;&lt;7);
  
  lcd_write(28, k[8]&lt;&lt;0 | c[8]&lt;&lt;1 | j[8]&lt;&lt;2 | b[8]&lt;&lt;3 | g2[8]&lt;&lt;4 | g2[7]&lt;&lt;5 | usb&lt;&lt;6 | disk&lt;&lt;7);
  lcd_write(30, m[8]&lt;&lt;0 | e[8]&lt;&lt;1 | h[8]&lt;&lt;2 | f[8]&lt;&lt;3 | d[8]&lt;&lt;4 | g1[8]&lt;&lt;5 | i[8]&lt;&lt;6 | a[8]&lt;&lt;7);


  

  // lcd_write(10, 777&lt;&lt;0 | 666&lt;&lt;1 | 555&lt;&lt;2 | 444&lt;&lt;3 |   333&lt;&lt;4 |   222&lt;&lt;5 |   111&lt;&lt;6 | 000&lt;&lt;7);
  }  

void hhh(int hh){
  a[hh]=seg_a,b[hh]=seg_b,c[hh]=seg_c,d[hh]=seg_d,e[hh]=seg_e,f[hh]=seg_f,h[hh]=seg_h,i[hh]=seg_i,j[hh]=seg_j,g1[hh]=seg_g1,g2[hh]=seg_g2,m[hh]=seg_m,k[hh]=seg_k;
  }

void segm(int cif){
  seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;
  switch(cif){
    case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1;break;//0
    case 1: seg_b=1,seg_c=1;break;                                                                                          //1
    case 2: seg_a=1,seg_b=1,seg_d=1,seg_e=1,seg_g1=1,seg_g2=1;break;                                                        //2
    case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_g1=1,seg_g2=1;break;                                                        //3
    case 4: seg_b=1,seg_c=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                                //4
    case 5: seg_a=1,seg_c=1,seg_d=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                        //5
    case 6: seg_a=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                //6
    case 7: seg_a=1,seg_b=1,seg_c=1;break;                                                                                  //7
    case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                        //8
    case 9: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_f=1,seg_g1=1,seg_g2=1;break;                                                //9
    }
  }  

void eng(int ENG){
switch(ENG){
  case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//A-0
  case 1: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//B-1
  case 2: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//C-2
  case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//D-3
  case 4: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//E-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//F-5
  case 6: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//G-6
  case 7: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//H-7
  case 8: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//I-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//J-9
  case 10: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//K-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//L-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//M-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=1;break;//N-13
  case 14: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//O-14
  case 15: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//P-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=1;break;//Q-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=1;break;//R-17
  case 18: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//S-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//T-19
  case 20: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//U-20
  case 21: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//V-21
  case 22: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//W-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//X-23
  case 24: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Y-24
  case 25: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Z-25
  }
}
void rus(int RUS){
switch(RUS){
  case 0: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=1,seg_m=1,seg_k=0;break;//А-0
  case 1: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Б-1
  case 2: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//В-2
  case 3: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Г-3
  case 4: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Д-4
  case 5: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Е-5
  case 6: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ё-6
  case 7: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=1,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Ж-7
  case 8: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//З-8
  case 9: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//И-9
  case 10: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Й-10
  case 11: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//К-11
  case 12: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=0;break;//Л-12
  case 13: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=1,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//М-13
  case 14: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Н-14
  case 15: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//О-15
  case 16: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//П-16
  case 17: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Р-17
  case 18: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//С-18
  case 19: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Т-19
  case 20: seg_a=0,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//У-20
  case 21: seg_a=1,seg_b=1,seg_c=0,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ф-21
  case 22: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=1,seg_i=1,seg_j=1,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;//Х-22
  case 23: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ц-23
  case 24: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Ч-24
  case 25: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Ш-25
  case 26: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//Щ-26
  case 27: seg_a=1,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ъ-27
  case 28: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//Ы-28
  case 29: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=0,seg_g2=1,seg_m=0,seg_k=0;break;//Ь-29
  case 30: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//Э-30
  case 31: seg_a=0,seg_b=1,seg_c=1,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=1,seg_g1=1,seg_g2=0,seg_m=0,seg_k=1;break;//Ю-31
  case 32: seg_a=1,seg_b=1,seg_c=1,seg_d=0,seg_e=0,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=0;break;//Я-32
}
}
void animation(int ani){//полоски анимации
switch(ani){
  case 0: seg_a=1,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//ВЕРХНЯЯ ПОЛОСА
case 1: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=1,seg_g2=1,seg_m=0,seg_k=0;break;//СРЕДНЯЯ ПОЛОСА
case 2: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//НИЖНЯЯ ПОЛОСА
}
}
void animationinmenu(int ani2){//шаги анимации входа в меню
switch(ani2){
  case 0: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//горизонтальная левая полоса
case 1: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//горизонтальная левая полоса+левые боковинки
case 2: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горизонтальная левая полоса+левые боковинки+центр+низ+правые боковинки
case 3: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
}
}
void animationoutmenu(int ani3){//шаги анимации выхода из меню
switch(ani3){
  case 0: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
  case 1: seg_a=1,seg_b=0,seg_c=0,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горизонтальная левая полоса+левые боковинки+центр+низ+правые боковинки 
  case 2: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=1,seg_i=0,seg_j=0,seg_g1=1,seg_g2=0,seg_m=1,seg_k=0;break;//горизонтальная левая полоса+левые боковинки
  case 3: seg_a=0,seg_b=0,seg_c=0,seg_d=0,seg_e=1,seg_f=1,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//горизонтальная левая полоса
}
}
void spectrum(int spec){//спектр цастот
switch(spec){
  case 0: seg_a=0,seg_b=0,seg_c=0,seg_d=1,seg_e=0,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=0,seg_k=0;break;//нижняя полоса
  case 1: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=0,seg_j=0,seg_g1=0,seg_g2=0,seg_m=1,seg_k=1;break;
  case 2: seg_a=0,seg_b=0,seg_c=1,seg_d=1,seg_e=1,seg_f=0,seg_h=0,seg_i=1,seg_j=0,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;
  case 3: seg_a=0,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;
  case 4: seg_a=1,seg_b=1,seg_c=1,seg_d=1,seg_e=1,seg_f=1,seg_h=1,seg_i=1,seg_j=1,seg_g1=1,seg_g2=1,seg_m=1,seg_k=1;break;//горят все
}
}  

void clear_lcd(){for(int a=0;a&lt;=32;a++){data_101(a,0);}}

void lcd_write(int addr_, int data_){
  data_101(addr_,data_ &gt;&gt; 4);data_101(addr_+1,data_ &amp;0b1111);
  }

void data_100(int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b100 &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 8; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
     delayMicroseconds(10);
  }

void data_101(int addr, int data){
     digitalWrite(LCD_CS,LOW);
   for(int i = 2; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (0b101 &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 5; i &gt;=0; i--){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (addr &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     } 
   for(int i = 0; i &lt;=3; i++){
     digitalWrite(LCD_WR,LOW);
     digitalWrite(LCD_DATA, (data &gt;&gt; i) &amp; 1); 
     digitalWrite(LCD_WR,HIGH);
     }   
     digitalWrite(LCD_CS,HIGH);
     digitalWrite(LCD_WR,LOW);
  }  </code></pre></div>]]></content>
			<author>
				<name><![CDATA[liman324]]></name>
				<uri>http://forum.rcl-radio.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-04-07T12:34:25Z</updated>
			<id>http://forum.rcl-radio.ru/viewtopic.php?pid=11731#p11731</id>
		</entry>
</feed>
