Включение/выключение света с регулировкой яркости
- Войдите на сайт для отправки комментариев
Всем доброго времени суток. Простите если не туда, я новичёк, ещё не разобрался куда писать и как правильно задавать вопросы.
Вопрос в следующем. Есть код. Нажатием на кнопку мы включаем свет(пока светодиод), длительным удержанием уменьшаем яркость, повторным удержанием увеличиваем...
Мне нужно сделать несколько таких каналов. Тоесть каждая кнопка управляет своим светодиодом.
Ардуинку только осваиваю, не пойму как кланировать код в несколько раз. Помогите пожалуста.
Сам код:
int ledPin = 10; // Выход ШИМ на диммер
int powerPin = 9; // Вход с кнопки
uint8_t pwmLevel = 255;
boolean pwmStat = false;
boolean pwmInc = true;
uint32_t ms, ms1 = 0;
boolean press_flag = false;
uint16_t press_cnt = 0;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(powerPin, INPUT);
}
void loop()
{
ms = millis();
// Получаем сигнал от кнопки
if (digitalRead(powerPin) == HIGH) {
press_flag = true;
}
if ( ( ms - ms1 ) > 200 || ms < ms1 ) {
// Если нажата клавиша
if ( press_flag ) {
press_cnt++;
// Если лампа включена
if ( pwmStat ) {
// Инвертируем флаг уменьшения/увеличения
if ( press_cnt == 5 ) {
pwmInc = !pwmInc;
}//pres_cnt = 0
// Изменям значение диммера
else if ( press_cnt > 5 ) {
if ( pwmInc ) {
if ( pwmLevel < 239 )pwmLevel += 16;
else pwmLevel = 255;
}//pwmInc
else {
if ( pwmLevel > 50 )pwmLevel -= 16;
else pwmLevel = 34;
}// else pwmInc
}
Serial.print("Mode=");
Serial.print(pwmInc);
Serial.print(" level=");
Serial.print(pwmLevel);
Serial.print(" count=");
Serial.println(press_cnt);
analogWrite(ledPin, pwmLevel);
}
}
else {
// Короткое (менее 1 сек) нажатие клавиши
if ( press_cnt > 0 && press_cnt < 5 ) {
// Включение/отключение лампы
pwmStat = !pwmStat;
if ( pwmStat ) {
digitalWrite(powerPin, HIGH);
analogWrite(ledPin, pwmLevel);
}
else {
analogWrite(ledPin, 0);
digitalWrite(powerPin, LOW);
}
Serial.print("Press=");
Serial.print(pwmStat);
Serial.print(" level=");
Serial.print(pwmLevel);
Serial.print(" count=");
Serial.println(press_cnt);
}
press_cnt = 0;
}
ms1 = ms;
press_flag = false;
}
}
Для начала прочитать вот это - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
А потом ... скажите пожалуйста, а что Вам мешает обратиться к автору кода?
Простите если не туда, я новичёк, ещё не разобрался куда писать
Вам нужно разместить Вашу просьбу вот здесь - http://arduino.ru/forumy/ishchu-ispolnitelya
Для начала прочитать вот это - http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
А потом ... скажите пожалуйста, а что Вам мешает обратиться к автору кода?
По вставке кода спасибо что подсказали. Не знал. Впредь буду делать правильно.
А автора я не знаю. Нашёл где-то в инете, но скетч работал от пульта, я его подправил для работы от кнопки.
Всё. Мозг взорван...
Вроде всё заработало. Выключил, пришёл через час, пробую по новой вгружать, то ничего, просто экран без символов, то кракозябры, то что-то моргает... Что может быть?
Вод код который работал, а потом перестал.
Извините, а как правильно добавлять библиотеки? В одном месте читал что в ручную кидаем в Documents\Arduino\libraries
В другом что Program Files\Arduino\libraries
В третьем что лучше устанавливать автоматически
В среде разработки Ардуино выберите меню Sketch > Import Library. В самом верху выпадающего списка выберите пункт Add Library (Добавить библиотеку).
Бред какой-то получается... Мучался мучался с библиотеками... Всё удалил, потом поставил по новой. Вроде заработало. Попытался добавит фрагмент скетча с термометрами и библиотеку DallasTemperatu начало вё моргать и показывать бред. Опять всё удалил и вернул как было.... Каждая загрузка что-то новое. То кракозябры, то задом наперёд и буквы попутаны, то экран моргает...
Такое бывает обычно если:
1. В программе проблемы с памятью/указателями
2. Аппаратуры неправильно подключена (какие-то выводы "болтаются в воздухе и ловят помехи" и т.п.)
Вобщем разобрался. Глючный дисплей... Подключил другой, и всё заработало...
Господа модераторы, простите, попутал темы... Если можно, для порядка перенисите последние сообщения про настройку дисплея сюда http://arduino.ru/forum/apparatnye-voprosy/lcd-1602-i-i2c-pcf8574at#comm...
Люди добрые, помогите плисс с скетчем в первом посте. Ну баран я. Только учусь, не понимаю что надо делать, опытным путём пробую, но всё нетуда...