Skip to content

Biblography

FABRICATION FILES

"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

This model 1 was obtained by.. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. The laser cut nesting 2 was created using..

footnote fabrication files

Fabrication files are a necessary element for evaluation. You can add the fabrication files at the bottom of the page and simply link them as a footnote. This was your work stays organised and files will be all together at the bottom of the page. Footnotes are created using [ ^ 1 ] (without spaces, and referenced as you see at the last chapter of this page) You can reference the fabrication files to multiple places on your page as you see for footnote nr. 2 also present in the Gallery.

Code Example

AnimatronicWingsWithLights_Works
#include 
#ifdef __AVR__
 #include  // Required for 16 MHz Adafruit Trinket
#endif

#include 

#define PIXEL_PIN    10
#define PIXEL2_PIN   2

#define BUTTON_PIN   7
#define PIXEL_COUNT  40

Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2(PIXEL_COUNT, PIXEL2_PIN, NEO_GRB + NEO_KHZ800);

bool modeChanged = false; 
int mode = 0; // 0 for rainbow, 1-7 for solid colors, 8 for off
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;

Servo servoR;
Servo servoL;

int servoRPin = 6;
int servoLPin = 20;

void setup() {
  Serial.begin(9600);
  strip.begin();
  strip.show();
  strip2.begin();
  strip2.show();
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  servoR.attach(servoRPin, 500, 2500);
  servoL.attach(servoLPin, 500, 2500);
}

void loop() {
  int reading = digitalRead(BUTTON_PIN);

  // Check button state and debounce
  if (reading == LOW) {
    if ((millis() - lastDebounceTime) > debounceDelay) {
      if (!modeChanged) {
        mode++;
        modeChanged = true;
        if (mode > 8) { // Update the maximum mode number
          mode = 0;
        }
        Serial.print("Mode changed to: ");
        Serial.println(mode);
      }
      lastDebounceTime = millis();
    }
  } else {
        modeChanged = false; // Reset mode changed flag when button is not pressed
  }

  if (mode == 0) {
    rainbowAnimation();
  } else if (mode >= 1 && mode <= 7) {
    solidColor(mode - 1);
  } else if (mode == 8) {
    turnOffLights();
  }

  if (mode != 8) { // Flap wings only if not in "off" mode
    flapWings(getFlapSpeed(mode));
  }
}

void flapWings(int speed) {
  static unsigned long lastUpdate = 0;
  static bool flapping = true;
  static int pos = 0;

  if (millis() - lastUpdate > speed) {
    if (flapping) {
      servoR.write(pos);
      servoL.write(180 - pos);
      pos++;
      if (pos >= 90) {
        flapping = false;
      }
    } else {
      servoR.write(pos);
      servoL.write(180 - pos);
      pos--;
      if (pos <= 0) {
            flapping = true;
      }
    }
    lastUpdate = millis();
  }
}

int getFlapSpeed(int mode) {
  switch (mode) {
        case 0: return 30;
        case 1: return 60;
        case 2: return 50;
        case 3: return 40;
        case 4: return 30;
        case 5: return 20;
        case 6: return 15;
        case 7: return 10;
        default: return 30;
  }
}

void rainbowAnimation() {
  static unsigned long lastUpdate = 0;
  static uint16_t j = 0;

  if (millis() - lastUpdate > 20) {
        for (int i = 0; i < strip.numPixels(); i++) {
          strip.setPixelColor(i, Wheel((i + j) & 255));
          strip2.setPixelColor(i, Wheel((i + j) & 255));
        }
        strip.show();
        strip2.show();
        j = (j + 1) % 256;
        lastUpdate = millis();
  }
}

void solidColor(int color) {
  uint32_t col;
  switch(color) {
        case 0: col = strip.Color(255, 0, 0); break;
        case 1: col = strip.Color(255, 165, 0); break;
        case 2: col = strip.Color(255, 255, 0); break;
        case 3: col = strip.Color(0, 255, 0); break;
        case 4: col = strip.Color(0, 0, 255); break;
        case 5: col = strip.Color(75, 0, 130); break;
        case 6: col = strip.Color(238, 130, 238); break;
        default: col = strip.Color(0, 0, 0); break;
  }
  for(int i = 0; i < strip.numPixels(); i++) {
        strip.setPixelColor(i, col);
        strip2.setPixelColor(i, col);
  }
  strip.show();
  strip2.show();
}

uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
        return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if(WheelPos < 170) {
        WheelPos -= 85;
        return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

void turnOffLights() {
  for(int i = 0; i < strip.numPixels(); i++) {
        strip.setPixelColor(i, strip.Color(0, 0, 0));
        strip2.setPixelColor(i, strip.Color(0, 0, 0));
  }
  strip.show();
  strip2.show();
}

How-Tos & Tutorials

Upload templates or tutorials you created for your personal project, it can also be links to instructables when the project is educational, protocols when working with growing materials and so on..

---

Fabrication files


  1. File: 3d modelling of mannequin 

  2. File: Laser cut sheets