// vgmlr
#include <Servo.h>
#include "FastLED.h"
Servo doors;
int closed = 5;
int openned = 40;
#define NUM_LEDS 60
CRGB leds[NUM_LEDS];
#define PIN 4
const int up = 3; // relay
const int launch = 6;
const int button = 7;
const int level = 8;
const int down = 10;
const int power = 12;
int buttonstate;
int flystate = 0;
void setup() {
FastLED.addLeds<WS2812, PIN, GRB>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
doors.attach(11);
doors.write(closed);
pinMode(up, OUTPUT);
pinMode(launch, OUTPUT);
pinMode(button, INPUT);
pinMode(level, OUTPUT);
pinMode(down, OUTPUT);
pinMode(power, OUTPUT);
digitalWrite(up, LOW);
digitalWrite(launch, LOW);
digitalWrite(level, LOW);
digitalWrite(down, LOW);
digitalWrite(power, LOW);
delay(500);
}
void loop() {
buttonstate = digitalRead(button);
if (buttonstate == HIGH) {
if (flystate == 0) {
launchit();
} else if (flystate == 1) {
land();
} else {
// error
}
} else {
Sparkle(0x00, 0x00, 0xff, 0);
}
}
void launchit() {
doors.write(openned);
delay(1000);
doors.write(closed);
digitalWrite(power, HIGH);
delay(300);
digitalWrite(power, LOW);
delay(300);
digitalWrite(up, HIGH);
delay(750);
digitalWrite(up, LOW);
delay(300);
digitalWrite(down, HIGH);
delay(300);
digitalWrite(down, LOW);
delay(300);
digitalWrite(launch, HIGH);
delay(300);
digitalWrite(launch, LOW);
flystate = 1;
}
void land () {
digitalWrite(launch, HIGH);
delay(300);
digitalWrite(launch, LOW);
delay(300);
digitalWrite(power, HIGH);
delay(1500);
digitalWrite(power, LOW);
flystate = 0;
}
void Sparkle(byte red, byte green, byte blue, int SpeedDelay) {
int Pixel = random(NUM_LEDS);
setPixel(Pixel, red, green, blue);
showStrip();
delay(SpeedDelay);
setPixel(Pixel, 0, 0, 0);
}
void showStrip() {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.show();
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
FastLED.show();
#endif
}
void setPixel(int Pixel, byte red, byte green, byte blue) {
#ifdef ADAFRUIT_NEOPIXEL_H
// NeoPixel
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
#endif
#ifndef ADAFRUIT_NEOPIXEL_H
// FastLED
leds[Pixel].r = red;
leds[Pixel].g = green;
leds[Pixel].b = blue;
#endif
}
void setAll(byte red, byte green, byte blue) {
for (int i = 0; i < NUM_LEDS; i++ ) {
setPixel(i, red, green, blue);
}
showStrip();
}