Есть планшет с андроидом, но без датчика яркости.
Хотел его для умного дома приспособить, но столкнулся с тем, что без датчика яркости, экран слишком ярко светит вечером.
Варианты установки ПО для регулировки яркости по времени суток бесполезны, вечером свет включил, а экран остался тусклый.
Может есть какие-то решения как подключить внешний датчик яркости?
Могу на ардуино сделать датчик яркости и подключить по USB к планшету, но с программированием под андроид я не знаком.
Нужна некая программа для управления экраном андроида.
Гуглёж выдаёт миллион способов наоборот, из андроида управлять освещением через ардуину.
А как ардуиной управлять яркостью экрана андроида?
В голову приходит только идея - написать приложение на Android, которое будет периодически опрашивать внешний датчик и менять уровень яркости.
Попробуйте разбить задачу не две:
1. Программно менять уровень яркости на предопределённый
2. Каким-то образом из приложения получать показания с ардуины.
Решив эти две задачи - объединить их в одну не составит труда
PS: кажется, в теории можно вообще без ардуины и сложной коммуникации с ней это решить, если получится подключить датчик яркости в микрофонный вход так, чтобы от яркости зависела "громкость" сигнала.
lonelymyp, Это лишь идея направления а не способ решения проблемы. К примеру много у кого есть одноплатники в качестве домашнего сервера. Они очень даже в состоянии работать с adb
Василий Банников, мне кажется микрофонный вход реагирует только на переменное напряжение.
То есть надо некий генератор звуковой частоты с зависимостью частоты от яркости, а в приложении считывать аудио, определять частоту. Тоже как-то сверхсложно выглядит.
lonelymyp, генератор сигнала фиксированной частоты делается из горсти компонентов на 15 рублей.
Регулировать громкость можно при помощи резистора.
Только я хз как именно передаётся сигнал на микрофонном входе.
lonelymyp, в том же разъеме гарнитуры есть уже генератор. Даже два. Стерео, все-таки. Построить делитель напряжения из постоянного резистора и фоторезистора, например и вот у нас переменный ток определенной амплитуды меняет эту самую амплитуду в зависимости от уровня освещения.
Василий Банников, да, с железной частью проблемы нет, ne555 с фоторезистором справится.
Проблема больше со стороны андроида.
Этож нужно чтоб приложение работало в фоне и не выгружалось, чтоб у него был доступ нужный, а ещё чтоб оно могло звук анализировать. Вот с программной частью вообще не ясно.
Александр Волков, да, способов измерять освещённость много. В голову щас пришёл способ вообще без внешних деталей, камеру заклеить белой изолентой и делать фото, по фото оценивать яркость.
Только все они бесполезны без программной части. Навряд ли существует готовое приложение для этого, чтоб и генерировать и слушать и висеть в фоне и яркость менять.
i3a4em, Во, прям то что мне надо. А как в андроиде управление реализовано?
Я пока нагуглил что по ADB вроде можно, есть некий microbridge, только не понял, длю любой ли ардуины прокатит
По идее через ADB можно управлять не заморачиваясь с написанием приложения и заморочками с правами доступа или фоновой работой.
lonelymyp, Сам с microbridge не работал. Список поддерживаемого железа есть тут. А так же понадобится usb host для подключения планшета.
Управление реализовано так, как я предлагал изначально. То есть по ADB.
Дабы сильно не заморачиваться - я получал данные от ардуины на пк, а с пк управлял андроидом. То же самое можно сделать на любом одноплатнике, подключившись к планшету через wifi и без использования ардуинки.
Код управления андроидом:
import serial
import subprocess
port = 'COM15'
ser_m = serial.Serial()
ser_m.baudrate = 9600
ser_m.timeout = 1
ser_m.xonxoff = True
ser_m.port = port
ser_m.open()
buffer = bytearray()
while True:
resp = ser_m.readline().decode().strip()
if not resp:
continue
if not 0 <= int(resp) <= 255:
resp = 0 if int(resp) < 0 else 255
print(resp)
cmd = f"adb -s 320276309103 shell settings put system screen_brightness {resp}"
p = subprocess.run(cmd)
Код на ардуинке
void setup() {
Serial.begin(9600);
}
void loop() {
int val = map(analogRead(A4), 950, 500, 0, 255); // Так сделано для наглядности
Serial.println(val);
delay(1000);
}
i3a4em, а, то есть с ПК через ADB можно залезть в виртуальный порт телефона, через него забрать с ардуины данные о яркости, а потом, поменять яркость экрана.
Хитро =) Спасибо
Есть несколько решений, далее подразумевает, что вы разбираетесь в андроид достаточно чтобы написать приложение которое сможет регулировать яркость
1. Просто регулируйте по времени
2. Любой датчик умного дома с датчиком яркости, погуглите как подключится к API умного дома
3. ESP32 с любым датчиком яркости, подключаетесь к андроиду по блютуз или вафле
4. Тоже самое, что и 3 пункт, но подключаетесь по USB с serial port, тут можно взять простую ардуину
Как я написал в вопросе, с программированием под андроид не знаком, увы. Максимум это с sl4a игрался.
В комментариях подсказали вариант с управлением яркостью по ADB, буду его пробовать.