Pith - arduino_maker_crown
arduino_maker_crown/arduino_maker_crown.ino [8.2 kb]
Modified: 22:52:22 56 026 (14 May 026)
16 Days Ago
// Maker Crown
// vgmlr
#include "Servo.h"
#include "SPI.h"
#include "WiFi101.h"
// Servos
Servo serone;
Servo sertwo;
Servo serthree;
Servo serfour;
Servo serfive;
Servo sersix;
Servo serseven;
Servo sereight;
Servo sernine;
// Seat Positions
int seatposone = 180; // Long
int seatposoneA = 150;
int seatpostwo = 10; // Short
int seatpostwoA = 70;
int seatposthree = 130; // Long
int seatposthreeA = 85;
int seatposfour = 0; // Short
int seatposfourA = 45;
int seatposfive = 1; // Long
int seatposfiveA = 40;
int seatpossix = 170; // Long
int seatpossixA = 130;
int seatposseven = 7; // Short
int seatpossevenA = 35;
int seatposeight = 170; // Long
int seatposeightA = 125;
int seatposnine = 7; // Short
int seatposnineA = 45;
// Seat Place Holders
int posone = seatposone;
int postwo = seatpostwo;
int posthree = seatposthree;
int posfour = seatposfour;
int posfive = seatposfive;
int possix = seatpossix;
int posseven = seatposseven;
int poseight = seatposeight;
int posnine = seatposnine;
// Delays
int sitdelay = 20;
int risedelay = 15;
int battledelay = 5;
// LED
int red = 11;
int green = 12;
int blue = 10;
// State
int state = 0;
// WiFi
char ssid[] = "NETWORK";
char pass[] = "PASSWORD";
int keyIndex = 0;
int status = WL_IDLE_STATUS;
WiFiServer server(80);
// ThingSpeak
char thingSpeakAddress[] = "api.thingspeak.com";
String APIKey = "APIKEY"; // API
const int updateThingSpeakInterval = 100 * 1000; // Interval
long lastConnectionTime = 0;
boolean lastConnected = false;
WiFiClient client;
void setup() {
  Serial.begin(9600);
  // Servos Short
  sertwo.attach(2);
  serfour.attach(4);
  serseven.attach(7);
  sernine.attach(9);
  // Servos Long
  serone.attach(1);
  serthree.attach(3);
  serfive.attach(5);
  sersix.attach(6);
  sereight.attach(8);
  // Lights
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(blue, OUTPUT);
  serone.write(seatposone);
  sertwo.write(seatpostwoA);
  serthree.write(seatposthree);
  serfour.write(seatposfourA);
  serfive.write(seatposfive);
  sersix.write(seatpossix);
  serseven.write(seatpossevenA);
  sereight.write(seatposeight);
  sernine.write(seatposnineA);
  digitalWrite(red, HIGH);
  delay(500);
  digitalWrite(red, LOW);
  digitalWrite(green, HIGH);
  delay(500);
  digitalWrite(green, LOW);
  digitalWrite(blue, HIGH);
  delay(500);
  digitalWrite(blue, LOW);
  // WIFI Connection
  while ( status != WL_CONNECTED) {
    Serial.print("Connecting Network: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    delay(5000);
  }
  server.begin();
  printWifiStatus();
}
void loop() {
  // Pebble WIFI Coms
  WiFiClient client = server.available();
  if (client) {
    String currentLine = "";
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            break;
          }
          else {
            currentLine = "";
          }
        }
        else if (c != '\r') {
          currentLine += c;
        }
        if (currentLine.endsWith("GET /R")) {
          state = 1;
        }
        if (currentLine.endsWith("GET /B")) {
          state = 3;
        }
        if (currentLine.endsWith("GET /S")) {
          state = 0;
        }
      }
    }
    client.stop();
  }
  // Serial Input (Testing)
  if (Serial.available()) {
    char ser = Serial.read();
    switch (ser) {
      case '0':
        state = 0;
        break;
      case '1':
        state = 1;
        break;
      case '2':
        state = 3;
        break;
    }
  }
  // State Change
  if (state == 1) {
    rise();
    String kingpos = String(state, DEC);
    updateThingSpeak("field1=" + kingpos);
  }
  else if (state == 2) {
  }
  else if (state == 3) {
    battle();
    String kingpos = String(state, DEC);
    updateThingSpeak("field1=" + kingpos);
  }
  else if (state == 4) {
  }
  else {
    seated();
    String kingpos = String(state, DEC);
    if (millis() - lastConnectionTime > updateThingSpeakInterval) {
      updateThingSpeak("field1=" + kingpos);
    }
  }
}
void printWifiStatus() {
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  IPAddress ip = WiFi.localIP();
  Serial.print("http://");
  Serial.println(ip);
  long rssi = WiFi.RSSI();
  Serial.print("RSSI: ");
  Serial.print(rssi);
  Serial.println(" dBm");
}
void updateThingSpeak(String tsData) {
  if (client.connect(thingSpeakAddress, 80)) {
    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + APIKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(tsData.length());
    client.print("\n\n");
    client.print(tsData);
    lastConnectionTime = millis();
  }
}
void seated() {
  digitalWrite(red, LOW);
  digitalWrite(green, LOW);
  digitalWrite(blue, HIGH);
  serone.write(seatposone);
  serthree.write(seatposthree);
  serfive.write(seatposfive);
  sersix.write(seatpossix);
  sereight.write(seatposeight);
  for (postwo = seatpostwoA; postwo >= seatpostwo; postwo -= 1) {
    sertwo.write(postwo);
    delay(sitdelay);
  }
  for (posfour = seatposfourA; posfour >= seatposfour; posfour -= 1) {
    serfour.write(posfour);
    delay(sitdelay);
  }
  delay(500);
  for (posseven = seatpossevenA; posseven >= seatposseven; posseven -= 1) {
    serseven.write(posseven);
    delay(sitdelay);
  }
  for (posnine = seatposnineA; posnine >= seatposnine; posnine -= 1) {
    sernine.write(posnine);
    delay(sitdelay);
  }
  for (postwo = seatpostwo; postwo <= seatpostwoA; postwo += 1) {
    sertwo.write(postwo);
    delay(sitdelay);
  }
  for (posfour = seatposfour; posfour <= seatposfourA; posfour += 1) {
    serfour.write(posfour);
    delay(sitdelay);
  }
  delay(500);
  for (posseven = seatposseven; posseven <= seatpossevenA; posseven += 1) {
    serseven.write(posseven);
    delay(sitdelay);
  }
  for (posnine = seatposnine; posnine <= seatposnineA; posnine += 1) {
    sernine.write(posnine);
    delay(sitdelay);
  }
}
void rise() {
  digitalWrite(red, LOW);
  digitalWrite(green, HIGH);
  digitalWrite(blue, HIGH);
  sertwo.write(seatpostwoA);
  serfour.write(seatposfourA);
  serseven.write(seatpossevenA);
  sernine.write(seatposnineA);
  for (posone = seatposone; posone >= seatposoneA; posone -= 1) {
    serone.write(posone);
    delay(risedelay);
  }
  for (posthree = seatposthree; posthree >= seatposthreeA; posthree -= 1) {
    serthree.write(posthree);
    delay(risedelay);
  }
  for (posfive = seatposfive; posfive <= seatposfiveA; posfive += 1) {
    serfive.write(posfive);
    delay(risedelay);
  }
  for (possix = seatpossix; possix >= seatpossixA; possix -= 1) {
    sersix.write(possix);
    delay(risedelay);
  }
  for (poseight = seatposeight; poseight >= seatposeightA; poseight -= 1) {
    sereight.write(poseight);
    delay(risedelay);
  }
  state = 2;
}
void battle() {
  digitalWrite(red, HIGH);
  digitalWrite(green, LOW);
  digitalWrite(blue, LOW);
  for (posone = seatposoneA; posone <= seatposone; posone += 1) {
    serone.write(posone);
    delay(battledelay);
  }
  for (postwo = seatpostwoA; postwo >= seatpostwo; postwo -= 1) {
    sertwo.write(postwo);
    delay(battledelay);
  }
  for (posthree = seatposthreeA; posthree <= seatposthree; posthree += 1) {
    serthree.write(posthree);
    delay(battledelay);
  }
  for (posfour = seatposfourA; posfour >= seatposfour; posfour -= 1) {
    serfour.write(posfour);
    delay(battledelay);
  }
  for (posfive = seatposfiveA; posfive >= seatposfive; posfive -= 1) {
    serfive.write(posfive);
    delay(battledelay);
  }
  for (possix = seatpossixA; possix <= seatpossix; possix += 1) {
    sersix.write(possix);
    delay(battledelay);
  }
  for (posseven = seatpossevenA; posseven >= seatposseven; posseven -= 1) {
    serseven.write(posseven);
    delay(battledelay);
  }
  for (poseight = seatposeightA; poseight <= seatposeight; poseight += 1) {
    sereight.write(poseight);
    delay(battledelay);
  }
  for (posnine = seatposnineA; posnine >= seatposnine; posnine -= 1) {
    sernine.write(posnine);
    delay(battledelay);
  }
  state = 4;
}
Updates
Shim - Android 70.026.1
Wedge - Linux 68.026.1
Wedge - Android 68.026.1
Taper - Linux 64.026.1
Ayh Extension - Chrome 63.026.1
Dev
TVShow (227) 'CSA'
TVShow (228) 'APT'
TVProgram (83) 'BXT'
Miter Update(s)
Shim (Dictation)

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)