Как программно включить, и выключить фоторезистор.
- Войдите на сайт для отправки комментариев
Пнд, 04/11/2019 - 18:09
И так, имеется светодиодная лента на WS2821b. Подключена библиотека Adafruit NeoPixel. Есть в библиотеке функция setBrightness() - задает общую яркость светодиодной ленты. strip.setBrightness(180); по умолчанию.
В скетче есть меню, ручная установка яркости. от b-0 до b-17. С шагом 15.
case 2: { // Если режим "2" - установка яркости if (key == 1) { NowBrigtness = NowBrigtness - 15; //меняем яркость от 0 до 255 с шагом 15 } if (key == 3) { NowBrigtness = NowBrigtness + 15; } setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима if (NowBrigtness == 0)strip.setBrightness(1); else strip.setBrightness(NowBrigtness); ; // устанавливаем яркость светодиодной ленты // - отображаем на экране величину яркости digitout (0, 14 ); // отрисовываем цифры (выставляем черные точки) digitout (7, 13); // отрисовываем цифры (выставляем черные точки) digitout (16, (NowBrigtness / 15) / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (23, (NowBrigtness / 15) % 10); // отрисовываем цифры (выставляем черные точки) strip.setPixelColor(14, 0, 0, 0); strip.setPixelColor(15, 0, 0, 0); strip.show(); //освещаем режим break; }
Кроме этого, я отдельно добавил код в скетч. Чтобы яркость, регулировалась фоторезистором.
// Check Light sensor and set brightness accordingly void BrightnessCheck(){ // функция настройки яркости в соответствии с освещенностью const byte sensorPin = A0; // пин датчика освещенности const byte brightnessLow = 5; // низкий уровень яркости const byte brightnessHigh = 250; // высокий уровень яркости int sensorValue = digitalRead(sensorPin); // запрос с датчика if (sensorValue == 0) {strip.setBrightness(brightnessHigh);} else {strip.setBrightness(brightnessLow);} }
И ручная регулировка в этом случаи не работает.
Так вот вопрос, как сделать 2in1 в одно?. Чтобы по желанию, можно было отключить фоторезистор.
Например: в том, же меню. На b-1 фоторезистор включить. b-0, b-2, b3, b-4 и, так далее до b-17 фоторезистор OFF выключить.
1- приведите полный текст программы
2- наверно не выключить фоторезистор, а не использовать его?
Да вы правы, не использовать фоторезистор.
Вот полный скетч
Как по Вашему из функции опроса яркости возвращаются значения?
видимо никак , Вы внутри ея ставите яркость ленты или в высокое или в низкое состояние, а надо получать значение с фоторезистора, нормировать его если надо и выдавать наружу функции.
типа
return sensorValue;
правильно было бы выдавать наружу значение и в соответствующем выборе b-какой то там (==0?) делать что-то , соответствующее этому значению.
типа
if
(NowBrigtness == 0)strip.setBrightness(BrightnessCheck());
То есть надо создать. Новый блок меню в скетче. Например:
ft-0 - не использовать фоторезистор.
ft-1 - использовать фоторезистор.
BrightnessCheck(); – цикл который отвечает за фоторезистор. Его можно использовать в меню как переменную?. Или нет? Или он, только используется void loop() {BrightnessCheck(); } и больше негде.
BrightnessCheck(); – цикл который отвечает за фоторезистор.
??? Уважаемый, возможно Вы имели ввиду подпрограмму? Цикла я там не заметил.
И, в принципе, я бы от этой подпрограммы избавился, внеся ее функции в основную программу. Читабельность улучшится, а пара - тройка лишних строчек погоды не сделает.
А отключить - так обойдите любым условным оператором.
Откуда вы это берете ft-1 ft-0 b-0 b-1
вам из брайнессчека надо сделать функцию, возвращающую значение , как я вам написал и как ее использовать тоже написал.
разбирайтесь. Если хотите , чтобы вам написали, есть специальный раздел платных услуг