Hiroki Tanaka / Mbed 2 deprecated L432KC_temp

Dependencies:   mbed ros_lib_kinetic

Committer:
TanakaRobo
Date:
Tue Jul 09 08:08:55 2019 +0000
Revision:
2:a84e3730c6cb
add neopixel

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TanakaRobo 2:a84e3730c6cb 1 #ifndef NEOPIXEL_H
TanakaRobo 2:a84e3730c6cb 2 #define NEOPIXEL_H
TanakaRobo 2:a84e3730c6cb 3 #include "mbed.h"
TanakaRobo 2:a84e3730c6cb 4
TanakaRobo 2:a84e3730c6cb 5 /*
TanakaRobo 2:a84e3730c6cb 6 // Example
TanakaRobo 2:a84e3730c6cb 7
TanakaRobo 2:a84e3730c6cb 8 NeoPixelOut npx(D12);
TanakaRobo 2:a84e3730c6cb 9
TanakaRobo 2:a84e3730c6cb 10 int main() {
TanakaRobo 2:a84e3730c6cb 11 wait(0.2); // wait for HSE to stabilize
TanakaRobo 2:a84e3730c6cb 12
TanakaRobo 2:a84e3730c6cb 13 npx.global_scale = 1.0f; // Adjust brightness
TanakaRobo 2:a84e3730c6cb 14 npx.normalize = true; // Equalize brightness to make r + g + b = 255
TanakaRobo 2:a84e3730c6cb 15
TanakaRobo 2:a84e3730c6cb 16 Pixel strip[6];
TanakaRobo 2:a84e3730c6cb 17 strip[0].hex = 0xFF0000;
TanakaRobo 2:a84e3730c6cb 18 strip[1].hex = 0xFFFF00;
TanakaRobo 2:a84e3730c6cb 19 strip[2].hex = 0x00FF00;
TanakaRobo 2:a84e3730c6cb 20 strip[3].hex = 0x00FFFF;
TanakaRobo 2:a84e3730c6cb 21 strip[4].hex = 0x0000FF;
TanakaRobo 2:a84e3730c6cb 22 strip[5].hex = 0xFF00FF;
TanakaRobo 2:a84e3730c6cb 23
TanakaRobo 2:a84e3730c6cb 24 npx.send(strip, 6);
TanakaRobo 2:a84e3730c6cb 25
TanakaRobo 2:a84e3730c6cb 26 while(1);
TanakaRobo 2:a84e3730c6cb 27 }
TanakaRobo 2:a84e3730c6cb 28 */
TanakaRobo 2:a84e3730c6cb 29
TanakaRobo 2:a84e3730c6cb 30
TanakaRobo 2:a84e3730c6cb 31
TanakaRobo 2:a84e3730c6cb 32 /**
TanakaRobo 2:a84e3730c6cb 33 * @brief Struct for easy manipulation of RGB colors.
TanakaRobo 2:a84e3730c6cb 34 *
TanakaRobo 2:a84e3730c6cb 35 * Set components in the xrgb.r (etc.) and you will get
TanakaRobo 2:a84e3730c6cb 36 * the hex in xrgb.num.
TanakaRobo 2:a84e3730c6cb 37 */
TanakaRobo 2:a84e3730c6cb 38 union Pixel {
TanakaRobo 2:a84e3730c6cb 39 /** Struct for access to individual color components */
TanakaRobo 2:a84e3730c6cb 40 struct __attribute__((packed)) {
TanakaRobo 2:a84e3730c6cb 41 uint8_t b;
TanakaRobo 2:a84e3730c6cb 42 uint8_t g;
TanakaRobo 2:a84e3730c6cb 43 uint8_t r;
TanakaRobo 2:a84e3730c6cb 44 uint8_t a; // unused
TanakaRobo 2:a84e3730c6cb 45 };
TanakaRobo 2:a84e3730c6cb 46
TanakaRobo 2:a84e3730c6cb 47 /** RGB color as a single uint32_t */
TanakaRobo 2:a84e3730c6cb 48 uint32_t hex;
TanakaRobo 2:a84e3730c6cb 49 };
TanakaRobo 2:a84e3730c6cb 50
TanakaRobo 2:a84e3730c6cb 51
TanakaRobo 2:a84e3730c6cb 52 class NeoPixelOut : DigitalOut {
TanakaRobo 2:a84e3730c6cb 53 private:
TanakaRobo 2:a84e3730c6cb 54 void byte(uint32_t b);
TanakaRobo 2:a84e3730c6cb 55 int boad_;
TanakaRobo 2:a84e3730c6cb 56
TanakaRobo 2:a84e3730c6cb 57 public:
TanakaRobo 2:a84e3730c6cb 58 bool normalize;
TanakaRobo 2:a84e3730c6cb 59 float global_scale;
TanakaRobo 2:a84e3730c6cb 60
TanakaRobo 2:a84e3730c6cb 61 NeoPixelOut(PinName pin);
TanakaRobo 2:a84e3730c6cb 62
TanakaRobo 2:a84e3730c6cb 63 void send(Pixel *colors, uint32_t count, bool flipwait=true);
TanakaRobo 2:a84e3730c6cb 64
TanakaRobo 2:a84e3730c6cb 65 /** Wait long enough to make the colors show up */
TanakaRobo 2:a84e3730c6cb 66 void flip(void);
TanakaRobo 2:a84e3730c6cb 67 };
TanakaRobo 2:a84e3730c6cb 68
TanakaRobo 2:a84e3730c6cb 69
TanakaRobo 2:a84e3730c6cb 70 #endif /* NEOPIXEL_H */