Paste: arduino array copy

Author: ticking
Mode: c
Date: Fri, 26 Mar 2010 22:42:03
Plain Text |
void animate(){
  if(_animation_running){
    int time_passed = millis() - _animation_begin_timestamp;
    if(time_passed < _animation_duration){
      int anim_delta = map(time_passed, 0, _animation_duration, 0, 256);
      memcpy(_current_color, blend_colors(anim_delta, _animation_color_start, _animation_color_end), 3);
      Serial.println(_current_color[0], DEC);
      Serial.println(_current_color[1], DEC);
      Serial.println(_current_color[2], DEC);
      write_led_color(_current_color);
    } else {
      memcpy(_current_color, _animation_color_end, 3);
      write_led_color(_current_color);
      _animation_running   = false;
      animation_did_finish();
    }
  }
}

byte* blend_colors(byte steps, byte first_color[], byte second_color[]){
  byte ret_color[3];
  ret_color[0] = ((second_color[0] - first_color[0]) * steps / 255) + first_color[0];
  ret_color[1] = ((second_color[1] - first_color[1]) * steps / 255) + first_color[1];
  ret_color[2] = ((second_color[2] - first_color[2]) * steps / 255) + first_color[2];
  
  return ret_color;
}

New Annotation

Summary:
Author:
Mode:
Body: