Показано с 1 по 5 из 5
  1. #1
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    59
    Сообщений
    213
    Вес репутации
    231

    По умолчанию Регулировка +/-

    Есть некая заготовка кода: нажимаем одну клавишу - увеличивается яркость свечения светодиода, нажимаем другую - уменьшается.

    Одна беда - не получается вырваться из цикла: при достижении максимальных/минимальных значений параметр переходит через крайнюю точку (а нужно, чтобы он в них останавливался). Перепробовал кучу разных вариантов - не осилил...

    PHP код:
    // set pin numbers:
    const int redPin   9;   // Red LED,   connected to digital pin 9
    const int buttonPin3 2;  //Уменьшение
    const int buttonPin4 3;  //Увеличение


    // Program variables set as integer (number) type
    int redLEDValue   255// Variables to store the values to send to the pins

    int i 0;     // Loop counter
    int buttonState 0;   

    //setup the pins/ inputs & outputs
    void setup()
    {
    pinMode(redPinOUTPUT);   // sets the pins as output
    pinMode(buttonPin3INPUT);  
    pinMode(buttonPin4INPUT);
    }

    // Main program count to 763, a third of the way switch the incrementing of the LED
    void loop() {
         
         
    += 1;      // Increment counter
         
     
    buttonState digitalRead(buttonPin3);

    if (
    buttonState == HIGH){ // Уменьшение

    redLEDValue -= 1// Red down
    }
    else if (
    509// Second phase of fades
    {
    redLEDValue 1// Red low
      
    }
        

      
    buttonState digitalRead(buttonPin4);

    if (
    buttonState == HIGH) {  // Увеличение

    redLEDValue += 1// Red up
    }
    else if (
    763// Third phase of fades
    {
    redLEDValue += 1// Red up
      
    }

    // analogWrite() expects 2 parameters, the object/pin and a value between 0 (off) and 255 (full on)
    analogWrite(redPin,   redLEDValue);   // Write current values to LED pins


    delay(50); // Pause for xx milliseconds before resuming the loop

    Понимаю, что решение где-то на поверхности, но...

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Регулировка +/-

    примерно так для уменьшения
    PHP код:
    if (buttonState == HIGH && redLEDValue 1){ // Уменьшение

    redLEDValue -= 1// Red down

    и для увеличения
    PHP код:
    if (buttonState == HIGH && redLEDValue 255 ) {  // Увеличение 

    redLEDValue += 1// Red up 

    Последний раз редактировалось Chip; 01.02.2010 в 14:05.

  3. #3
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    59
    Сообщений
    213
    Вес репутации
    231

    По умолчанию Re: Регулировка +/-

    СПАСИБО! А я-то зачем-то пытался это сделать через while...

  4. #4
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    685

    По умолчанию Re: Регулировка +/-

    ну вообще хорошим тоном считается:

    PHP код:
    void loop() { 
          
         
    i++;      // Increment counter 
    PHP код:
    redLEDValue++ // Red up 
    PHP код:
    redLEDValue-- // Red down 
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

  5. #5
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    59
    Сообщений
    213
    Вес репутации
    231

    По умолчанию Re: Регулировка +/-

    2 (vS)

    Понимаю, что это реплика скорее в адрес Chip`а, но и его пойми правильно: я привел конкретный пример, на котором забуксовал, а он без лишних слов поправил именно его.

    Путем, предложенным тобой, я тоже пытался двинуться - но программированием я занимался до Ардуины крайний раз лет 25 назад, в универе. И был это Fortran...

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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