Перейти к содержанию

Asteriy

Members
  • Постов

    525
  • Зарегистрирован

  • Посещение

Весь контент Asteriy

  1. @skripach , класс! Здорово! unsigned long zaderzka=300000 - это время обновления записи позиции кнопки в память? Допустим мне понадобится подключить еще один канал с аналогичным управлением и записью позиции кнопки в память, то что нужно продублировать в скетче?
  2. @skripach . право мне не удобно уже) Но снова запустился бесконечный цикл. Но позицию запоминает.
  3. @skripach , #include <EEPROM.h> int adress; unsigned long zaderzka=300000; int brightness_old; unsigned long time; int ledPin = 11; // Присваиваем имя ledPin цифровому выводу 11, к которому подключен светодиод int brightness =0; // переменная для задания яркости byte fadeValue = 3; // шаг изменения яркости int buttonPlus=2; // Номер Pin к которому подключена кнопка "+" int buttonMinus=3; // Номер Pin к которому подключена кнопка "-" void setup() { brightness = EEPROM.read(adress); brightness_old=brightness; time=millis(); pinMode(ledPin, OUTPUT); // Инициализируем цифровой вывод ledPin (pin 11) как выход analogWrite(ledPin, brightness); } void loop() { // Этот цикл будет выполняться бесконечное количество раз. if (digitalRead(buttonPlus) == HIGH) { //если на выводе 2 (кнопка "+") высокий уровень (нажата), то brightness += fadeValue; // прибавляем значение яркости с шагом fadeValue if(brightness>255) brightness==255; } if (digitalRead(buttonMinus) == HIGH) { //если на выводе 3 (кнопка "-") высокий уровень (нажата), то brightness -= fadeValue; // уменьшаем значение яркости с шагом fadeValue if(brightness<=0)brightness=0; } brightness = constrain(brightness, 0, 255); // Эта функция задает крайние точки диапазона для переменной brightness 0 и 255 analogWrite(ledPin, brightness); // устанавливаем на выводе ledPin значение яркости яркость brightness delay(50); // Пауза 50 миллисекунд. if((millis()-time)>zaderzka) { if(brightness!=brightness_old) { EEPROM.write(adress,(byte)brightness); brightness_old=brightness; } time=millis(); } } Не убавлялось до полного отключения. В строке if(brightness<=0)brightness=5; поменял 5 на 0 - if(brightness<=0)brightness=0; Верно ли я понял? Не запоминает теперь позицию. Все время включается из одной позиции.
  4. @skripach , спасибо! Запоминает позицию. Два вопроса. 1) Можно ли заменить бесконечный цикл, т.е. при что бы при нажатии на кнопку убавить в минимум потом не зажигалось в полный накал и тоже самое с кнопкой прибавить - не перескакивал на минимальный уровень? Собственно так было и задумано что при убавлении не включался максимум и наоборот. 2) При включении питания на 1 секунду зажигается светильник на максимум, а потом на уровень сохранившийся в памяти. Можно ли что бы при включении не зажигалось на момент на максимум, а сразу с сохраненного уровня?
  5. @snn_krs , в строке brightness = EEPROM.get(0, e_br); выдает ошибку: This report would have more information with "Show verbose output during compilation" enabled in File > Preferences. Arduino: 1.0.6 (Windows 7), Board: "Arduino Nano w/ ATmega328" sketch_jul04a.ino: In function 'void setup()': sketch_jul04a:12: error: 'class EEPROMClass' has no member named 'get' sketch_jul04a.ino: In function 'void loop()': sketch_jul04a:25: error: 'class EEPROMClass' has no member named 'update' Сам скетч: #include <EEPROM.h>; unsigned int e_br; int ledPin = 11; // Присваиваем имя ledPin цифровому выводу 11, к которому подключен светодиод int brightness =0; // переменная для задания яркости int fadeValue = 5; // шаг изменения яркости int buttonPlus=2; // Номер Pin к которому подключена кнопка "+" int buttonMinus=3; // Номер Pin к которому подключена кнопка "-" void setup() { brightness = EEPROM.get(0, e_br); pinMode(ledPin, OUTPUT); // Инициализируем цифровой вывод ledPin (pin 11) как выход } void loop() { // Этот цикл будет выполняться бесконечное количество раз. if (digitalRead(buttonPlus) == HIGH) { //если на выводе 2 (кнопка "+") высокий уровень (нажата), то brightness += fadeValue; // прибавляем значение яркости с шагом fadeValue } if (digitalRead(buttonMinus) == HIGH) { //если на выводе 3 (кнопка "-") высокий уровень (нажата), то brightness -= fadeValue; // уменьшаем значение яркости с шагом fadeValue } brightness = constrain(brightness, 0, 255); // Эта функция задает крайние точки диапазона для переменной brightness 0 и 255 analogWrite(ledPin, brightness); // устанавливаем на выводе ledPin значение яркости яркость brightness delay(50); // Пауза 50 миллисекунд. EEPROM.update(0, brightness ); }
  6. Выдает ошибку при проверке: This report would have more information with "Show verbose output during compilation" enabled in File > Preferences. Arduino: 1.0.6 (Windows 7), Board: "Arduino Nano w/ ATmega328" sketch_jul04a.ino: In function 'void loop()': sketch_jul04a:24: error: 'eeprom_update_word' was not declared in this scope
  7. @ARV , Посмотрите пожалуйста. Верно ли я вставил строки? #include <avr/eeprom.h> EEMEM unsigned int e_br; int ledPin = 11; // Присваиваем имя ledPin цифровому выводу 11, к которому подключен светодиод int brightness =0; // переменная для задания яркости int fadeValue = 5; // шаг изменения яркости int buttonPlus=2; // Номер Pin к которому подключена кнопка "+" int buttonMinus=3; // Номер Pin к которому подключена кнопка "-" void setup() { brightness = eeprom_read_word(&e_br); pinMode(ledPin, OUTPUT); // Инициализируем цифровой вывод ledPin (pin 11) как выход } void loop() { // Этот цикл будет выполняться бесконечное количество раз. if (digitalRead(buttonPlus) == HIGH) { //если на выводе 2 (кнопка "+") высокий уровень (нажата), то brightness += fadeValue; // прибавляем значение яркости с шагом fadeValue } if (digitalRead(buttonMinus) == HIGH) { //если на выводе 3 (кнопка "-") высокий уровень (нажата), то brightness -= fadeValue; // уменьшаем значение яркости с шагом fadeValue } brightness = constrain(brightness, 0, 255); // Эта функция задает крайние точки диапазона для переменной brightness 0 и 255 analogWrite(ledPin, brightness); // устанавливаем на выводе ledPin значение яркости яркость brightness delay(50); // Пауза 50 миллисекунд. eeprom_update_word(&e_br, &brightness); }
  8. Я так понимаю что нужно что-то типа такого скетча? /* * EEPROM Write * * Сохраняет в энергонезависимой памяти EEPROM значения, * считанные с аналогового входа analog input 0. * Данные значения останутся в памяти и после отключения питания * от платы и в будущем могут быть доступны для * другого скетча. */ #include <EEPROM.h> // текущее значение адреса EEPROM int addr = 0; void setup() { } void loop() { // деление на 4 необходимо, чтобы перевести значение от // 0-1023 к одному байту, т.к. EEPROM может хранить только // значения от 0 до 255. int val = analogRead(0) / 4; // записываем значение в энергонезависимую память EEPROM.write(addr, val); // устанавливаем следующую ячейку памяти. // т.к. EEPROM содержит всего 512 ячеек – при достижении // конца памяти – возвращаемся на начало addr = addr + 1; if (addr == 512) addr = 0; delay(100); } А как теперь объединить управление яркостью и запись в память значения этой яркости?
  9. Сам скетч простой: int ledPin = 11; // Присваиваем имя ledPin цифровому выводу 11, к которому подключен светодиод int brightness =0; // переменная для задания яркости int fadeValue = 5; // шаг изменения яркости int buttonPlus=2; // Номер Pin к которому подключена кнопка "+" int buttonMinus=3; // Номер Pin к которому подключена кнопка "-" void setup() { pinMode(ledPin, OUTPUT); // Инициализируем цифровой вывод ledPin (pin 11) как выход } void loop() { // Этот цикл будет выполняться бесконечное количество раз. if (digitalRead(buttonPlus) == HIGH) { //если на выводе 2 (кнопка "+") высокий уровень (нажата), то brightness += fadeValue; // прибавляем значение яркости с шагом fadeValue } if (digitalRead(buttonMinus) == HIGH) { //если на выводе 3 (кнопка "-") высокий уровень (нажата), то brightness -= fadeValue; // уменьшаем значение яркости с шагом fadeValue } brightness = constrain(brightness, 0, 255); // Эта функция задает крайние точки диапазона для переменной brightness 0 и 255 analogWrite(ledPin, brightness); // устанавливаем на выводе ledPin значение яркости яркость brightness delay(50); // Пауза 50 миллисекунд. } Знания в программировании минимальные. Можете помочь написать управление памятью? Раз в минуту это наверное большой интервал, может лучше поменьше временной интервал?
  10. Добрый день. Пожалуйста помогите решить проблему запоминания текущего уровня в блоке управления светильником. Питание светодиодов 12 Вольт через драйвер. Имеется Arduino nano микроконтроллере ATmega328, управление на 2х кнопках: 1а убавить яркость и 2я прибавить яркость. Все работает, но при отключении питания все сбрасывается на минимальные значения установленные программой загруженной в Arduino. Как сделать так что бы при отключения сохранялись настройки яркости установленные в момент работы светильника?
  11. Я на стабилизаторе лучше сделаю. Как-то спокойней на мой взгляд.
  12. Спасибо! Еще подскажите пожалуйста. Этот ШИМ регулятор питается от 5 Вольт, питание всего устройства, которое я пытаюсь собрать (светильник для аквариума) питается от 12 Вольт 5 Ампер. Если использовать стабилизатор напряжения 7805 по такой схеме подключения как на рисунке во вложении не разорвет его мощность 60 Ватт?
  13. Параллельно светодиодам (я писал что в цепочке три LED-а по 3 Ватта каждый, напряжение питания каждого светодиода 3,8 Вольт) я подключил конденсатор 47мкФх16В разницы не видел. Может емкость нужно поставить меньше? Вот у этого ШИМ регулятора частота по умолчанию 20кГц
  14. Скажите пожалуйста такой ШИМ регулятор подойдет? Или такой ШИМ регулятор? В идеале нужно модуль с ручками управления на 5 каналов.
  15. А почему при регулировке переменным резистором в самом конце когда диоды только зажигаются происходит видимое глазу мерцание? Каким шим генератором (малогабаритным) можно регулировать яркость?
  16. Вот так как на среднем изображении.
  17. Приветствую. Нужен совет как лучше сделать. Есть лед драйвер на микросхеме PT4115. У нее есть выход pwm. Мне нужно плавно регулировать яркость но не контроллером а вручную. В инете читал что можно на этот выход pwm и общий минус поставит резистор 150-200к. Попробовал 100к, но не нравится к в самом конце когда диоды только зажигаются происходит видимое глазу мерцание. Потом по мере розжига проходит. Как быть, как это исправить? Нужна именно регулировка вручную без всяких контроллеров. Как это осуществить? БП 12В 5А, драйвер 0.7А. В цепочке три LED-а по 3 Ватта каждый, напряжение питания каждого светодиода 3,8 Вольт. Заранее благодарю.
×
×
  • Создать...