Как программно включить, и выключить фоторезистор.
- Войдите на сайт для отправки комментариев
Пнд, 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- наверно не выключить фоторезистор, а не использовать его?
Да вы правы, не использовать фоторезистор.
Вот полный скетч
#include <Wire.h> // Базовая библиотека шины I2C (используется для связи модуля часов реального времени) #include <iarduino_RTC.h> // Библиотека часов реального времени #include <Adafruit_NeoPixel.h> // Библиотека для управления адресными светодиодами #include <OneWire.h> // Бибиотека шины 1-Wire для работы температурных датчиков #include <DallasTemperature.h> // Библиотека температурного сенсора DS18B20 #include <EEPROMex.h> // Библиотека доступа к энергонезависимой памяти #define PIN 6 // управление адресными светодиодами по этому пину #define ONE_WIRE_BUS 10 // датчик температуры DS18B20 подключен к этому пину #define TEMPERATURE_PRECISION 12 // точность измерений 9-бит низкая, 12-бит высокая iarduino_RTC time(RTC_DS3231); // подключаем RTC модуль на базе чипа DS3231, используется аппаратная шина I2C Adafruit_NeoPixel strip = Adafruit_NeoPixel(30, PIN, NEO_GRB + NEO_KHZ800); //Подключаем ленту на адресных светодиодах OneWire oneWire(ONE_WIRE_BUS); // подключаем шину 1-Wire, для передачи данных с сенсоров температуры DallasTemperature sensors(&oneWire); // подключаем температурные сенсоры byte Mode = 0; //режимы: по умолчанию 0 - отображение времени с заданными настройкамиbyte NumColor = 0; //----------- переменные настроек, которые так же хранятся в ПЗУ контроллера и считываются при включении устройсва------------- byte NowBrigtness = 180; // текущая яркость элементов (начальное значение должно быть кратным 15) byte ColorMode = 13; // текущий цветовой режим (13 режим - цвет меняется каждый час, полный цикл за 12 частов) byte TempTime = 8; // длительность отображения температуры //------------------------------------------------------ int temp10; // перомежуточная переменная температуры (используем множитель 10, что бы использовать тип integer long int KeyPressed; // время в милисекундах, для сравнения с текущими милисекундами (используется для возврата в основной режим) unsigned long eeprom_timer; // таймер зашивки в энергонезависимую память параметров настройки часов byte degree = 25 ; // процент яркости разделительных точек (исходя из геометрии яркость разделительных точек нужно уменьшать boolean eeprom_flag; void setup() { Serial.begin(9600); // подключаем сериал порт для вывода отладочной информации (отключено в целях экономии памяти) pinMode(2, INPUT_PULLUP); // подключаем кнопку 1 к пину и подтягиваем её к питанию pinMode(3, INPUT_PULLUP); // подключаем кнопку 2 к пину и подтягиваем её к питанию pinMode(4, INPUT_PULLUP); // подключаем кнопку 3 к пину и подтягиваем её к питанию time.begin(); // запускаем часы реального времени sensors.begin(); // запускаем сенсоры температуры strip.begin(); // запускаем адресные светодиоды strip.setBrightness(NowBrigtness); // устанавливаем яркость светодиодной ленты strip.show(); // KeyPressed = millis(); // освещаем ленту (по умолчанию нули-ничего не светится) // Отладочный способ установки времени через скетч //time.settime(0,05,1,31,10,19,4); // _ сек, _ мин, _ час, _ день месяца, _ месяц, _ год, день недели 0-вск 6-суб //updateEEPROM; // при первой прошивке раскоментировать для записи настроек в ПЗУ контроллера readEEPROM(); // чтениt настроек из ПЗУ контроллера } void loop() { BrightnessCheck(); //фоторезистор функция настройки яркости в соответствии с освещенностью // if(millis()%1000==0){ // если прошла 1 секунда // Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время // delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс } if ((millis() - KeyPressed) > 4000) Mode = 0; //если спустя 4 секунды кнопок не нажималось часы переходят в нормальный режим int key = get_key(); // опрашиваем нажатие кнопки if (key) { delay(330); // после нажатия на любую кнопку делаем небольшую паузу, что бы успеть отпустить кнопку KeyPressed = millis(); // сбрасываем таймер последнего нажатия кнопки (для того что бы спустя 3 сек часы перешли в режим 0) eeprom_flag = true; } if (key == 2) { // если нажата кнопка 2, то гоняем меню по кругу (выбора режима цвета, яркость, установка времени и даты if (Mode == 9) Mode = 0; else Mode++; } switch ( Mode ) { case 0: { //---------------------- Нормальный режим "0": отображение времени и температуры ---------------------- setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима time.gettime(); // запрашиваем у модуля реального времени теущее время if (( time.seconds) == ( 60 - TempTime)) { // раз в минуту проверяем наличие датчика sensors.requestTemperatures(); // Отправляем запрос на значение температуры temp10 = 10 * sensors.getTempCByIndex(0); } if ((( time.seconds) <= 60 - TempTime) or (temp10<-500)) { // отображаем время в том числе если датчик не подключен digitout (0, time.Hours / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (7, time.Hours % 10 ); // отрисовываем цифры (выставляем черные точки) digitout (16, time.minutes / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (23, time.minutes % 10 ); // отрисовываем цифры (выставляем черные точки) if (( time.seconds) % 2 == 0) { // по четным секундам разделительные точки не светятся (можно сделать затухание) strip.setPixelColor(14, 0, 0, 0); strip.setPixelColor(15, 0, 0, 0); } } if ((key == 1) || (key == 3) || ((( time.seconds) > 60 - TempTime) and (temp10>-500))) { // если нажали кнопку "1" или пришло время отображать температуру и датчик подключен sensors.requestTemperatures(); // Отправляем запрос на значение температуры temp10 = 10 * sensors.getTempCByIndex(0); for (int i = 0; i < 30; i++) { strip.setPixelColor(i, WheelRGB((40 - temp10 / 10) * 255 / 60 & 255)); // цвет зависит от температуры датчика if (i == 14 or i == 15) strip.setPixelColor(i, WheelRBG((40 - temp10 / 10) * 255 / 60 & 255)); // для разделительных точек применяем модифицированное цветовое колесо } if (temp10 < -500) { // если датчик отключен, то выводим "---с" digitout (0, 13 ); // отрисовываем "-" (выставляем черные точки) digitout (7, 13 ); // отрисовываем "-" (выставляем черные точки) digitout (16, 13 ); // отрисовываем "-" (выставляем черные точки) strip.setPixelColor(26, (0, 0, 0)); // знак "_" не рисуем } else { digitout (7, temp10 / 100 ); // отрисовываем цифры (выставляем черные точки) десятки градуса digitout (16, ((temp10) % 100) / 10 ); // отрисовываем цифры (выставляем черные точки) единицы градуса // digitout (16, (temp10) % 10 ); // отрисовываем цифры (выставляем черные точки) десятые доли градуса } strip.setPixelColor(14, 0, 0, 0); // затеняем верхнюю точку strip.setPixelColor(15, 0, 0, 0); // затеняем нижнюю точку digitout (23, 11 ); //симвод градуса Цельсия digitout (0, 13 ); //симвод "-" в первом семисегментном индикаторе if (temp10 >= 0) { // если температура выше нуля, то знак "-" не отображаем strip.setPixelColor(6, (0, 0, 0)); // знак "-" в первом семисегментном индикаторе убираем при плюсовой температуре } // if (key == 3) { // - зарезервированно либо для вывода даты, либо для вывода температуры с второго датчика // } } strip.show(); //освещаем режим 0 break; } //---------------------- конец отработки условия нормального режима "0" ------------------ case 1: { // Если режим "1" - установка цветовой схемы if (key == 1) { //Установка цвета if (ColorMode == 0) ColorMode = 26; else ColorMode--; } if (key == 3) { //Гоняем цвет по кругу if (ColorMode == 26) ColorMode = 0; else ColorMode++; } setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима // - отображаем на экране номер цветового режима digitout (0, 12 ); // отрисовываем цифры (выставляем черные точки) digitout (7, 13); // отрисовываем цифры (выставляем черные точки) digitout (16, ColorMode / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (23, ColorMode % 10); // отрисовываем цифры (выставляем черные точки) strip.setPixelColor(14, 0, 0, 0); strip.setPixelColor(15, 0, 0, 0); strip.show(); //освещаем режим break; } case 2: { // Если режим "2" - установка яркости if (key == 1) { NowBrigtness = NowBrigtness - 15; //меняем яркость от 0 до 255 с шагом 5 } 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; } case 3: { // Если режим "3" - Установка времени отображения температуры if (key == 1) { // Устанавливаем время показа температуры на -1 сек if (TempTime == 0) TempTime = 60; else TempTime = TempTime - 1 ; } if (key == 3) { //Устанавливаем время показа температуры на +1 сек if (TempTime == 60) TempTime = 0; else TempTime = TempTime + 1; } setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима digitout (0, 17); // отрисовываем цифры (выставляем черные точки) digitout (7, 17); // отрисовываем цифры (выставляем черные точки) digitout (16, TempTime / 10); // отрисовываем цифры (выставляем черные точки) digitout (23, TempTime % 10); // отрисовываем цифры (выставляем черные точки) strip.setPixelColor(14, 0, 0, 0); strip.setPixelColor(15, 0, 0, 0); strip.show(); //освещаем режим break; } case 4: { // Если режим "4" - установка времени (час) if (key == 1) { //уменьшаем часы if ((time.Hours) == 0) time.settime(-1, -1, 23); else time.settime(-1, -1, (time.Hours) - 1); //установит времени (час) } if (key == 3) { //увеличиваем часы if ((time.Hours) == 23) time.settime(-1, -1, 0); else time.settime(-1, -1, (time.Hours) + 1); //установит времени (час) } // задаём цвет всех элементов в зависимости от цветового режима time.gettime(); // запрашиваем у модуля реального времени теущее время setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима // for (int i = 0; i < 14; i++) { // задаём цвет часов серым // strip.setPixelColor(i, 127, 127, 127); // } if (( millis() % 1000 > 500)) { digitout (0, 15 ); // отрисовываем цифры (выставляем черные точки) digitout (7, 15 ); // отрисовываем цифры (выставляем черные точки) } else { digitout (0, time.Hours / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (7, time.Hours % 10 ); // отрисовываем цифры (выставляем черные точки) } digitout (16, time.minutes / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (23, time.minutes % 10 ); // отрисовываем цифры (выставляем черные точки) // if (( time.seconds) % 2 == 0) { // по четным секундам разделительные точки не светятся (можно сделать затухание) // strip.setPixelColor(14, 0, 0, 0); strip.setPixelColor(15, 0, 0, 0); // } strip.show(); //освещаем режим break; } case 5: { // Если режим "5" - установка времени (мин). При изменении минут секунды обнуляются if (key == 1) { //уменьшаем минуты if ((time.minutes) == 0) time.settime(0, 59); else time.settime(0, (time.minutes) - 1); //установит времени (мин) } if (key == 3) { //увеличиваем минуты if ((time.minutes) == 59) time.settime(0, 0); else time.settime(0, (time.minutes) + 1); //установит времени (мин) } // задаём цвет всех элементов в зависимости от цветового режима time.gettime(); // запрашиваем у модуля реального времени теущее время setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима // for (int i = 16; i < 30; i++) { // задаём цвет минут серым // strip.setPixelColor(i, 127, 127, 127); // } if (( millis() % 1000 > 500)) { digitout (16, 15 ); // отрисовываем цифры (выставляем черные точки) digitout (23, 15 ); // отрисовываем цифры (выставляем черные точки) } else { digitout (16, time.minutes / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (23, time.minutes % 10 ); // отрисовываем цифры (выставляем черные точки) } digitout (0, time.Hours / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (7, time.Hours % 10 ); // отрисовываем цифры (выставляем черные точки) // if (( time.seconds) % 2 == 0) { // по четным секундам разделительные точки не светятся (можно сделать затухание) // strip.setPixelColor(14, 0, 0, 0); strip.setPixelColor(15, 0, 0, 0); // } strip.show(); //освещаем режим break; } case 6: { // Если режим "6" - Установка дня if (key == 1) { //уменьшаем времени (мин) if ((time.day) == 1) time.settime(-1, -1, -1, 31); else time.settime(-1, -1, -1, (time.day) - 1); //установит дата) } if (key == 3) { //увеличиваем часы if ((time.day) == 31) time.settime(-1, -1, -1, 1); else time.settime(-1, -1, -1, (time.day) + 1); //установит дата } // задаём цвет всех элементов в зависимости от цветового режима time.gettime(); // запрашиваем у модуля реального времени теущее время setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима // for (int i = 0; i < 14; i++) { // задаём цвет часов серым // strip.setPixelColor(i, 127, 127, 127); // } if (( millis() % 1000 > 500)) { digitout (0, 15 ); // отрисовываем цифры (выставляем черные точки) digitout (7, 15 ); // отрисовываем цифры (выставляем черные точки) } else { digitout (0, time.day / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (7, time.day % 10 ); // отрисовываем цифры (выставляем черные точки) } digitout (16, time.month / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (23, time.month % 10 ); // отрисовываем цифры (выставляем черные точки) strip.setPixelColor(14, 0, 0, 0); // Оставляем светиться нижнюю точку - разделитель дня и месяца strip.show(); //освещаем режим break; } case 7: { // Если режим "7" - Установка месяца if (key == 1) { //уменьшаем времени (мин) if ((time.month) == 1) time.settime(-1, -1, -1, -1, 12); else time.settime(-1, -1, -1, -1, (time.month) - 1); //установит дата) } if (key == 3) { //увеличиваем часы if ((time.month) == 12) time.settime(-1, -1, -1, -1, 1); else time.settime(-1, -1, -1, -1, (time.month) + 1); //установит дата) } // задаём цвет всех элементов в зависимости от цветового режима time.gettime(); // запрашиваем у модуля реального времени теущее время setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима // for (int i = 16; i < 30; i++) { // задаём цвет минут серым // strip.setPixelColor(i, 127, 127, 127); // } if (( millis() % 1000 > 500)) { digitout (16, 15 ); // отрисовываем цифры (выставляем черные точки) digitout (23, 15 ); // отрисовываем цифры (выставляем черные точки) } else { digitout (16, time.month / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (23, time.month % 10 ); // отрисовываем цифры (выставляем черные точки) } digitout (0, time.day / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (7, time.day % 10 ); // отрисовываем цифры (выставляем черные точки) strip.setPixelColor(14, 0, 0, 0); // Оставляем светиться нижнюю точку - разделитель дня и месяца strip.show(); //освещаем режим break; } case 8: { // Если режим "8"-установка года if (key == 1) { //уменьшаем год time.settime(-1, -1, -1, -1, -1, (time.year) - 1); //установит дата) } if (key == 3) { //увеличиваем год time.settime(-1, -1, -1, -1, -1, (time.year) + 1); //установит дата) } setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима // for (int i = 0; i < 30; i++) { // задаём цвет минут серым // strip.setPixelColor(i, 127, 127, 127); // } if (( millis() % 1000 > 500)) { digitout (0, 15 ); // отрисовываем цифры (выставляем черные точки) digitout (7, 15 ); digitout (16, 15 ); // отрисовываем цифры (выставляем черные точки) digitout (23, 15 ); // отрисовываем цифры (выставляем черные точки) } else { digitout (0, 2); // отрисовываем цифры (выставляем черные точки) digitout (7, 0); // отрисовываем цифры (выставляем черные точки) digitout (16, (time.year) / 10 ); // отрисовываем цифры (выставляем черные точки) digitout (23, (time.year) % 10); // отрисовываем цифры (выставляем черные точки) } strip.setPixelColor(14, 0, 0, 0); strip.setPixelColor(15, 0, 0, 0); strip.show(); //освещаем режим break; } case 9: { // Если режим "9" - Установка дня недели if (key == 1) { //уменьшаем времени (мин) if ((time.weekday) == 0) time.settime(-1, -1, -1, -1, -1, 1 - 1, 6); else time.settime(-1, -1, -1, -1, -1, -1, (time.weekday) - 1); //установит дата) } if (key == 3) { //увеличиваем часы if ((time.weekday) == 6) time.settime(-1, -1, -1, -1, -1, 1 - 1, 0); else time.settime(-1, -1, -1, -1, -1, -1, (time.weekday) + 1); //установит дата) } setcolor (ColorMode); // задаём цвет всех элементов в зависимости от цветового режима // for (int i = 0; i < 30; i++) { // задаём цвет минут серым // strip.setPixelColor(i, 127, 127, 127); // } if (( millis() % 1000 > 500)) { digitout (23, 15 ); // отрисовываем цифры (выставляем черные точки) } else { digitout (23, (time.weekday)); // отрисовываем цифры (выставляем черные точки) } digitout (0, 16 ); // отрисовываем цифры (выставляем черные точки) digitout (7, 15 ); digitout (16, 15); // отрисовываем цифры (выставляем черные точки) strip.setPixelColor(14, 0, 0, 0); strip.setPixelColor(15, 0, 0, 0); strip.show(); //освещаем режим break; } } // Конец обработки всех режимов eepromTick(); // проверка не пора ли сохранить настройки } // Конец основного цикла /* Проверьте датчик освещенности (фоторезистр)и установите яркость соответственно */ void BrightnessCheck(){ // функция настройки яркости в соответствии с освещенностью const byte sensorPin = A0; // пин датчика освещенности const byte brightnessLow = 5; // низкий уровень яркости const byte brightnessHigh = 250; // высокий уровень яркости int sensorValue = digitalRead(sensorPin); // запрос с датчика if (sensorValue == 0) {strip.setBrightness(brightnessLow);} else {strip.setBrightness(brightnessHigh);} }; void setcolor (byte ColorMode) { // процедура, которая задаёт цвет всех элементов в зависимости от указанного цветового режима uint16_t i; if (ColorMode < 24) { //12 цветов по цветовому колесу for (i = 0; i < 30; i++) { strip.setPixelColor(i, WheelRGB((ColorMode * 255 / 24) & 255)); if (i == 14 or i == 15) strip.setPixelColor(i, WheelRBG((ColorMode * 256 / 24) & 255)); // для разделительных точек применяем модифицированное цветовое колесо } } if (ColorMode == 24) { // цвет -белый for (i = 0; i < 30; i++) { strip.setPixelColor(i, 255, 255, 255); } } if (ColorMode == 25) { // цветовой режим -радуга с периодом 12 часов time.gettime(); for (i = 0; i < 30; i++) { strip.setPixelColor(i, WheelRGB((time.hours) * 255 / 12 & 255)); // в этом режиме часы меняются от 1-12 if (i == 14 or i == 15) strip.setPixelColor(i, WheelRBG((time.hours) * 255 / 12 & 255)); // для разделительных точек применяем модифицированное цветовое колесо } } if (ColorMode == 26) { // цветовой режим -радуга с периодом 24 часа time.gettime(); for (i = 0; i < 30; i++) { strip.setPixelColor(i, WheelRGB((time.hours) * 255 / 24 & 255)); // в этом режиме часы меняются от 1-12 if (i == 14 or i == 15) strip.setPixelColor(i, WheelRBG((time.hours) * 255 / 24 & 255)); // для разделительных точек применяем модифицированное цветовое колесо } } } //- конец процедуры установки цвета int get_key() //Вывод нажатой клавиши { if (digitalRead(2) == 0) return 1; if (digitalRead(3) == 0) return 2; if (digitalRead(4) == 0) return 3; return 0; } void tempout() { //процедура отображения температуры } // Отображение цифр void digitout(int digitposition, int digit) { switch ( digit) { case 1: { strip.setPixelColor(digitposition + 0, (0, 0, 0)); //strip.setPixelColor(digitposition+1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); strip.setPixelColor(digitposition + 3, (0, 0, 0)); strip.setPixelColor(digitposition + 4, (0, 0, 0)); strip.setPixelColor(digitposition + 5, (0, 0, 0)); strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 2: { //strip.setPixelColor(digitposition+0, (0, 0, 0)); //strip.setPixelColor(digitposition+1, (0, 0, 0)); strip.setPixelColor(digitposition + 2, (0, 0, 0)); //strip.setPixelColor(digitposition+3, (0, 0, 0)); //strip.setPixelColor(digitposition+4, (0, 0, 0)); strip.setPixelColor(digitposition + 5, (0, 0, 0)); //strip.setPixelColor(digitposition+6, (0, 0, 0)); break; } case 3: { //strip.setPixelColor(digitposition+0, (0, 0, 0)); //strip.setPixelColor(digitposition+1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); //strip.setPixelColor(digitposition+3, (0, 0, 0)); strip.setPixelColor(digitposition + 4, (0, 0, 0)); strip.setPixelColor(digitposition + 5, (0, 0, 0)); //strip.setPixelColor(digitposition+6, (0, 0, 0)); break; } case 4: { strip.setPixelColor(digitposition + 0, (0, 0, 0)); //strip.setPixelColor(digitposition+1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); strip.setPixelColor(digitposition + 3, (0, 0, 0)); strip.setPixelColor(digitposition + 4, (0, 0, 0)); //strip.setPixelColor(digitposition+5, (0, 0, 0)); //strip.setPixelColor(digitposition+6, (0, 0, 0));; break; } case 5: { //strip.setPixelColor(digitposition+0, (0, 0, 0)); strip.setPixelColor(digitposition + 1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); //strip.setPixelColor(digitposition+3, (0, 0, 0)); strip.setPixelColor(digitposition + 4, (0, 0, 0)); //strip.setPixelColor(digitposition+5, (0, 0, 0)); //strip.setPixelColor(digitposition+6, (0, 0, 0)); break; } case 6: { //strip.setPixelColor(digitposition+0, (0, 0, 0)); strip.setPixelColor(digitposition + 1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); //strip.setPixelColor(digitposition+3, (0, 0, 0)); //strip.setPixelColor(digitposition+4, (0, 0, 0)); //strip.setPixelColor(digitposition+5, (0, 0, 0)); //strip.setPixelColor(digitposition+6, (0, 0, 0)); break; } case 7: { //strip.setPixelColor(digitposition+0, (0, 0, 0)); //strip.setPixelColor(digitposition+1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); strip.setPixelColor(digitposition + 3, (0, 0, 0)); strip.setPixelColor(digitposition + 4, (0, 0, 0)); strip.setPixelColor(digitposition + 5, (0, 0, 0)); strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 8: { //strip.setPixelColor(digitposition+0, (0, 0, 0)); //strip.setPixelColor(digitposition+1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); //strip.setPixelColor(digitposition+3, (0, 0, 0)); //strip.setPixelColor(digitposition+4, (0, 0, 0)); //strip.setPixelColor(digitposition+5, (0, 0, 0)); //strip.setPixelColor(digitposition+6, (0, 0, 0)); break; } case 9: { //strip.setPixelColor(digitposition+0, (0, 0, 0)); //strip.setPixelColor(digitposition+1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); //strip.setPixelColor(digitposition+3, (0, 0, 0)); strip.setPixelColor(digitposition + 4, (0, 0, 0)); //strip.setPixelColor(digitposition+5, (0, 0, 0)); //strip.setPixelColor(digitposition+6, (0, 0, 0)); break; } case 0: { //strip.setPixelColor(digitposition+0, (0, 0, 0)); //strip.setPixelColor(digitposition+1, (0, 0, 0)); //strip.setPixelColor(digitposition+2, (0, 0, 0)); //strip.setPixelColor(digitposition+3, (0, 0, 0)); //strip.setPixelColor(digitposition+4, (0, 0, 0)); //strip.setPixelColor(digitposition+5, (0, 0, 0)); strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 11: { //символ градуса цельсия //strip.setPixelColor(digitposition + 0, (0, 0, 0)); strip.setPixelColor(digitposition + 1, (0, 0, 0)); strip.setPixelColor(digitposition + 2, (0, 0, 0)); strip.setPixelColor(digitposition + 3, (0, 0, 0)); // знак "_" strip.setPixelColor(digitposition + 4, (0, 0, 0)); //strip.setPixelColor(digitposition + 5, (0, 0, 0)); //strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 12: { //символ "C" "color" //strip.setPixelColor(digitposition + 0, (0, 0, 0)); strip.setPixelColor(digitposition + 1, (0, 0, 0)); strip.setPixelColor(digitposition + 2, (0, 0, 0)); //strip.setPixelColor(digitposition + 3, (0, 0, 0)); //strip.setPixelColor(digitposition + 4, (0, 0, 0)); //strip.setPixelColor(digitposition + 5, (0, 0, 0)); strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 13: { //символ "-" strip.setPixelColor(digitposition + 0, (0, 0, 0)); strip.setPixelColor(digitposition + 1, (0, 0, 0)); strip.setPixelColor(digitposition + 2, (0, 0, 0)); strip.setPixelColor(digitposition + 3, (0, 0, 0)); strip.setPixelColor(digitposition + 4, (0, 0, 0)); strip.setPixelColor(digitposition + 5, (0, 0, 0)); //strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 14: { //символ "b" "яркость" strip.setPixelColor(digitposition + 0, (0, 0, 0)); strip.setPixelColor(digitposition + 1, (0, 0, 0)); //strip.setPixelColor(digitposition + 2, (0, 0, 0)); //strip.setPixelColor(digitposition + 3, (0, 0, 0)); //strip.setPixelColor(digitposition + 4, (0, 0, 0)); //strip.setPixelColor(digitposition + 5, (0, 0, 0)); //strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 15: { //символ " " "пустота" strip.setPixelColor(digitposition + 0, (0, 0, 0)); strip.setPixelColor(digitposition + 1, (0, 0, 0)); strip.setPixelColor(digitposition + 2, (0, 0, 0)); strip.setPixelColor(digitposition + 3, (0, 0, 0)); strip.setPixelColor(digitposition + 4, (0, 0, 0)); strip.setPixelColor(digitposition + 5, (0, 0, 0)); strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 16: { //символ "d" "день недели" strip.setPixelColor(digitposition + 0, (0, 0, 0)); // strip.setPixelColor(digitposition + 1, (0, 0, 0)); //strip.setPixelColor(digitposition + 2, (0, 0, 0)); //strip.setPixelColor(digitposition + 3, (0, 0, 0)); //strip.setPixelColor(digitposition + 4, (0, 0, 0)); strip.setPixelColor(digitposition + 5, (0, 0, 0)); // strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } case 17: { //символ "t" strip.setPixelColor(digitposition + 0, (0, 0, 0)); strip.setPixelColor(digitposition + 1, (0, 0, 0)); strip.setPixelColor(digitposition + 2, (0, 0, 0)); //strip.setPixelColor(digitposition + 3, (0, 0, 0)); //strip.setPixelColor(digitposition + 4, (0, 0, 0)); //strip.setPixelColor(digitposition + 5, (0, 0, 0)); // strip.setPixelColor(digitposition + 6, (0, 0, 0)); break; } } } // функция цветового колеса, которое возвращает RGB цвет для ленты (аргументу 0-255 соответсует поворот колеса от 0 до 359 градусов) uint32_t WheelRGB(byte WheelPos) { WheelPos = 255 - WheelPos; // разделительные точки между часами и мунутами на базе WS2812 с измененными цветами G и B if (WheelPos < 85) { return strip.Color((255 - WheelPos * 3) , (WheelPos * 3), 0); } if (WheelPos < 170) { WheelPos -= 85; return strip.Color(0, (255 - WheelPos * 3) , (WheelPos * 3) ); } WheelPos -= 170; return strip.Color( (WheelPos * 3), 0, (255 - WheelPos * 3)); } uint32_t WheelRBG(byte WheelPos) { // заменен оригинальный кусок кода инвертирующий RGB в RBG (функция WheelRGB идентична WheelRBG) WheelPos = 255 - WheelPos; if (WheelPos < 85) { return strip.Color((255 - WheelPos * 3) , (WheelPos * 3), 0); } if (WheelPos < 170) { WheelPos -= 85; return strip.Color(0, (255 - WheelPos * 3) , (WheelPos * 3) ); } WheelPos -= 170; return strip.Color( (WheelPos * 3), 0, (255 - WheelPos * 3)); } void updateEEPROM() { EEPROM.updateByte(1, NowBrigtness); EEPROM.updateByte(2, ColorMode); EEPROM.updateByte(3, TempTime); } void readEEPROM() { NowBrigtness = EEPROM.readByte(1); ColorMode = EEPROM.readByte(2); TempTime = EEPROM.readByte(3); } void eepromTick() { if (eeprom_flag) if (millis() - KeyPressed > 60000) { // 60 секунд после последнего нажатия с пульта eeprom_flag = false; updateEEPROM(); } }Как по Вашему из функции опроса яркости возвращаются значения?
видимо никак , Вы внутри ея ставите яркость ленты или в высокое или в низкое состояние, а надо получать значение с фоторезистора, нормировать его если надо и выдавать наружу функции.
типа
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
вам из брайнессчека надо сделать функцию, возвращающую значение , как я вам написал и как ее использовать тоже написал.
разбирайтесь. Если хотите , чтобы вам написали, есть специальный раздел платных услуг