Регулирование яркости Светодиода

smexopsix
Offline
Зарегистрирован: 11.08.2017

int KHPUSK = 3;
int KHSTOP = 4;
int L1 = 11;
int POTENC = 0;
int A;
int B;

void setup() {
  pinMode (KHPUSK,INPUT);
  pinMode (KHSTOP,INPUT);
  pinMode (L1,OUTPUT);
  pinMode (POTENC, INPUT);
 
}

void loop() {
 
A=analogRead(POTENC)/4;

if(digitalRead(KHPUSK)==1 && digitalRead(KHSTOP)==0)
{
analogWrite(L1,A);
}

if(digitalRead(KHSTOP) == 1) digitalWrite(L1,LOW);

}

 

Ребят подскажите, как сделать что бы при включении светодиода кнопкой можно было регулировать его яркость ? А то у меня получается что только при каждом новом нажатии на кнопку KHPUSK светодиод меняет яркость в зависимости от показаний потенцеомметра. И ещё один маленький вопросик нуба :) Как правильно присваивать в программе имена аналоговым входам, если и цифровые на плате идут с 2 по 13 и аналоговые с 0 по 5 ? Получается 3,4,5 входа пересекаются...

Напрмер я пишу int ABC=5;  это значит что ABC это пятый цифровой пин. А как написать что бы ABC был пятый аналоговый пин ?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015
kalapanga
Онлайн
Зарегистрирован: 23.10.2016

smexopsix пишет:

Напрмер я пишу int ABC=5;  это значит что ABC это пятый цифровой пин. А как написать что бы ABC был пятый аналоговый пин ?

Посмотреть хотя бы идущие с IDE примеры религия не позволяет?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

smexopsix пишет:

Ребят подскажите, как сделать что бы при включении светодиода кнопкой можно было регулировать его яркость ? А то у меня получается что только при каждом новом нажатии на кнопку KHPUSK светодиод меняет яркость в зависимости от показаний потенцеомметра.

Объясните, чем то, что Вы хотите, отличается от того, что получилось?

Вам нужно, чтобы на уже включенный светодиод новое нажатие кнопки никак не сказывалось?

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

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

Xumuk
Xumuk аватар
Offline
Зарегистрирован: 03.03.2016

в данный момент не начем проверить, попробуйте, придумал такой костыль)))

int KHPUSK = 3;
int KHSTOP = 4;
int L1 = 11;
int POTENC = 0;
int A;
int B;

void setup() {
  pinMode (KHPUSK,INPUT);
  pinMode (KHSTOP,INPUT);
  pinMode (L1,OUTPUT);
  pinMode (POTENC, INPUT);
 
}

void loop() {
 //опрос кнопки
if(digitalRead(KHPUSK)==1 && digitalRead(KHSTOP)==0)
{
  while(digitalRead(KHSTOP) == 0){
    A=analogRead(POTENC)/4;
    analogWrite(L1,A);
if(digitalRead(KHSTOP) == 1) digitalWrite(L1,LOW);
    
  }
  }

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
/**/
unsigned int mill;
//------PegLed--------------------------------------
// светодиод с регулятором освещения
class Cl_RegLed {
  protected:
    const byte inPin;
    const byte outPin;
    int led;
    unsigned int past = 0;
  public:
    Cl_RegLed(byte inPin_, byte outPin_): inPin(inPin_), outPin(outPin_) {}
    void setup() {
      pinMode (outPin, OUTPUT);
      OFF();
    }
    void loop() {
      if (mill - past >= 200) {
        past = mill;
        led = analogRead(outPin)/4;
      }
    }
    void ON() {
      analogWrite(outPin, led);
    }
    void OFF() {
      analogWrite(outPin, 0);
    }
};
//------Cl_Btn----------------------
// класс кнопка
class Cl_Btn {
  protected:
    const byte pin;
    void (*Do)();
    bool bounce = 0;
    bool btn = 1, oldBtn;
    unsigned long past;
  public:
    Cl_Btn(byte pin_, void (*Do_)()): pin(pin_), Do(Do_) {}
    void setup() {
      pinMode(pin, INPUT_PULLUP);
    }
    void loop() {
      bool newBtn = digitalRead(pin);
      if (!bounce && newBtn != btn) {
        bounce = 1;
        past = mill;
      }
      if (bounce && mill - past >= 10) {
        bounce = 0 ;
        oldBtn = btn;
        btn = newBtn;
        if (!btn && oldBtn) (*Do)();
      }
    }
};
//-----------Компановка---------------------------------
Cl_RegLed Led(/*пин резистора*/A0,/*пин светодиода*/11);
void DoBtn1() {
  Led.ON();
}
void DoBtn2() {
  Led.OFF();
}
Cl_Btn startBtn(/*пин*/3,/*обработчик*/DoBtn1);
Cl_Btn stopBtn(/*пин*/4,/*обработчик*/DoBtn2);
//-----main-----------------------
int main() {
  init();
  // setup()
  Led.setup();
  startBtn.setup();
  stopBtn.setup();
  for (;;) {
    // loop()
    mill = millis();
    Led.loop();
    startBtn.loop();
    stopBtn.loop();
  }
  return 0;
}
/*Скетч использует 1554 байт (4%) памяти устройства. Всего доступно 32256 байт.
  Глобальные переменные используют 37 байт (1%) динамической памяти, оставляя 2011 байт для локальных переменных. Максимум: 2048 байт.
*/