Arduino Maker Crown



  1. // Maker Crown
  2. // pkvi
  3. #include "Servo.h"
  4. #include "SPI.h"
  5. #include "WiFi101.h"
  6. // Servos
  7. Servo serone;
  8. Servo sertwo;
  9. Servo serthree;
  10. Servo serfour;
  11. Servo serfive;
  12. Servo sersix;
  13. Servo serseven;
  14. Servo sereight;
  15. Servo sernine;
  16. // Seat Positions
  17. int seatposone = 180; // Long
  18. int seatposoneA = 150;
  19. int seatpostwo = 10; // Short
  20. int seatpostwoA = 70;
  21. int seatposthree = 130; // Long
  22. int seatposthreeA = 85;
  23. int seatposfour = 0; // Short
  24. int seatposfourA = 45;
  25. int seatposfive = 1; // Long
  26. int seatposfiveA = 40;
  27. int seatpossix = 170; // Long
  28. int seatpossixA = 130;
  29. int seatposseven = 7; // Short
  30. int seatpossevenA = 35;
  31. int seatposeight = 170; // Long
  32. int seatposeightA = 125;
  33. int seatposnine = 7; // Short
  34. int seatposnineA = 45;
  35. // Seat Place Holders
  36. int posone = seatposone;
  37. int postwo = seatpostwo;
  38. int posthree = seatposthree;
  39. int posfour = seatposfour;
  40. int posfive = seatposfive;
  41. int possix = seatpossix;
  42. int posseven = seatposseven;
  43. int poseight = seatposeight;
  44. int posnine = seatposnine;
  45. // Delays
  46. int sitdelay = 20;
  47. int risedelay = 15;
  48. int battledelay = 5;
  49. // LED
  50. int red = 11;
  51. int green = 12;
  52. int blue = 10;
  53. // State
  54. int state = 0;
  55. // WiFi
  56. char ssid[] = "NETWORK";
  57. char pass[] = "PASSWORD";
  58. int keyIndex = 0;
  59. int status = WL_IDLE_STATUS;
  60. WiFiServer server(80);
  61. // ThingSpeak
  62. char thingSpeakAddress[] = "api.thingspeak.com";
  63. String APIKey = "APIKEY"; // API
  64. const int updateThingSpeakInterval = 100 * 1000; // Interval
  65. long lastConnectionTime = 0;
  66. boolean lastConnected = false;
  67. WiFiClient client;
  68. void setup() {
  69. Serial.begin(9600);
  70. // Servos Short
  71. sertwo.attach(2);
  72. serfour.attach(4);
  73. serseven.attach(7);
  74. sernine.attach(9);
  75. // Servos Long
  76. serone.attach(1);
  77. serthree.attach(3);
  78. serfive.attach(5);
  79. sersix.attach(6);
  80. sereight.attach(8);
  81. // Lights
  82. pinMode(red, OUTPUT);
  83. pinMode(green, OUTPUT);
  84. pinMode(blue, OUTPUT);
  85. serone.write(seatposone);
  86. sertwo.write(seatpostwoA);
  87. serthree.write(seatposthree);
  88. serfour.write(seatposfourA);
  89. serfive.write(seatposfive);
  90. sersix.write(seatpossix);
  91. serseven.write(seatpossevenA);
  92. sereight.write(seatposeight);
  93. sernine.write(seatposnineA);
  94. digitalWrite(red, HIGH);
  95. delay(500);
  96. digitalWrite(red, LOW);
  97. digitalWrite(green, HIGH);
  98. delay(500);
  99. digitalWrite(green, LOW);
  100. digitalWrite(blue, HIGH);
  101. delay(500);
  102. digitalWrite(blue, LOW);
  103. // WIFI Connection
  104. while ( status != WL_CONNECTED) {
  105. Serial.print("Connecting Network: ");
  106. Serial.println(ssid);
  107. status = WiFi.begin(ssid, pass);
  108. delay(5000);
  109. }
  110. server.begin();
  111. printWifiStatus();
  112. }
  113. void loop() {
  114. // Pebble WIFI Coms
  115. WiFiClient client = server.available();
  116. if (client) {
  117. String currentLine = "";
  118. while (client.connected()) {
  119. if (client.available()) {
  120. char c = client.read();
  121. Serial.write(c);
  122. if (c == '\n') {
  123. if (currentLine.length() == 0) {
  124. client.println("HTTP/1.1 200 OK");
  125. client.println("Content-type:text/html");
  126. break;
  127. }
  128. else {
  129. currentLine = "";
  130. }
  131. }
  132. else if (c != '\r') {
  133. currentLine += c;
  134. }
  135. if (currentLine.endsWith("GET /R")) {
  136. state = 1;
  137. }
  138. if (currentLine.endsWith("GET /B")) {
  139. state = 3;
  140. }
  141. if (currentLine.endsWith("GET /S")) {
  142. state = 0;
  143. }
  144. }
  145. }
  146. client.stop();
  147. }
  148. // Serial Input (Testing)
  149. if (Serial.available()) {
  150. char ser = Serial.read();
  151. switch (ser) {
  152. case '0':
  153. state = 0;
  154. break;
  155. case '1':
  156. state = 1;
  157. break;
  158. case '2':
  159. state = 3;
  160. break;
  161. }
  162. }
  163. // State Change
  164. if (state == 1) {
  165. rise();
  166. String kingpos = String(state, DEC);
  167. updateThingSpeak("field1=" + kingpos);
  168. }
  169. else if (state == 2) {
  170. }
  171. else if (state == 3) {
  172. battle();
  173. String kingpos = String(state, DEC);
  174. updateThingSpeak("field1=" + kingpos);
  175. }
  176. else if (state == 4) {
  177. }
  178. else {
  179. seated();
  180. String kingpos = String(state, DEC);
  181. if (millis() - lastConnectionTime > updateThingSpeakInterval) {
  182. updateThingSpeak("field1=" + kingpos);
  183. }
  184. }
  185. }
  186. void printWifiStatus() {
  187. Serial.print("SSID: ");
  188. Serial.println(WiFi.SSID());
  189. IPAddress ip = WiFi.localIP();
  190. Serial.print("http://");
  191. Serial.println(ip);
  192. long rssi = WiFi.RSSI();
  193. Serial.print("RSSI: ");
  194. Serial.print(rssi);
  195. Serial.println(" dBm");
  196. }
  197. void updateThingSpeak(String tsData) {
  198. if (client.connect(thingSpeakAddress, 80)) {
  199. client.print("POST /update HTTP/1.1\n");
  200. client.print("Host: api.thingspeak.com\n");
  201. client.print("Connection: close\n");
  202. client.print("X-THINGSPEAKAPIKEY: " + APIKey + "\n");
  203. client.print("Content-Type: application/x-www-form-urlencoded\n");
  204. client.print("Content-Length: ");
  205. client.print(tsData.length());
  206. client.print("\n\n");
  207. client.print(tsData);
  208. lastConnectionTime = millis();
  209. }
  210. }
  211. void seated() {
  212. digitalWrite(red, LOW);
  213. digitalWrite(green, LOW);
  214. digitalWrite(blue, HIGH);
  215. serone.write(seatposone);
  216. serthree.write(seatposthree);
  217. serfive.write(seatposfive);
  218. sersix.write(seatpossix);
  219. sereight.write(seatposeight);
  220. for (postwo = seatpostwoA; postwo >= seatpostwo; postwo -= 1) {
  221. sertwo.write(postwo);
  222. delay(sitdelay);
  223. }
  224. for (posfour = seatposfourA; posfour >= seatposfour; posfour -= 1) {
  225. serfour.write(posfour);
  226. delay(sitdelay);
  227. }
  228. delay(500);
  229. for (posseven = seatpossevenA; posseven >= seatposseven; posseven -= 1) {
  230. serseven.write(posseven);
  231. delay(sitdelay);
  232. }
  233. for (posnine = seatposnineA; posnine >= seatposnine; posnine -= 1) {
  234. sernine.write(posnine);
  235. delay(sitdelay);
  236. }
  237. for (postwo = seatpostwo; postwo <= seatpostwoA; postwo += 1) {
  238. sertwo.write(postwo);
  239. delay(sitdelay);
  240. }
  241. for (posfour = seatposfour; posfour <= seatposfourA; posfour += 1) {
  242. serfour.write(posfour);
  243. delay(sitdelay);
  244. }
  245. delay(500);
  246. for (posseven = seatposseven; posseven <= seatpossevenA; posseven += 1) {
  247. serseven.write(posseven);
  248. delay(sitdelay);
  249. }
  250. for (posnine = seatposnine; posnine <= seatposnineA; posnine += 1) {
  251. sernine.write(posnine);
  252. delay(sitdelay);
  253. }
  254. }
  255. void rise() {
  256. digitalWrite(red, LOW);
  257. digitalWrite(green, HIGH);
  258. digitalWrite(blue, HIGH);
  259. sertwo.write(seatpostwoA);
  260. serfour.write(seatposfourA);
  261. serseven.write(seatpossevenA);
  262. sernine.write(seatposnineA);
  263. for (posone = seatposone; posone >= seatposoneA; posone -= 1) {
  264. serone.write(posone);
  265. delay(risedelay);
  266. }
  267. for (posthree = seatposthree; posthree >= seatposthreeA; posthree -= 1) {
  268. serthree.write(posthree);
  269. delay(risedelay);
  270. }
  271. for (posfive = seatposfive; posfive <= seatposfiveA; posfive += 1) {
  272. serfive.write(posfive);
  273. delay(risedelay);
  274. }
  275. for (possix = seatpossix; possix >= seatpossixA; possix -= 1) {
  276. sersix.write(possix);
  277. delay(risedelay);
  278. }
  279. for (poseight = seatposeight; poseight >= seatposeightA; poseight -= 1) {
  280. sereight.write(poseight);
  281. delay(risedelay);
  282. }
  283. state = 2;
  284. }
  285. void battle() {
  286. digitalWrite(red, HIGH);
  287. digitalWrite(green, LOW);
  288. digitalWrite(blue, LOW);
  289. for (posone = seatposoneA; posone <= seatposone; posone += 1) {
  290. serone.write(posone);
  291. delay(battledelay);
  292. }
  293. for (postwo = seatpostwoA; postwo >= seatpostwo; postwo -= 1) {
  294. sertwo.write(postwo);
  295. delay(battledelay);
  296. }
  297. for (posthree = seatposthreeA; posthree <= seatposthree; posthree += 1) {
  298. serthree.write(posthree);
  299. delay(battledelay);
  300. }
  301. for (posfour = seatposfourA; posfour >= seatposfour; posfour -= 1) {
  302. serfour.write(posfour);
  303. delay(battledelay);
  304. }
  305. for (posfive = seatposfiveA; posfive >= seatposfive; posfive -= 1) {
  306. serfive.write(posfive);
  307. delay(battledelay);
  308. }
  309. for (possix = seatpossixA; possix <= seatpossix; possix += 1) {
  310. sersix.write(possix);
  311. delay(battledelay);
  312. }
  313. for (posseven = seatpossevenA; posseven >= seatposseven; posseven -= 1) {
  314. serseven.write(posseven);
  315. delay(battledelay);
  316. }
  317. for (poseight = seatposeightA; poseight <= seatposeight; poseight += 1) {
  318. sereight.write(poseight);
  319. delay(battledelay);
  320. }
  321. for (posnine = seatposnineA; posnine >= seatposnine; posnine -= 1) {
  322. sernine.write(posnine);
  323. delay(battledelay);
  324. }
  325. state = 4;
  326. }

Pebble JS App
  1. // Maker Crown Peddle APP
  2. // pkvi
  3. var UI = require('ui');
  4. var ajax = require('ajax');
  5. var Vector2 = require('vector2');
  6. // Create Window
  7. var main_window = new UI.Window();
  8. // Open Button and Display
  9. var txtOnLabel = new UI.Text({
  10. position: new Vector2(0, 15),
  11. size: new Vector2(144, 30),
  12. font: 'Gothic 28 Bold',
  13. text: 'RISE',
  14. textAlign: 'center',
  15. color: 'white'
  16. });
  17. //this is going to be our off button
  18. var txtOffLabel = new UI.Text({
  19. position: new Vector2(0, 95),
  20. size: new Vector2(144, 30),
  21. font: 'Gothic 28 Bold',
  22. text: 'BATTLE',
  23. textAlign: 'center',
  24. color: 'white'
  25. });
  26. main_window.backgroundColor('black');
  27. main_window.add(txtOnLabel);
  28. main_window.add(txtOffLabel);
  29. main_window.show();
  30. // URL To MKR1000 (Change)
  31. function Toggle(function_name){
  32. var URL = 'http://192.168.1.9/' + function_name;
  33. ajax(
  34. {
  35. url: URL,
  36. method: 'post',
  37. type: 'json',
  38. data: { "args": function_name}
  39. }
  40. );
  41. }
  42. // Rise
  43. main_window.on('click', 'up', function() {
  44. Toggle('R');
  45. });
  46. // Battle
  47. main_window.on('click', 'down', function() {
  48. Toggle('B');
  49. });
  50. // Seated
  51. main_window.on('click', 'select', function() {
  52. Toggle('S');
  53. });

Menu
Index
Engineering
Entertainment
Literature
Miscellaneous
Contact
Search
tiktok.com/@pkvi.xyz
Why Ayh?
Miter
Miter
@pkvi
"...may not meet professional standards."
2,364 miters
123 tenons
Subscribe
0.00375