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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3566|回复: 5

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

[复制链接]
发表于 2019-8-1 23:30 | 显示全部楼层 |阅读模式
       首先我们用到的材料有 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正常工作)
O1CN01ctcTjA1GbcQRiYVwy_!!44390641.jpg
手机端设置:
Screenshot_2019-08-01-23-20-51-156_iot.clz.me.jpg Screenshot_2019-08-01-23-25-59-674_iot.clz.me.jpg Screenshot_2019-08-01-23-26-02-644_iot.clz.me.jpg

代码如下:
[mw_shl_code=arduino,true]#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);
}[/mw_shl_code]

 楼主| 发表于 2019-8-1 23:44 | 显示全部楼层
本帖最后由 张德帥 于 2019-8-1 23:46 编辑

给大家看一下制作过程中的图片吧
制作过程中换了很多方案主要是换了风扇,换了控制风扇的元器件。
成品图没怎么拍照,只找到一张。
63D7DF8B8F6475328DA7F7A158AB8612.jpg ED4DB3AC0EEC4B9413386E138A149739.jpg 599128DA5A3997B7B4C9F3BF9F8E45F7.jpg 3260CAC983EB7E775A7523D93BBEB84F.jpg 9A7F6D9041C31EAF1A8776BDEB6A08D3.jpg
发表于 2019-8-1 23:45 | 显示全部楼层
有成品图片不?
放上来欣赏欣赏~
 楼主| 发表于 2019-8-1 23:47 | 显示全部楼层
Creeper666 发表于 2019-8-1 23:45
有成品图片不?
放上来欣赏欣赏~

刚刚上传,
 楼主| 发表于 2019-8-2 00:05 | 显示全部楼层
刚刚把它拆开拍了几张照片 0F4E0BEC07A0EEA6435C7D8DBDCBEC16.jpg 33F8EE8B91B52C4DAC63611C2BCDF5E5.jpg 9A721663113B9173502653150BBEAECD.jpg 69B194FB0B106DB71B9EF0BA049171DE.jpg F0B469B34AD65D3737D514BE7B518546.jpg

 楼主| 发表于 2019-8-2 00:06 | 显示全部楼层
欢迎大家来交流
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 19:47 , Processed in 0.100240 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表