roboforum.ru

Технический форум по робототехнике.

Помогите исправить скетч.

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Помогите исправить скетч.

Сообщение Alex-26rus » 28 сен 2016, 20:44

Здравствуйте уважаемые форумчане!
Помогите пожалуйста исправить (дописать) скетч.
Идея такая: при нажатии и удержании кнопки, светодиод горит с минимальной яркостью. Отпускаем кнопку- светодиод тухнет, нажимаем (и удерживаем) снова- светодиод горит ярче и т.д по кругу.
Задача сделать так, чтоб условие выполнения цикла выполнялось в том случае, если пауза между нажиманиями кнопки была не более 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);
// а иначе выключаем все
}
Alex-26rus
 
Сообщения: 1
Зарегистрирован: 28 сен 2016, 20:42

Re: Помогите исправить скетч.

Сообщение Holmes » 29 сен 2016, 16:49

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


Вернуться в Arduino и другие Xduino

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

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