Nathan Yonkee / Mbed OS DotStar

Fork of DotStar by Suga koubou

Committer:
tulanthoar
Date:
Thu May 25 01:42:07 2017 +0000
Revision:
2:804574387573
Parent:
1:8ad764aed49f
Child:
3:7d7945d4f224
change to nucleo pins

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okini3939 0:27f99fa5a413 1 /*
okini3939 0:27f99fa5a413 2 * APA102 (Adafruit DotStar LED Strip)
okini3939 0:27f99fa5a413 3 */
okini3939 0:27f99fa5a413 4
okini3939 0:27f99fa5a413 5 #include "mbed.h"
tulanthoar 2:804574387573 6 #include "rtos.h"
okini3939 0:27f99fa5a413 7
tulanthoar 2:804574387573 8 #define LED_NUM 144
okini3939 0:27f99fa5a413 9 #define LED_GLOBAL 31 // brightness 0-31
okini3939 0:27f99fa5a413 10 #define LED_FREQ 500000 // spi
okini3939 0:27f99fa5a413 11
okini3939 0:27f99fa5a413 12 DigitalOut myled(LED1);
tulanthoar 2:804574387573 13 SPI spi(PA_7, PA_6, PA_5);
okini3939 0:27f99fa5a413 14
okini3939 0:27f99fa5a413 15 int led_buf[LED_NUM];
okini3939 0:27f99fa5a413 16
okini3939 1:8ad764aed49f 17 void dotStar () {
okini3939 0:27f99fa5a413 18 int i;
okini3939 0:27f99fa5a413 19
okini3939 0:27f99fa5a413 20 // start frame
okini3939 0:27f99fa5a413 21 for (i = 0; i < 4; i ++) {
okini3939 0:27f99fa5a413 22 spi.write(0);
okini3939 0:27f99fa5a413 23 }
okini3939 0:27f99fa5a413 24 // led frame
okini3939 0:27f99fa5a413 25 for (i = 0; i < LED_NUM; i ++) {
okini3939 0:27f99fa5a413 26 spi.write((7<<5) | LED_GLOBAL);
okini3939 0:27f99fa5a413 27 spi.write((led_buf[i] >> 16) & 0xff); // B
okini3939 0:27f99fa5a413 28 spi.write((led_buf[i] >> 8) & 0xff); // G
okini3939 0:27f99fa5a413 29 spi.write(led_buf[i] & 0xff); // R
okini3939 0:27f99fa5a413 30 }
okini3939 0:27f99fa5a413 31 // end frame
okini3939 0:27f99fa5a413 32 for (i = 0; i < 4; i ++) {
okini3939 0:27f99fa5a413 33 spi.write(1);
okini3939 0:27f99fa5a413 34 }
okini3939 0:27f99fa5a413 35 }
okini3939 0:27f99fa5a413 36
okini3939 0:27f99fa5a413 37 int main() {
okini3939 0:27f99fa5a413 38 int i, c;
okini3939 0:27f99fa5a413 39 int color = 1;
okini3939 0:27f99fa5a413 40
okini3939 0:27f99fa5a413 41 spi.frequency(LED_FREQ);
okini3939 0:27f99fa5a413 42
okini3939 0:27f99fa5a413 43 for (;;) {
okini3939 0:27f99fa5a413 44 for (i = 0; i < LED_NUM; i ++) {
okini3939 0:27f99fa5a413 45 c = ((color + i) % 7) + 1;
okini3939 0:27f99fa5a413 46 led_buf[i] = (c & 4 ? 0xff0000 : 0) | (c & 2 ? 0xff00 : 0) | (c & 1 ? 0xff : 0);
okini3939 0:27f99fa5a413 47 }
okini3939 1:8ad764aed49f 48 dotStar();
okini3939 0:27f99fa5a413 49 myled = !myled;
okini3939 0:27f99fa5a413 50 color ++;
okini3939 0:27f99fa5a413 51 if (color > 7) color = 1;
okini3939 0:27f99fa5a413 52 wait(0.2);
okini3939 0:27f99fa5a413 53 }
okini3939 0:27f99fa5a413 54 }