Ejemplo n.º 1
0
Archivo: lumen.c Proyecto: lavallc/ion
void lumen_set_level_rgb(int led_index, uint8_t r, uint8_t g, uint8_t b) {
	if(led_index >= kSunBoardNumberOfLedsPerRay) return;
	for(int i=0; i<kSunBoardNumberOfRays; i++) {
		neopixel_strip_t *strip = lumen_get_strip_for_ray_index(i);
		neopixel_set_color(strip, (kSunBoardNumberOfLedsPerRay-1) - led_index, r,g,b);
	}
}
Ejemplo n.º 2
0
STATIC mp_obj_t neopixel_subscr(mp_obj_t self_in, mp_obj_t index_in, mp_obj_t value) {
    neopixel_obj_t *self = (neopixel_obj_t*)self_in;
    mp_uint_t index = mp_get_index(self->base.type, self->strip.num_leds, index_in, false);
    if (value == MP_OBJ_NULL) {
        // delete item
        return MP_OBJ_NULL; // op not supported
    } else if (value == MP_OBJ_SENTINEL) {
        // load
        mp_obj_t rgb[3] = {
            MP_OBJ_NEW_SMALL_INT(self->strip.leds[index].simple.r),
            MP_OBJ_NEW_SMALL_INT(self->strip.leds[index].simple.g),
            MP_OBJ_NEW_SMALL_INT(self->strip.leds[index].simple.b),
        };
        return mp_obj_new_tuple(3, rgb);
    } else {
        // store
        mp_obj_t *rgb;
        mp_obj_get_array_fixed_n(value, 3, &rgb);
        mp_int_t r = mp_obj_get_int(rgb[0]);
        mp_int_t g = mp_obj_get_int(rgb[1]);
        mp_int_t b = mp_obj_get_int(rgb[2]);
        if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {
            nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "invalid colour"));
        }
        neopixel_set_color(&self->strip, index, r, g, b);
        return mp_const_none;
    }
}
Ejemplo n.º 3
0
Archivo: lumen.c Proyecto: lavallc/ion
//sets a single pixel rgb value
void lumen_set_pixel_rgb(int ray_index, int led_index, uint8_t r, uint8_t g, uint8_t b) {
	if(ray_index > (kSunBoardNumberOfRays-1)) return;
	if(led_index > kSunBoardNumberOfLedsPerRay) return;
	
	neopixel_strip_t *strip = lumen_get_strip_for_ray_index(ray_index);
	neopixel_set_color(strip, led_index, r,g,b);	
}