Помогите клоуну допилить скетч,мучаюсь второй день,депресссия

Реализовать управление яркостью с помощью кнопки и функции analogWrite() – при нажатой кнопке яркость светодиода постепенно нарастает, при отпущенной остается неизменной. Яркость должна нарастать на 12 пунктов в секунду (имеется в виду градация по шкале от 0 до 255, где 0 – минимум, 255 – максимум).

#define button1 2
#define led1 13

boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;

int brightness = 0;    // уставливаем начально значение яркости
int fadeAmount = 12;    // шаг приращения/убывания яркости
 
void setup()  {
  // устанваливаем пин 13 в режим выхода
  pinMode(button1, INPUT);  //настариваем пин кнопки на вход
  pinMode(led1, OUTPUT);    //настариваем пин светодиода на выход
// функция для подавления дребезга
}
boolean debounse(boolean last) {
boolean current = digitalRead(button1);
if(last != current) {
delay(5);
current = digitalRead(button1);
}
return current;
}

void loop()  {
  currentButton = debounse(lastButton);
  
  currentButton = debounse(lastButton);
//первый цикл, постепенно включает светодиодик
if(lastButton == LOW && currentButton == HIGH) {
}
currentButton = debounse(lastButton);
  
  // устанавливаем значение широты импульса на выходе 13
  // задавая яркость светодиода
  analogWrite(led1, brightness);   
 
  // измением значение в переменной для яркости
  brightness = brightness + fadeAmount;
 
  // при достижение крайних значений для яркости
  // меняем знак переменной шага приращения/убывания яркости
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  }   
  // делаем паузу для достижения плавного наращивания/убывания яркости  
  delay(30);                           
}

До ардуины плохо доходит?

Это что за шляпа?

Код взят вот отсюда.

это-то не шляпа, а вот то что у него last всегда один и тот же и не меняется - это шляпа

Причём, похоже, в крайне извращённой форме.

Первый цикл, постепенно включает светодид.
да код брал, на чужик примерах учиться легче

и delay(30) - не коррелируют сильно !!!

Не цикл. Ничего не включает. Абсолютно. Вообще ничего не делает.

это где??? в коде этого нет

В оригинале было ещё интереснее (код там в комментариях, по той ссылке, что дал)

if (lastButton == LOW && currentButton == HIGH) {
       for(int i=ledLevel;i 255) ledLevel = 0;
}

Очевидно, что HTML съел знак сравнения, компилятор стал ругаться. Вот ТС эту строчку и выбросил :slight_smile:

Только не спрашивайте меня зачем 255 раз присваивать ноль переменной ledLevel. Не знаю. Наверное, для надёжности.

1 лайк

мне вот интересно, ТС в лом посмотреть на каких пинах возможен analogWrite? Пин 13 - этот гвоздь не в ту стену, это так сказать самое самое начало

зато на 13м светик уже есть - это ж удобно :))))

1 лайк

Спасибо,уже посмотрел,переделал на 9 порт,копаю дальше

Тлеет надежда, что в роли “лопаты” если не книшко про С++, то хотя бы справочник по Wire. Я такой наивный, да?))

нет,я просто гуманитарий :laughing:

Артист цирка? Кстати, а вот интересно, депрессия у клоунов это профессиональное заболевание? Ну, типа как язва у дальнобойщиков?

Скорее как тунельный синдром