用blinker做一个可调速的RGB笔记本散热风扇-Arduino中文社区 - Powered by Discuz! Archiver

张德帥 发表于 2019-8-1 23:30

用blinker做一个可调速的RGB笔记本散热风扇

       首先我们用到的材料有 arduino nano、蓝牙模块、da大功率mos管模块、散热风扇、ws2812b灯带\DC-DC电源等材料。
说一下思路,风扇通过大功率mos管控制进风量,手机通过蓝牙控制风扇的转速以及灯带的颜色。
引脚接法:
arduino -----蓝牙
11-----TX
12-----RX
GND-----GND
VCC----- VCC

arduino -----ws2812b灯带
4-----DIN
GND-----GND
外接电源+-----VCC

arduino -----大功率mos管模块
GND-----GND
3-----pwm+
DC+和DC-接电源输入
OUT+和OUT-接风扇


(注:风扇和灯带的电源推荐用外接电源,不然电流不稳定会影响arduino正常工作)

手机端设置:


代码如下:
#define BLINKER_PRINT    Serial
#define BLINKER_BLE
#include <PWM.h>
#include <Blinker.h>
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN            4   //ws2812b灯带引脚
#define NUMPIXELS      16//灯珠数量
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
#define RGB_1 "RGBKey"
BlinkerSlider Slider1("fan");
BlinkerRGB RGB1(RGB_1);
void slider1_callback(int32_t value1)
{
    BLINKER_LOG("get slider value: ", value1);
    OCR2B = value1; //Toggle value B, Output at pin 3
}
void rgb1_callback(uint8_t r_value, uint8_t g_value, uint8_t b_value, uint8_t bright_value)
{
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
    BLINKER_LOG("R value: ", r_value);
    BLINKER_LOG("G value: ", g_value);
    BLINKER_LOG("B value: ", b_value);
    BLINKER_LOG("Rrightness value: ", bright_value);

    uint8_t colorR = map(r_value, 0, 255, 0, bright_value);
    uint8_t colorG = map(g_value, 0, 255, 0, bright_value);
    uint8_t colorB = map(b_value, 0, 255, 0, bright_value);

    for(int i = 0; i < NUMPIXELS; i++)
    {
      pixels.setPixelColor(i, pixels.Color(colorR,colorG,colorB));
      pixels.show();
    }
}

void setup()
{
    Serial.begin(115200);
    #if defined(BLINKER_PRINT)
    BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);
    Blinker.begin(11, 12);//设置数字IO口11(RX)12(TX)这两个脚接蓝牙TX RX
    pixels.begin();
    Slider1.attach(slider1_callback);
    RGB1.attach(rgb1_callback);
    InitTimersSafe();
    pinMode(3, OUTPUT);//风扇引脚
    TCCR2A = _BV(COM2A0) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20); //Set Timer2 to varying top limit fast PWM mode
    // TCCR2B = _BV(WGM22) | _BV(CS22) | _BV(CS21) | _BV(CS20);//another way to set prescaler CS2=fff
    TCCR2B = TCCR2B & 0b11111000 | 0x01;
    OCR2A = 255;
    OCR2B = 10;
}

void loop()
{
Blinker.run();
//Serial.println(i);
}

张德帥 发表于 2019-8-1 23:44

本帖最后由 张德帥 于 2019-8-1 23:46 编辑

给大家看一下制作过程中的图片吧
制作过程中换了很多方案主要是换了风扇,换了控制风扇的元器件。
成品图没怎么拍照,只找到一张。

Creeper666 发表于 2019-8-1 23:45

有成品图片不?
放上来欣赏欣赏~

张德帥 发表于 2019-8-1 23:47

Creeper666 发表于 2019-8-1 23:45
有成品图片不?
放上来欣赏欣赏~

刚刚上传,

张德帥 发表于 2019-8-2 00:05

刚刚把它拆开拍了几张照片

张德帥 发表于 2019-8-2 00:06

欢迎大家来交流:lol
页: [1]
查看完整版本: 用blinker做一个可调速的RGB笔记本散热风扇