AkashiRobo / Mbed 2 deprecated arrc_mbed

Dependencies:   mbed

Committer:
TanakaRobo
Date:
Thu Nov 04 12:55:28 2021 +0000
Revision:
16:c3bbd6944a47
Parent:
15:693ce8e6d7f7
Child:
17:ee80b1477af0
simplified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TanakaRobo 0:ca84ed7518f5 1 #ifndef NEOPIXEL_H
TanakaRobo 0:ca84ed7518f5 2 #define NEOPIXEL_H
TanakaRobo 0:ca84ed7518f5 3 #include "mbed.h"
TanakaRobo 5:a7894e6982ea 4 #include <vector>
TanakaRobo 0:ca84ed7518f5 5
TanakaRobo 0:ca84ed7518f5 6 /*
TanakaRobo 0:ca84ed7518f5 7 // Example
TanakaRobo 0:ca84ed7518f5 8
TanakaRobo 7:4ad54efe2fdd 9 NeoPixelOut npx(D12,6);//出力ピン LEDの個数
TanakaRobo 0:ca84ed7518f5 10
TanakaRobo 0:ca84ed7518f5 11 int main() {
TanakaRobo 0:ca84ed7518f5 12 wait(0.2); // wait for HSE to stabilize
TanakaRobo 0:ca84ed7518f5 13
TanakaRobo 8:82727add54ce 14 npx.global_scale = 1.0f; // Adjust brightness 明るさを変えるとき以外書かなくていいよ。
TanakaRobo 15:693ce8e6d7f7 15 npx.normalize = false; // Equalize brightness to make r + g + b = 255
TanakaRobo 0:ca84ed7518f5 16
TanakaRobo 7:4ad54efe2fdd 17 npx.setPixelColor(0,0xff0000);
TanakaRobo 7:4ad54efe2fdd 18 npx.setPixelColor(1,0xffff00);
TanakaRobo 7:4ad54efe2fdd 19 npx.setPixelColor(2,0x00ff00);
TanakaRobo 7:4ad54efe2fdd 20 npx.setPixelColor(3,0x00ffff);
TanakaRobo 7:4ad54efe2fdd 21 npx.setPixelColor(4,0x0000ff);
TanakaRobo 7:4ad54efe2fdd 22 npx.setPixelColor(5,0xff00ff);
TanakaRobo 0:ca84ed7518f5 23
TanakaRobo 7:4ad54efe2fdd 24 npx.show();
TanakaRobo 0:ca84ed7518f5 25
TanakaRobo 0:ca84ed7518f5 26 while(1);
TanakaRobo 0:ca84ed7518f5 27 }
TanakaRobo 16:c3bbd6944a47 28
TanakaRobo 16:c3bbd6944a47 29 または、
TanakaRobo 16:c3bbd6944a47 30 strip[0].hex = 0xff0000;
TanakaRobo 16:c3bbd6944a47 31 strip[1].hex = 0xffff00;
TanakaRobo 16:c3bbd6944a47 32 strip[2].hex = 0x00ff00;
TanakaRobo 16:c3bbd6944a47 33 strip[3].hex = 0x00ffff;
TanakaRobo 16:c3bbd6944a47 34 strip[4].hex = 0x0000ff;
TanakaRobo 16:c3bbd6944a47 35 strip[5].hex = 0xff00ff;
TanakaRobo 16:c3bbd6944a47 36
TanakaRobo 16:c3bbd6944a47 37 npx.send(strip, 6);
TanakaRobo 16:c3bbd6944a47 38
TanakaRobo 0:ca84ed7518f5 39 */
TanakaRobo 0:ca84ed7518f5 40
TanakaRobo 0:ca84ed7518f5 41
TanakaRobo 0:ca84ed7518f5 42 /**
TanakaRobo 0:ca84ed7518f5 43 * @brief Struct for easy manipulation of RGB colors.
TanakaRobo 0:ca84ed7518f5 44 *
TanakaRobo 0:ca84ed7518f5 45 * Set components in the xrgb.r (etc.) and you will get
TanakaRobo 0:ca84ed7518f5 46 * the hex in xrgb.num.
TanakaRobo 0:ca84ed7518f5 47 */
TanakaRobo 0:ca84ed7518f5 48 union Pixel {
TanakaRobo 0:ca84ed7518f5 49 /** Struct for access to individual color components */
TanakaRobo 0:ca84ed7518f5 50 struct __attribute__((packed)) {
TanakaRobo 0:ca84ed7518f5 51 uint8_t b;
TanakaRobo 0:ca84ed7518f5 52 uint8_t g;
TanakaRobo 0:ca84ed7518f5 53 uint8_t r;
TanakaRobo 0:ca84ed7518f5 54 uint8_t a; // unused
TanakaRobo 0:ca84ed7518f5 55 };
TanakaRobo 0:ca84ed7518f5 56
TanakaRobo 0:ca84ed7518f5 57 /** RGB color as a single uint32_t */
TanakaRobo 0:ca84ed7518f5 58 uint32_t hex;
TanakaRobo 0:ca84ed7518f5 59 };
TanakaRobo 0:ca84ed7518f5 60
TanakaRobo 0:ca84ed7518f5 61
TanakaRobo 0:ca84ed7518f5 62 class NeoPixelOut : DigitalOut {
TanakaRobo 0:ca84ed7518f5 63 private:
TanakaRobo 15:693ce8e6d7f7 64 inline void byte(uint32_t b);
TanakaRobo 5:a7894e6982ea 65 int num_pixels_;
TanakaRobo 15:693ce8e6d7f7 66 Pixel buf_;
TanakaRobo 5:a7894e6982ea 67 vector<Pixel> strip_;
TanakaRobo 0:ca84ed7518f5 68
TanakaRobo 0:ca84ed7518f5 69 public:
TanakaRobo 0:ca84ed7518f5 70 bool normalize;
TanakaRobo 0:ca84ed7518f5 71 float global_scale;
TanakaRobo 0:ca84ed7518f5 72
TanakaRobo 5:a7894e6982ea 73 NeoPixelOut(PinName pin, int num = 0);
TanakaRobo 0:ca84ed7518f5 74
TanakaRobo 16:c3bbd6944a47 75 void send(Pixel *colors, uint32_t count, bool flipwait=true);//pixel変数の配列と個数を渡してLEDに送信する。
TanakaRobo 16:c3bbd6944a47 76 void changeNum(uint32_t num);//LEDの個数の変更
TanakaRobo 5:a7894e6982ea 77 void setBrightness(float brightness);//0~1
TanakaRobo 16:c3bbd6944a47 78 void setPixelColor(uint32_t i,uint8_t b,uint8_t g,uint8_t r);//rgbそれぞれ個別に明るさを設定する。
TanakaRobo 15:693ce8e6d7f7 79 void setPixelColor(uint32_t i,uint32_t color);//この関数でそれぞれのLEDの明るさを指定し
TanakaRobo 16:c3bbd6944a47 80 void show(bool flipwait=true);//この関数を呼び出してLEDに信号を送ってください。
TanakaRobo 15:693ce8e6d7f7 81 void off(bool flag = true);//LEDを消す。flagは、送信するかしないか。デフォルトでする。
TanakaRobo 8:82727add54ce 82 uint32_t color(uint8_t b,uint8_t g,uint8_t r);
TanakaRobo 15:693ce8e6d7f7 83 int numPixels();//LEDの個数を返す。クラス宣言時に指定した数と同じ。
TanakaRobo 0:ca84ed7518f5 84
TanakaRobo 0:ca84ed7518f5 85 /** Wait long enough to make the colors show up */
TanakaRobo 0:ca84ed7518f5 86 void flip(void);
TanakaRobo 0:ca84ed7518f5 87 };
TanakaRobo 0:ca84ed7518f5 88
TanakaRobo 0:ca84ed7518f5 89
TanakaRobo 0:ca84ed7518f5 90 #endif /* NEOPIXEL_H */