СамоДельник

Адаптивное освещение для ПК (Персональный компьютер — компьютер, предназначенный для эксплуатации одним пользователем)

Nextrp [CPP] RU + Many GEOs

Адаптивное освещение для ПКВ телефонах находится таковая умная функция, как адаптивное освещение. Таковая функция находится и в неких моделях телевизоров. Но, по каким- то причинам, на компах нет системы автоматической регулировки яркости. Чтоб поменять яркость, всякий раз приходится жать клавиши. А на неких компах необходимо жать комбинацию кнопок.
Это несколько неловко и отвлекает от работы.
Мастер разработал обычное устройство, которое можно подключить к хоть какому компу, и его яркость будет регулироваться автоматом, как и в телефонах.
Инструменты и материалы:-Arduino Pro Micro;
-LDR (фоторезисторы) — 2 шт;-Резистор 10 К;
-Пользовательская плата;
-Штыревые разъемы;-USB-кабель;-Инструменты для пайки;
-Ножик;
Адаптивное освещение для ПКАдаптивное освещение для ПКАдаптивное освещение для ПКАдаптивное освещение для ПКАдаптивное освещение для ПКАдаптивное освещение для ПКАдаптивное освещение для ПКАдаптивное освещение для ПКШаг 1-ый: принцип работы
Устройство работает последующим образом:
Данные с фоторезистора, направленного на лицо юзера, отправляются на Ардуино. Это аналоговые данные в спектре от 0 до 1024.
Если сравнить значения (0-1024) с освещением, то можно надзирать яркость. В качестве программного обеспечения мастер употребляет программку Python, работающую на ПК (Персональный компьютер — компьютер, предназначенный для эксплуатации одним пользователем).
Шаг 2-ой: тестирование схемы
Для проверки работоспособности устройства мастер собрал схему на макетной плате. В качестве программного обеспечения написал ординарную программку для вывода данных датчика (данных интенсивности света) на поочередный монитор Arduino.

// define sensor pin
int sensor_pin = A3;

void setup() {
  // set things here
  Serial.begin(9600);  // init serial communication at 9600 bps
}

void loop() {
  // mainloop
  int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
  Serial.println(sensorValue);              // send data over serial
  
  delay(200);                               // a little delay to make things work better
}

В эталоне данные должны варьироваться от 0 до 1024 (на теоретическом уровне). Но на практике ни один LDR не безупречен (даже в одной партии). В итоге мастер я получил данные от 0 до 950.
В любом случае это работает, а маленькая погрешность не имеет значения.
Адаптивное освещение для ПКАдаптивное освещение для ПКШаг 3-ий: и изготовка пользовательской платы
Далее мастер разработал интегральную схему. На плате можно узреть, что есть два датчика два датчика. По сути это просто для дизайна. С 2-мя LDR это похоже на улитку. LDR_L — это LDR, который не употребляется в данной сборке.
Потом он сделал интегральную схему на соответственном веб-сайте.
Файлы для производства платы можно скачать тут.
Адаптивное освещение для ПКАдаптивное освещение для ПКАдаптивное освещение для ПКШаг 4-ый: сборка
Сборка весьма обычная. необходимо установить Ардуино на плату и припаять контактные площадки. Также необходимо припаять фоторезисторы.
Заместо пайки можно применять штыревые разъемы.
Адаптивное освещение для ПКАдаптивное освещение для ПКШаг 5-ый: код
Далее необходимо запрограммировать плату.
До этого всего он обусловил контакт Arduino, на который датчик вводит данные.

// define sensor pin
int sensor_pin = A3;<br>

В функции опции установил поочередную связь со скоростью 9600. Функция опции запускается лишь один раз при любом включении платы Arduino.

void setup() {
  // set things here
  Serial.begin(9600);  // init serial communication at 9600 bps
}

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

void loop() {
  // mainloop
  int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
  Serial.println(sensorValue);              // send data over serial
  
  delay(200);                               // a little delay to make things work better
}

Стопроцентно код для Ардуино можно загрузить ниже.

/*  Computer Hack! 
    Brightness Controller

    (C) License: GPL3-General Public License

    author: ashraf minhaj
    mail  : ashraf_minhaj@Яху.com
*/

// define sensor pin
int sensor_pin = A3;

void setup() {
  // set things here
  Serial.begin(9600);  // init serial communication at 9600 bps
}

void loop() {
  // mainloop
  int sensorValue = analogRead(sensor_pin); // read the input on analog pin A3:
  Serial.println(sensorValue);              // send data over serial
  
  delay(200);                               // a little delay to make things work better
}

сейчас необходимо приготовить ПО (то есть программное обеспечение — комплект программ для компьютеров и вычислительных устройств) Python.
Как уже говорилось ранее, датчик посылает данные в Arduino, а python делает все другое. Мастер написал обычной скрипт на Python.
В любом случае, если у вас не установлен , установите Последнюю версию Python можно загрузить тут. При установке необходимо удостоверится, что установлен флаг ‘add python to environment variable Path‘.
Так же необходимо установить две библиотеки, Pyserial и screen- bright -control, используя команды ниже (знаки $ должны обозначать их как команду терминала, копировать без их)

$ pip install pyserial
$ pip install screen-brightness-control<br>

сейчас разберем части кода на вариант если кто то захотит его отредактировать.
В данной части импортируются библиотеки ‘serial.tools.list_ports’ нужен для автоматического обнаружения платы Arduino.

# import necessary libraries
import serial                                     # for serial communication
import serial.tools.list_ports                    # to get Arduino port automatically
import screen_brightness_control as brightness    # to control brightness

Устанавливает скорость и номер порта. Для данной платы скорость составляет 9600

BUAD_RATE = 9600                                  # Pro Micro's buad rate is 9600 
PORT      = ""

Этот раздел автоматом описывает порты USB и пробует подключиться к Arduino.

# get sender device port automatically
serial_ports = list(serial.tools.list_ports.comports())  # get list of ports
for s_port in serial_ports:                              # iterate through all ports
    if 'Arduino Micro' in s_port.description:            # look for Pro Micro board
        PORT = str(s_port[0])                            # select first found board and
        break                                            # proceed

# connect with sender device
sender = serial.Serial(PORT, BUAD_RATE)

Последующая функция конвертирует данные Arduino (от 0 до 1024) в% данных — от 0 до 100. Это именуется сравнением.

def map_value(value, in_min=0, in_max=1024, out_min=0, out_max=100):
    """ To map values. Arduio sends values from 0 to 1024. My goal
    is to make them in between 0 to 100."""
    return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

Остальная часть кода просто смотрит за тем, чтоб яркость оставалась на уровне данной интенсивности света.

# mainloop
while 1: 
    # convert byte data into string then integer
    sensor_value = int(sender.readline().decode("utf-8"))  # get data
    final_value = map_value(value=sensor_value)            # map value (brightness in percentage)
    #print(sensor_value)
    print(final_value)
    brightness.set_brightness(final_value)                 # set brightness

# close port properly so that others can use it
sender.close()

Полный код можно скачать ниже.

""" Computer Hack! 
    Brightness Controller

    (C) License: GPL3-General Public License

    author: ashraf minhaj
    mail  : ashraf_minhaj@Яху.com
"""

""" libraries -
$ pip install pyserial
$ pip install screen-brightness-control
"""

# import necessary libraries
import serial                                     # for serial communication
import serial.tools.list_ports                    # to get Arduino port automatically
import screen_brightness_control as brightness    # to control brightness

# device buadrate (bit per second)
# (change buadrate according to your need)
BUAD_RATE = 9600                                  # Pro Micro's buad rate is 9600 
PORT      = ""

# get sender device port automatically
serial_ports = list(serial.tools.list_ports.comports())  # get list of ports
for s_port in serial_ports:                              # iterate through all ports
    if 'Arduino Micro' in s_port.description:            # look for Pro Micro board
        PORT = str(s_port[0])                            # select first found board and
        break                                            # proceed

# connect with sender device
sender = serial.Serial(PORT, BUAD_RATE)

def map_value(value, in_min=0, in_max=1024, out_min=0, out_max=100):
    """ To map values. Arduio sends values from 0 to 1024. My goal
    is to make them in between 0 to 100."""
    return int((value - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)

# mainloop
while 1: 
    # convert byte data into string then integer
    sensor_value = int(sender.readline().decode("utf-8"))  # get data
    final_value = map_value(value=sensor_value)            # map value (brightness in percentage)
    #print(sensor_value)
    print(final_value)
    brightness.set_brightness(final_value)                 # set brightness

# close port properly so that others can use it
sender.close()

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

FIFA Online 4 [CPP] RU+CIS

SamoDelnik

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.