roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 фев 2025, 18:27

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Помогите исправить скетч.
СообщениеДобавлено: 28 сен 2016, 20:44 
Не в сети

Зарегистрирован: 28 сен 2016, 20:42
Сообщения: 1
Здравствуйте уважаемые форумчане!
Помогите пожалуйста исправить (дописать) скетч.
Идея такая: при нажатии и удержании кнопки, светодиод горит с минимальной яркостью. Отпускаем кнопку- светодиод тухнет, нажимаем (и удерживаем) снова- светодиод горит ярче и т.д по кругу.
Задача сделать так, чтоб условие выполнения цикла выполнялось в том случае, если пауза между нажиманиями кнопки была не более 1 секунды. Если пауза более одной секунды, то независимо в каком предидущем состоянии яркости был светодиод, он зажигался с минимальной яркостью. Типа цикл начинается сначала.
Вот сам скетч:

int switchPin = 10;
int ledPin = 11;
boolean lastButton = LOW;
int ledLevel = 0; //
boolean currentButton = LOW;
int stepp = 51;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}

boolean debounce(boolean last)
{
boolean current = digitalRead(switchPin);
if (last != current)
{
delay(5);
current = digitalRead(switchPin);
}
return current;
}

void loop()
{
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH)
{
ledLevel = ledLevel + stepp; // Меняем значение яркости на stepp
}
lastButton = currentButton;

if (ledLevel > 255) ledLevel = stepp; // Ограничиваем макс. значение в 255
// и вместо нуля включаем мин яркость

if (currentButton==HIGH) analogWrite(ledPin, ledLevel);
// эта строчка будет зажигать светодиод с нужной яркостью
//но только если кнопка нажата
else analogWrite(ledPin, 0);
// а иначе выключаем все
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите исправить скетч.
СообщениеДобавлено: 29 сен 2016, 16:49 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2010, 14:22
Сообщения: 230
Откуда: Москва
прог. языки: Java, Javascript, C
ФИО: Роман
Вы на бумажке алгоритм выписывать пробовали?
Для начала я бы избавился от delay() и переписал бы всё на конечный автомат, который постоянно в цикле читает кнопку.
...а еще использовал бы тег CODE при публикации скетча =)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO