четверг, 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);   
} 

понедельник, 5 февраля 2018 г.

Странное сообщение.

















#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <SPI.h>
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#define BME_SCK 14
#define BME_MISO 12
#define BME_MOSI 13
#define BME_CS 15

#define SEALEVELPRESSURE_HPA (1011)

//connect #0,#15 -> low 220 ohm R, take #2 high - cycle
//HSPI 12-MISO, 13-MOSI, 14-CLOCK, 15-CS (16)

char auth[] = "xxxxxxxxxxxxxxxxxxxxxx";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "xxxxxxx";
char pass[] = "xxxxxxxxx";

//Adafruit_BME280 bme(BME_CS);
Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);

SimpleTimer timer;

void sendSensor()
{
  Wire.begin(); //just added
  float t = bme.readTemperature();
  float p  = (bme.readPressure() / 100.0F);
  float h =  bme.readHumidity();
  float a =  bme.readAltitude(SEALEVELPRESSURE_HPA);
  if (isnan(t) || isnan(p) || isnan(h) || isnan(a)) {
    Serial.println("Failed to read from BME sensor!");
    return;
  }
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V0, t);
  Blynk.virtualWrite(V1, p);
  Blynk.virtualWrite(V2, h);
  Blynk.virtualWrite(V3, a);
}

void setup()
{
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);
  while (Blynk.connect() == false)
    bme.begin();
  timer.setInterval(1000L, sendSensor);
}

void loop() {
  Blynk.run();
  timer.run();
}

------------------------------------------------------------------------------
if (!bme.begin()) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
  }
------------------------------------------------------------------------------
#include <SPI.h>
------------------------------------------------------------------------------

Lego Batman

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