kartonman

brass factory version 5

Nov 18th, 2024
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.54 KB | None | 0 0
  1. /*brass factory Daily cycle event timer version 5 */
  2.  
  3. /*Brass Factory Daily cycle. Set it to 3000 for the 1/2 hour cycle.*/
  4.  
  5. #define FASTLED_INTERNAL
  6. #include <FastLED.h>
  7. int num = 9; //an interval of 3000 lasts about 24.5 minutes real time. version 5 is thus set for 45 minutes
  8.  
  9. int32_t interval = (int32_t) num * 500; /*num is an int, the calculation when done as an int and overflow.
  10. The (int32_t) converts it to the larger type, so the result of the calculation fits and doesn't overflow.*/
  11.  
  12. #define NUM_LEDS 84 // NUMBER OF PIXELS IN THE USED STRIP was 50. changed to 84
  13. #define DATA_PIN 6
  14. byte maxBrightness = 100; // VALUES FROM 0 - 255 -> THE HIGHER, THE MORE AMPS NEEDED FOR THE LED STRIP
  15. CRGB leds[NUM_LEDS];
  16.  
  17. #define workshoplights 2
  18. #define district2arcwelders 3
  19.  
  20. #define district4arcwelders 4
  21. #define district3arcwelders 5
  22.  
  23.  
  24. #define district1buildingLights 7
  25. #define district2buildingLights 8
  26. #define district3buildingLights 9
  27. #define district4buildingLights 10
  28.  
  29. #define perimeterLights 11
  30. #define district1securityLights 12
  31. #define district2securityLights 13
  32. #define district3securityLights A0
  33. #define district4securityLights A1
  34. #define fires1 A2
  35. #define fires2 A3
  36.  
  37. /*The security lights are 12v incandesant lights. They are controlled through a mosfet board. Each section is on its own network of wires.*/
  38.  
  39.  
  40.  
  41.  
  42. int32_t ledTimer = 0;
  43. int32_t ledTimerUpdate = 0;
  44.  
  45. //the colors and timing of the colors of the LEDs on the strip.
  46. DEFINE_GRADIENT_PALETTE (AM_gp) { // Midnight To Noon (amCycle)
  47. 0, 0, 0, 0, //black
  48. //5, 0, 0, 0, // Black
  49. //15, 0, 0, 0, //black
  50. 50, 0, 0, 0, //black
  51. 105, 97, 97, 79, //
  52. 127, 189, 143, 16, //
  53. 148, 239, 172, 0, //orange
  54. 169, 212, 202, 0, //dark yellow
  55. 200, 255, 253, 213, //bright yellow
  56. 232, 255, 255, 255, //white
  57. 255, 255, 255, 255, //white
  58. };
  59. DEFINE_GRADIENT_PALETTE (PM_gp) { // Noon to Midnight (pmCycle)
  60. 0, 255, 255, 255, //white
  61. 5, 255, 255, 255, //white
  62. 21, 255, 253, 213, //bright yellow
  63. 50, 212, 202, 0, //dark yellow
  64. 84, 239, 172, 0, //orange
  65. 105, 189, 143, 16, //
  66. 127, 97, 97, 79, //
  67. 148, 0, 0, 0, //black
  68. 255, 0, 0, 0, //black
  69. };
  70.  
  71.  
  72.  
  73. void setup() {
  74. Serial.begin(9600);
  75. FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
  76.  
  77. pinMode(perimeterLights, OUTPUT);
  78. pinMode(district1buildingLights, OUTPUT);
  79. pinMode(district2buildingLights, OUTPUT);
  80. pinMode(district3buildingLights, OUTPUT);
  81. pinMode(district4buildingLights, OUTPUT);
  82.  
  83. pinMode(district2arcwelders, OUTPUT);
  84. pinMode(district3arcwelders, OUTPUT);
  85. pinMode(district4arcwelders, OUTPUT);
  86.  
  87. pinMode(district1securityLights, OUTPUT);
  88. pinMode(district2securityLights, OUTPUT);
  89. pinMode(district3securityLights, OUTPUT);
  90. pinMode(district4securityLights, OUTPUT);
  91. pinMode(workshoplights, OUTPUT);
  92. pinMode(fires1, OUTPUT);
  93. pinMode(fires2, OUTPUT);
  94. }
  95.  
  96. uint8_t paletteIndex = 0;
  97. CRGBPalette16 currentPalette = AM_gp;
  98. uint8_t state = 0; // 0 for AM, 1 for PM
  99.  
  100. //Routine
  101. //************************************************************************
  102. void loop() {
  103. EVERY_N_MILLISECONDS(interval) {
  104. paletteIndex++;
  105. if (paletteIndex == 240)/*Because a linear blend is being used, the index has to be set less than 255.
  106. If it is set at 255 there will be a discontinuity in the display of colors. Even, as in this case with 240
  107. selected, the linear blend take the index up to 255 and the full cycle displays on the LED strip.*/
  108. {
  109. paletteIndex = 0;
  110. state = 1 - state;
  111. currentPalette = state ? PM_gp : AM_gp;
  112. }
  113. CRGB color = ColorFromPalette(currentPalette, paletteIndex, maxBrightness, LINEARBLEND);
  114. fill_solid(leds, NUM_LEDS, color);
  115. FastLED.show();
  116.  
  117. perimiterLightsCycle();
  118. district1securityLightsCycle();
  119. district2securityLightsCycle();
  120. district3securityLightsCycle();
  121. district4securityLightsCycle();
  122.  
  123. district1buildingLightsCycle();
  124. district2buildingLightsCycle();
  125. district3buildingLightsCycle();
  126. district4buildingLightsCycle();
  127.  
  128. district2arcweldersCycle();
  129. district3arcweldersCycle();
  130. district4arcweldersCycle();
  131. workshoplightsCycle();
  132. fires1Cycle();
  133. fires1Cyc2e();
  134. }
  135. }
  136.  
  137. //Cycles
  138.  
  139. //***********************************************
  140. // perimitersLightsCycle
  141.  
  142. void perimiterLightsCycle() {
  143. int32_t localInterval = 2 * 240 * interval;
  144. int32_t localTimer = millis() % localInterval;
  145. if ((localTimer >= .3 * localInterval) && (localTimer <= .74 * localInterval)) {
  146. digitalWrite(perimeterLights, LOW);
  147. } else {
  148. digitalWrite(perimeterLights, HIGH);
  149. }
  150. }
  151.  
  152. //***********************************************
  153.  
  154. void district1securityLightsCycle() {
  155. int32_t localInterval = 2 * 240 * interval;
  156. int32_t localTimer = millis() % localInterval;
  157. if ((localTimer >= .25 * localInterval) && (localTimer <= .78 * localInterval)) {
  158. digitalWrite(district1securityLights, LOW);
  159. } else {
  160. digitalWrite(district1securityLights, HIGH);
  161. }
  162. }
  163. //***********************************************
  164. // district2securityLightsCycle
  165.  
  166. void district2securityLightsCycle() {
  167. int32_t localInterval = 2 * 240 * interval;
  168. int32_t localTimer = millis() % localInterval;
  169. if ((localTimer >= .26 * localInterval) && (localTimer <= .80 * localInterval)) {
  170. digitalWrite(district2securityLights, LOW);
  171. } else {
  172. digitalWrite(district2securityLights, HIGH);
  173. }
  174. }
  175.  
  176. //***********************************************
  177. // district3securityLightsCycle
  178.  
  179. void district3securityLightsCycle() {
  180. int32_t localInterval = 2 * 240 * interval;
  181. int32_t localTimer = millis() % localInterval;
  182. if ((localTimer >= .28 * localInterval) && (localTimer <= .76 * localInterval)) {
  183. digitalWrite(district3securityLights, LOW);
  184. } else {
  185. digitalWrite(district3securityLights, HIGH);
  186. }
  187. }
  188.  
  189. //***********************************************
  190. // district4securityLightsCycle
  191.  
  192. void district4securityLightsCycle() {
  193. int32_t localInterval = 2 * 240 * interval;
  194. int32_t localTimer = millis() % localInterval;
  195. if ((localTimer >= .26 * localInterval) && (localTimer <= .75 * localInterval)) {
  196. digitalWrite(district4securityLights, LOW);
  197. } else {
  198. digitalWrite(district4securityLights, HIGH);
  199. }
  200. }
  201. //*************************************
  202. //district1buildingLightsCycle
  203. void district1buildingLightsCycle() {
  204. int32_t localInterval = 2 * 240 * interval;
  205. int32_t localTimer = millis() % localInterval;
  206. if ((localTimer >= .33 * localInterval) && (localTimer <= .66 * localInterval)) {
  207. digitalWrite(district1buildingLights, HIGH);
  208. } else {
  209. digitalWrite(district1buildingLights, LOW);
  210. }
  211. }
  212. //****************************************************
  213.  
  214. // district1arcweldersCycle
  215. void district2arcweldersCycle() {
  216. int32_t localInterval = 2 * 240 * interval;
  217. int32_t localTimer = millis() % localInterval;
  218. if ((localTimer <= .33 * localInterval) || (localTimer >= .79 * localInterval)) {
  219. digitalWrite(district2arcwelders, HIGH);
  220. } else {
  221. digitalWrite(district2arcwelders, LOW);
  222. }
  223. }
  224.  
  225. //****************************************************
  226.  
  227. // district2buildingLightsCycle
  228. void district2buildingLightsCycle() {
  229. int32_t localInterval = 2 * 240 * interval;
  230. int32_t localTimer = millis() % localInterval;
  231. if ((localTimer >= .25 * localInterval) && (localTimer <= .79 * localInterval)) {
  232. digitalWrite(district2buildingLights, HIGH);
  233. } else {
  234. digitalWrite(district2buildingLights, LOW);
  235. }
  236. }
  237. //****************************************************
  238. // district3buildingLightsCycle
  239. void district3buildingLightsCycle() {
  240. int32_t localInterval = 2 * 240 * interval;
  241. int32_t localTimer = millis() % localInterval;
  242. if ((localTimer >= .27 * localInterval) && (localTimer <= .75 * localInterval)) {
  243. digitalWrite(district3buildingLights, HIGH);
  244. } else {
  245. digitalWrite(district3buildingLights, LOW);
  246. }
  247. }
  248.  
  249. //********************************************************
  250. // district3arcweldersCycle
  251. void district3arcweldersCycle() {
  252. int32_t localInterval = 2 * 240 * interval;
  253. int32_t localTimer = millis() % localInterval;
  254. if ((localTimer <= .31 * localInterval) || (localTimer >= .73 * localInterval)) {
  255. digitalWrite(district3arcwelders, HIGH);
  256. } else {
  257. digitalWrite(district3arcwelders, LOW);
  258. }
  259. }
  260.  
  261. //********************************************************
  262. // district4buildingLightsCycle
  263. void district4buildingLightsCycle() {
  264. int32_t localInterval = 2 * 240 * interval;
  265. int32_t localTimer = millis() % localInterval;
  266. if ((localTimer >= .25 * localInterval) && (localTimer <= .73 * localInterval)) {
  267. digitalWrite(district4buildingLights, HIGH);
  268. } else {
  269. digitalWrite(district4buildingLights, LOW);
  270. }
  271. }
  272. //********************************************************
  273. // district4arcweldersCycle
  274. void district4arcweldersCycle() {
  275. int32_t localInterval = 2 * 240 * interval;
  276. int32_t localTimer = millis() % localInterval;
  277. if ((localTimer <= .29 * localInterval) || (localTimer >= .70 * localInterval)) {
  278. digitalWrite(district4arcwelders, HIGH);
  279. } else {
  280. digitalWrite(district4arcwelders, LOW);
  281. }
  282. }
  283.  
  284. //********************************************************
  285. //workshoplightsCycle
  286. void workshoplightsCycle() {
  287. int32_t localInterval = 2 * 240 * interval;
  288. int32_t localTimer = millis() % localInterval;
  289. if ((localTimer <= .31 * localInterval) || (localTimer >= .70 * localInterval)) {
  290. digitalWrite(workshoplights, HIGH);
  291. } else {
  292. digitalWrite(workshoplights, LOW);
  293. }
  294. }
  295.  
  296.  
  297. //*********************************************************
  298. //fires1Cycle
  299. void fires1Cycle() {
  300. int32_t localInterval = 2 * 240 * interval;
  301. int32_t localTimer = millis() % localInterval;
  302. if ((localTimer <= .35 * localInterval) || (localTimer >= .68 * localInterval)) {
  303. digitalWrite(fires1, HIGH);
  304. } else {
  305. digitalWrite(fires1, LOW);
  306. }
  307. }
  308.  
  309.  
  310. //*********************************************************
  311. //fires2Cycle
  312. void fires1Cyc2e() {
  313. int32_t localInterval = 2 * 240 * interval;
  314. int32_t localTimer = millis() % localInterval;
  315. if ((localTimer <= .35 * localInterval) || (localTimer >= .68 * localInterval)) {
  316. digitalWrite(fires2, HIGH);
  317. } else {
  318. digitalWrite(fires2, LOW);
  319. }
  320. }
  321.  
Advertisement
Add Comment
Please, Sign In to add comment