VGA фоновая подсветка монитора или телевизора

AlexBAN
Offline
Зарегистрирован: 17.09.2020

Сделал фоновую подсветку для телевизора используя сигналы VGA через переходник HDMI в VGA

а как добавить сигналы H и V синхронизации понять не могу

[code]
#include <Adafruit_NeoPixel.h>
int red,green,blue = 0;

//  IMPORTANT: Set pixel COUNT, PIN and TYPE
#define PIN 6
#define NUMPIXELS 79
#define POT_0_PIN A0
#define POT_1_PIN A1
#define POT_2_PIN A2
// Initialize the neopixel strip
Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

 void setup() {
    // Set the pins connected to the potentiometer as inputs
    pinMode(0,INPUT);
    pinMode(1,INPUT);
    pinMode(2,INPUT);
    
    
 strip.begin();
 strip.show(); //  Initialize all pixels to 'off'
 rainbowCycle( 1 ); // Flash rainbows at the begining
}

void loop() {

    // Read and store the potentiometer values
    // We are scaling them from a 12bit scale to an 8 bit scale
 red = map(analogRead(A0), 0, 820, 0 , 255);
 green = map(analogRead(A1), 0, 820, 0 , 255);
 blue = map(analogRead(A2), 0 , 820, 0 , 255);
 

    // set colors of all the eight neopixles
    for(int pixel = 0 ;pixel <   NUMPIXELS   ;pixel++)
    {
 strip.setPixelColor(pixel, red, green, blue);
    }
 strip.show(); // Update the strip with new color values
    delay(50);
}

void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0 ; j<256 * 5 ; j++) { //  5 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
 strip.setPixelColor(i, Wheel(((i * 256  / strip.numPixels()) + j) & 255));
    }
 strip.show();
    delay(wait);
  }
}

//  Helper function for rainbows
//  Input a value 0 to 255 to get a color value.
//  The colours are a transition r - g - b - back to r.
 uint32_t Wheel(byte WheelPos) {
 WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
 WheelPos -= 85;
    return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
 WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
[/code]

 

AlexBAN
Offline
Зарегистрирован: 17.09.2020

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Бывает...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Мы тоже все не сразу могли. 

yuhenotix@2p-ma...
Offline
Зарегистрирован: 09.06.2019

https://alexgyver.ru/arduino_ambilight/

А  вообще  раздел для  поспрошаек в другом месте, этот для готовых проектов.

sadman41
Offline
Зарегистрирован: 19.10.2016

Лично я не вижу на схеме "сигналы H и V синхронизации" и в коде их.

b707
Онлайн
Зарегистрирован: 26.05.2017

sadman41 пишет:

Лично я не вижу на схеме "сигналы H и V синхронизации"

неправ, на схеме есть :) - на втором рисунке внизу слева нарисовано " V sync -? H sync - ?" :)))

В коде нет - но, впрочем, код похоже откуда-то скопищен кусками... описаны какие-то потенциометры. которых нет на схеме... входы цвета описаны дефайнами. а используются без них.... и тд

AlexBAN
Offline
Зарегистрирован: 17.09.2020

Код брал с потенциометрами на аналоговых входах а H и V синхронизации не знаю как использовать поэтому они на схеме есть но с вопросом а  что POT что RED как хочеш так и обозначай 

AlexBAN
Offline
Зарегистрирован: 17.09.2020

Это все проходили привязка к компьютеру а через HDMI грабли

sadman41
Offline
Зарегистрирован: 19.10.2016

Неправ. Но что с "сигналы H и V синхронизации" делать ТС собрался - так и не понял. А сам он понимает, куда их примотать?.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

sadman41 пишет:

Неправ. Но что с "сигналы H и V синхронизации" делать ТС собрался - так и не понял. А сам он понимает, куда их примотать?.

Сигналы синхронизации нужны что бы подсветку делать в разных частях разным цветом синхронизированным с крартинкой.

AlexBAN
Offline
Зарегистрирован: 17.09.2020

Исправил Код

[код]
#включитьч>
int красный, зеленый, синий = 0;

// Важно: установите количество пикселей, PIN-код и тип
#определение PIN-кода 6
#определение НУМПИКСЕЛЕЙ 79
#define VGA_R_PIN A0
#определить VGA_G_PIN A1
#define VGA_B_PIN A2
// Инициализация полосы neopixel
Adafruit_neopixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

 пустая настройка() {
 // Установите контакты, подключенные к потенциометру, в качестве входных сигналов
 pinMode(0, вход);
 pinMode(1, вход);
 pinMode(2, вход);
 
 
 Стриптиз.начать();
 Стриптиз.show (); / / инициализировать все пиксели в положение " Выкл."
 rainbowCycle( 1 ); / / вспышка радуги в начале
}

пустотная петля() {

 // Считывание и сохранение значений потенциометра
 // Мы масштабируем их от 12-битного масштаба до 8-битного масштаба
 красный = карта (analogRead(A0), 0, 820, 0, 255);
 зеленый = карта (analogRead(A1), 0, 820, 0, 255);
 синий = карта (analogRead(A2), 0, 820, 0, 255);
 

 // установить цвета всех восьми неопикселей
 for (int pixel = 0; пиксель)
 {
 Стриптиз.setPixelColor (пиксель, красный, зеленый, синий);
 }
 Стриптиз.show (); / / обновите полоску новыми значениями цвета
 задержка(50);
}

void rainbowCycle (uint8_t wait) {
 uint16_t i, j;

 для(j=0; j
 для(i=0; inumPixels (); i++) {
 Стриптиз.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255));
 }
 Стриптиз.показать();
 задержка(ожидание);
 }
}

// Вспомогательная функция для радуги
// Введите значение от 0 до 255, чтобы получить значение цвета.
// Цвета-это переход r-g - b-back в r.
 uint32_t Wheel (байт WheelPos) {
 WheelPos = 255-WheelPos;
 если(WheelPos) {
 возвратная полоса.Цвет (255-WheelPos * 3, 0, WheelPos * 3);
 }
 если(WheelPos) {
 WheelPos - = 85;
 возвратная полоса.Цвет(0, WheelPos * 3, 255-WheelPos * 3);
 }
 WheelPos - = 170;
 возвратная полоса.Цвет(WheelPos * 3, 255-WheelPos * 3, 0);
}
[/код]

 

sadman41
Offline
Зарегистрирован: 19.10.2016

asam пишет:

sadman41 пишет:

Неправ. Но что с "сигналы H и V синхронизации" делать ТС собрался - так и не понял. А сам он понимает, куда их примотать?.

Сигналы синхронизации нужны что бы подсветку делать в разных частях разным цветом синхронизированным с крартинкой.

Допустим у нас есть поле X*Y пикселов. Как выглядит функция засветки (количество пикселей и их координаты) относительно сигнала H и V в диапазоне  0...1023?

AlexBAN
Offline
Зарегистрирован: 17.09.2020

Согласен. Синхроимпульсы уровня TTL  подать на цифровые входы а вот дальше чтоб они управляли местоположением пикселя на ленте вопрос

AlexBAN
Offline
Зарегистрирован: 17.09.2020
Табл. 1. Диаграмма синхронизации для 640 x 480
Тип Стандарт
Название синхронизации 640 x 480, 60 Гц 640 x 480, 75 Гц
Частота и поляризация горизонтальной развертки 31,469 кГц Отрицательная 37,5 кГц Отрицательная
Частота и поляризация вертикальной развертки 59,94 Гц Отрицательная 75 Гц Отрицательная
Частота пикселизации 25,175 МГц   31,5 МГц  
Тип развертки Прогрессивная Прогрессивная
AlexBAN
Offline
Зарегистрирован: 17.09.2020

https://cxem.net/arduino/arduino65.php как выводить сигнал VGA 

sadman41
Offline
Зарегистрирован: 19.10.2016

Лично Вы как планируете использовать эти два сигнала?

AlexBAN
Offline
Зарегистрирован: 17.09.2020

Пока не знаю 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

sadman41 пишет:

asam пишет:

Сигналы синхронизации нужны что бы подсветку делать в разных частях разным цветом синхронизированным с крартинкой.

Допустим у нас есть поле X*Y пикселов. Как выглядит функция засветки (количество пикселей и их координаты) относительно сигнала H и V в диапазоне  0...1023?

Поле изображения разбивается на несколько прямоугольников. В простейшем случае на 4. Дальше используя сигналы синхронизации вычисляем средний цвет и яркость изображения в каждом прямоугольнике за несколько кадров. А потм выводи соответсвующий цвет и яркость на ленту делая плавный переход между частями экрана.

AlexBAN
Offline
Зарегистрирован: 17.09.2020

Яркость и цвет задаются сигналом RGB вот номер пикселя с помощью H и V