четверг, 8 февраля 2018 г.

РЕГУЛИРОВКА ЯРКОСТИ СВЕТОДИОДА ШИМ ДВУМЯ КНОПКАМИ

Ссылка на оригинал: http://publicatorbar.ru/regulirovka-yarkosti-svetodioda-shim-dvumya-knopkami/
Скопировано чтобы не потерять.

В проектах часто используются кнопки для управления. Например, одной кнопкой что-то прибавляем, другой — уменьшаем. Разберем на примере управления яркостью светодиода.
НАМ ПОНАДОБИТСЯ
  • Плата Arduino Uno
  • Один светодиод
  • Один резистор сопротивлением 220-270 Ом.
  • Два резистора сопротивлением 10-100 кОм.
  • Две кнопки.
  • Провода
  • Макетная плата
Резистор R1 ограничивает ток на светодиоде. Резисторы R2 и R3 «подтягивают» входные пины к нулю, чтобы не было ложных срабатываний. И так как управление светодиодом реализовано с помощью ШИМ (широтно-импульсная модуляция), то светодиод необходимо подключить только к определенным выводам платы ардуино.
В ардуино ШИМ можно реализовать на цифровых выводах, обозначенных PWM или ~. На плате Arduino Uno это D03, D05, D06, D10, D11. И скважность импульса задается в пределах от 0 до 255.
В данном скетче кнопка «+» с шагом 5 увеличивает яркость светодиода от 0 до 255, а кнопка «-» уменьшает.

int ledPin = 11;      // Присваиваем имя ledPin цифровому выводу 11, к которому подключен светодиод
int brightness =0;    // переменная для задания яркости
int fadeValue = 5;    // шаг изменения яркости
int buttonPlus=2;     //  Номер Pin к которому подключена кнопка "+" 
int buttonMinus=3;    //  Номер Pin к которому подключена кнопка "-"
 
void setup()  { 
pinMode(ledPin, OUTPUT); // Инициализируем цифровой вывод ledPin (pin 11) как выход
} 
void loop()  { // Этот цикл будет выполняться бесконечное количество раз.
  if (digitalRead(buttonPlus) == HIGH) { //если на выводе 2 (кнопка "+") высокий уровень (нажата), то
    brightness +=  fadeValue; // прибавляем значение яркости с шагом fadeValue
  }   
  if (digitalRead(buttonMinus) == HIGH) { //если на выводе 3 (кнопка "-") высокий уровень (нажата), то
    brightness -=  fadeValue; // уменьшаем значение яркости с шагом fadeValue
  }   
  brightness = constrain(brightness, 0, 255); // Эта функция задает крайние точки диапазона 
                                             //для переменной brightness 0 и 255
  analogWrite(ledPin, brightness);    // устанавливаем на выводе ledPin значение яркости яркость brightness
  delay(50); // Пауза 50 миллисекунд.                            
}
 
 
 
-----------------------------
#include <Adafruit_NeoPixel.h>
int val;
int IN1 = 9; // motor
int motorPower = 0; 
int fadeValue = 5; // шаг изменения скорости
Adafruit_NeoPixel strip = Adafruit_NeoPixel(3, 6, NEO_GRB + NEO_KHZ800);

void setup()
{
  Serial.begin(9600);
  pinMode(IN1, OUTPUT);
  strip.begin(); // инициализируем ленту
  strip.show(); // выключаем ленту
}

void loop()
{
  if (Serial.available())
  {
  val = Serial.read();
  if (val == '1')     // увеличиваем скорость
      {
        motorPower += fadeValue;       
      }
  if (val == '2') // уменьшаем скорость
      {
        motorPower -= fadeValue;    
      }
  }
  if (val == '3') // зеленый
  {
    strip.show();
    strip.setPixelColor(0, 0, 255, 0);
    strip.setPixelColor(1, 0, 255, 0);
    strip.setPixelColor(2, 0, 255, 0);
  }
  if (val == '4') // синий
  {
    strip.show();
    strip.setPixelColor(0, 0, 0, 255);
    strip.setPixelColor(1, 0, 0, 255);
    strip.setPixelColor(2, 0, 0, 255);
  }
  if (val == '5') // красный
  {
    strip.show();
    strip.setPixelColor(0, 255, 0, 0);
    strip.setPixelColor(1, 255, 0, 0);
    strip.setPixelColor(2, 255, 0, 0);
  }
  motorPower = constrain(motorPower, 0, 255);
  analogWrite(IN1, motorPower);
  delay(50);   
} 

Комментариев нет:

Отправить комментарий

Lego Batman

Фотография стены