Advertisement
Morros

Untitled

Sep 24th, 2022
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.04 KB | None | 0 0
  1.  
  2. //INCLUDE LIBRARIES:-------------------------------------------------------------
  3. #include <ClickButton.h>
  4.  
  5. // DEFINE INITIAL FUNCTION STATES: ----------------------------------------------
  6. boolean runlightsActive = true;
  7. boolean britesActive = false;
  8. boolean brakeActive = false;
  9. boolean leftTurnActive = false;
  10. boolean rightTurnActive = false;
  11. boolean hornActive = false;
  12. boolean startActive = false;
  13. boolean suspendRunlights = false;
  14. boolean parkActive = false;
  15. boolean hazzardActive = false;
  16. //boolean killActive = false;
  17. boolean headlightActive = false;
  18.  
  19.  
  20. // DEFINE INPUT PINS: -----------------------------------------------------------//
  21. #define frontCtrlPin A0
  22. #define britesCtrlPin 10
  23. #define brakeCtrlPin 11
  24. #define leftCtrlPin 12
  25. #define rightCtrlPin A0
  26. #define hornCtrlPin A1
  27. #define startCtrlPin A3
  28. #define headlightCtrlPin A4
  29.  
  30. // DEFINE CLICKBUTTONS
  31.  
  32.  
  33. ClickButton britesButton (britesCtrlPin, LOW, CLICKBTN_PULLUP);
  34. ClickButton brakeButton (brakeCtrlPin, LOW, CLICKBTN_PULLUP);
  35. ClickButton leftButton (leftCtrlPin, LOW, CLICKBTN_PULLUP);
  36. ClickButton rightButton (rightCtrlPin, LOW, CLICKBTN_PULLUP);
  37. ClickButton hornButton (hornCtrlPin, LOW, CLICKBTN_PULLUP);
  38. ClickButton startButton (startCtrlPin, LOW, CLICKBTN_PULLUP);
  39. ClickButton headlightButton (headlightCtrlPin, LOW, CLICKBTN_PULLUP);
  40.  
  41. // DEFINE RELAY PINS: -----------------------------------------------------------
  42.  
  43.  
  44. #define runlightsPin 2
  45. #define britesPin 3
  46. #define brakePin 4
  47. #define leftTurnPin 5
  48. #define rightTurnPin 6
  49. #define hornPin 7
  50. #define startPin 8
  51. //#define killPin
  52. #define headlightPin 9
  53.  
  54.  
  55. // DEFINE INITIAL RELAY STATES FOR TIMED FUNCTIONS: -----------------------------
  56. int leftLight = HIGH;
  57. int rightLight = HIGH;
  58.  
  59.  
  60. // DEFINE INITIAL MS COUNT FOR FUNCTIONS: ---------------------------------------
  61. // will store last time LED was updated OR switch debonce
  62. unsigned long leftTurnMs = 0;
  63. unsigned long rightTurnMs = 0;
  64. unsigned long hazzardMs = 0;
  65.  
  66.  
  67. unsigned long britesCtrlMs = 0;
  68. unsigned long brakeCtrlMS = 0;
  69. unsigned long leftCtrlMS = 0;
  70. unsigned long rightCtrlMS = 0;
  71. unsigned long hornCtrlMS = 0;
  72. unsigned long startCtrlMS = 0;
  73. unsigned long headlightCtrlMS = 0;
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. // DEFINE CONSTANT INTERVALS:----------------------------------------------------
  82. #define turnInterval 500
  83. #define hazzardInterval 200
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. // SETUP ///////////////////////////////////////////////////////////////////////
  91.  
  92.  
  93. void setup() {
  94.  
  95.  
  96. // SET INITIAL RELAY STATES TO AVOID MISFIRES AT STARTUP:------------------------
  97. digitalWrite (runlightsPin,LOW);
  98. digitalWrite (britesPin,HIGH);
  99. digitalWrite (brakePin,HIGH);
  100. digitalWrite (rightTurnPin, rightLight);
  101. digitalWrite (leftTurnPin, leftLight);
  102. digitalWrite (hornPin,HIGH);
  103. digitalWrite (startPin, HIGH);
  104. //digitalWrite (killPin, HIGH);
  105. digitalWrite (headlightPin,HIGH);
  106.  
  107. /* / ACTIVATE INPUT BUTTION PULLUPS:-----------------------------------------------
  108. digitalWrite (britesCtrlPin, HIGH);
  109. digitalWrite (brakeCtrlPin, HIGH);
  110. digitalWrite (leftCtrlPin, HIGH);
  111. digitalWrite (rightCtrlPin, HIGH);
  112. digitalWrite (hornCtrlPin, HIGH);
  113. digitalWrite (startCtrlPin, HIGH);
  114. digitalWrite (headlightCtrlPin,HIGH); */
  115.  
  116. /* // DEFINE INPUT PINS:------------------------------------------------------------
  117. //pinMode(frontCtrlPin,INPUT);
  118. pinMode(britesCtrlPin,INPUT_PULLUP);
  119. pinMode(brakeCtrlPin,INPUT_PULLUP);
  120. pinMode(leftCtrlPin,INPUT_PULLUP);
  121. pinMode(rightCtrlPin,INPUT_PULLUP);
  122. pinMode(hornCtrlPin,INPUT_PULLUP);
  123. pinMode(startCtrlPin,INPUT_PULLUP);
  124. pinMode(headlightCtrlPin,INPUT_PULLUP); */
  125.  
  126.  
  127.  
  128.  
  129.  
  130. // Setup button timers (all in milliseconds / ms)
  131. // (These are default if not set, but changeable for convenience)
  132. //button1.debounceTime = 20; // Debounce timer in ms
  133. brakeButton.multiclickTime = 1000; // Time limit for multi clicks
  134. startButton.longClickTime = 1500; // time until "held-down clicks" register
  135.  
  136. // DEFINE OUTPUT PINS:-----------------------------------------------------------
  137. pinMode(runlightsPin, OUTPUT);
  138. pinMode(britesPin, OUTPUT);
  139. pinMode(brakePin, OUTPUT);
  140. pinMode(leftTurnPin, OUTPUT);
  141. pinMode(rightTurnPin, OUTPUT);
  142. pinMode(hornPin, OUTPUT);
  143. pinMode(startPin, OUTPUT);
  144. //pinMode(killPin, OUTPUT);
  145. pinMode(headlightPin, OUTPUT);
  146. }
  147.  
  148.  
  149.  
  150.  
  151. // MAIN LOOP ////////////////////////////////////////////////////////////////////
  152. void loop()
  153. {
  154.  
  155. // CHECK CONDITIONS FOR EACH FUNCTION STATE AND CALL APPROPRIATE FUNCTION ////////////////////////
  156.  
  157.  
  158. readInputSwitches();
  159.  
  160.  
  161. if (runlightsActive == true && suspendRunlights == false ){ runlightsOn();}
  162. else{runlightsOff();}
  163.  
  164. if (britesActive == true){britesOn();}
  165. else{britesOff();}
  166.  
  167. if (brakeActive == true){brakeLightsOn();}
  168. else{brakeLightsOff();}
  169.  
  170. if (hornActive == true){hornOn();}
  171. else{hornOff();}
  172.  
  173.  
  174. if (startActive == true){
  175. starterOn();
  176. suspendRunlights = true;
  177. }
  178. else{
  179. starterOff();
  180. suspendRunlights = false;
  181. }
  182.  
  183. if (leftTurnActive == true){
  184. leftTurnOn();
  185. rightTurnActive = false;
  186. parkActive = false;
  187. hazzardActive = false;
  188. }
  189. else if (rightTurnActive == true){
  190. rightTurnOn();
  191. leftTurnActive = false;
  192. parkActive = false;
  193. hazzardActive = false;
  194. }
  195. else if (hazzardActive == true){
  196. hazzardFlashers();
  197. leftTurnActive = false;
  198. rightTurnActive = false;
  199. parkActive = false;
  200. }
  201. else if (parkActive == true){
  202. parkingLightsOn();
  203. leftTurnActive = false;
  204. rightTurnActive = false;
  205. hazzardActive = false;
  206. }
  207. else {blinkersOff();}
  208.  
  209. if (headlightActive == true){headlightOn();}
  210. else{headlightOff();}
  211.  
  212. // TEST SEQUENCE TO CHECK FUNCTIONS WITHOUT BUTTONS
  213.  
  214.  
  215. //leftTurnActive = true;
  216.  
  217.  
  218. //rightTurnActive = true;
  219.  
  220.  
  221. //hazzardActive = true;
  222.  
  223.  
  224. //parkActive = true;
  225.  
  226.  
  227. //brakeActive = true;
  228.  
  229.  
  230. //headlightOn();
  231.  
  232.  
  233. //britesActive = true;
  234.  
  235.  
  236. //runlightsOff();
  237.  
  238.  
  239. //hornActive = true;
  240.  
  241.  
  242. //startActive = true;
  243.  
  244.  
  245. }
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252. //FUNCTIONS///////////////////////////////////////////////////////////////////
  253.  
  254.  
  255.  
  256.  
  257. // READ INPUT SWITCHES
  258.  
  259.  
  260. void readInputSwitches(){
  261.  
  262. //WITH CLICKBUTTON
  263.  
  264.  
  265. britesButton.Update();
  266. if (britesButton.depressed == true)britesActive = !britesActive;
  267.  
  268.  
  269. leftButton.Update();
  270. if (leftButton.depressed == true) leftTurnActive = !leftTurnActive;
  271.  
  272. rightButton.Update();
  273. if (rightButton.depressed == true) rightTurnActive = !rightTurnActive;
  274.  
  275.  
  276. brakeButton.Update();
  277. if (brakeButton.depressed == true){brakeActive = true;}
  278. else brakeActive = false;
  279.  
  280.  
  281. hornButton.Update();
  282. if (hornButton.depressed == true){hornActive = true;}
  283. else hornActive = false;
  284.  
  285.  
  286. startButton.Update();
  287. if (startButton.depressed == true){startActive = true;}
  288. else startActive = false;
  289.  
  290. headlightButton.Update();
  291. if (headlightButton.depressed == true){headlightActive = true;}
  292. else headlightActive = false;
  293.  
  294. /* WITHOUT CLICKBUTTON
  295. if (digitalRead (britesCtrlPin) == LOW){britesActive = true;}
  296. else britesActive = false;
  297.  
  298.  
  299. if (digitalRead (leftCtrlPin) == LOW){leftTurnActive = true;}
  300. else leftTurnActive = false;
  301.  
  302.  
  303. if (digitalRead (rightCtrlPin) == LOW){rightTurnActive = true;}
  304. else rightTurnActive = false;
  305.  
  306.  
  307. if (digitalRead (brakeCtrlPin) == LOW){brakeActive = true;}
  308. else brakeActive = false;
  309.  
  310.  
  311. if (digitalRead (hornCtrlPin) == LOW){hornActive = true;}
  312. else hornActive = false;
  313.  
  314.  
  315. if (digitalRead (startCtrlPin) == LOW){startActive = true;}
  316. else startActive = false; */
  317.  
  318.  
  319. }
  320.  
  321.  
  322. // RUNNING LIGHTS: --------------------------------------------------------------
  323.  
  324.  
  325. void runlightsOn(){
  326. digitalWrite(runlightsPin, LOW);
  327. }
  328.  
  329.  
  330. void runlightsOff(){
  331. digitalWrite(runlightsPin, HIGH);
  332. }
  333.  
  334.  
  335.  
  336.  
  337. // HIGHBEAM: -------------------------------------------------------------------
  338.  
  339.  
  340. void britesOn(){
  341. digitalWrite(britesPin, LOW);
  342. }
  343.  
  344.  
  345. void britesOff(){
  346. digitalWrite(britesPin, HIGH);
  347. }
  348.  
  349.  
  350.  
  351.  
  352. // BRAKE LIGHTS: ---------------------------------------------------------------
  353.  
  354.  
  355. void brakeLightsOn(){
  356. digitalWrite(brakePin, LOW);
  357. }
  358.  
  359.  
  360. void brakeLightsOff(){
  361. digitalWrite(brakePin, HIGH);
  362. }
  363.  
  364.  
  365.  
  366.  
  367. // LEFT TURN SIGNAL: ---------------------------------------------------------
  368.  
  369.  
  370. void leftTurnOn(){
  371. unsigned long currentMs = millis();
  372. if(currentMs - leftTurnMs >= turnInterval) {
  373. // save the last time you blinked the LED
  374. leftTurnMs = currentMs;
  375.  
  376.  
  377. // if the LED is off turn it on and vice-versa:
  378. if (leftLight == HIGH)
  379. leftLight = LOW;
  380. else
  381. leftLight = HIGH;
  382.  
  383.  
  384. // set the LED with the ledState of the variable:
  385. digitalWrite(leftTurnPin, leftLight);
  386. digitalWrite(rightTurnPin, HIGH);
  387. }
  388. }
  389.  
  390.  
  391.  
  392.  
  393. // RIGHT TURN SIGNAL: ---------------------------------------------------------
  394.  
  395.  
  396. void rightTurnOn(){
  397. unsigned long currentMs = millis();
  398. if(currentMs - rightTurnMs >= turnInterval) {
  399. // save the last time you blinked the LED
  400. rightTurnMs = currentMs;
  401.  
  402.  
  403. // if the LED is off turn it on and vice-versa:
  404. if (rightLight == HIGH)
  405. rightLight = LOW;
  406. else
  407. rightLight = HIGH;
  408.  
  409.  
  410. // set the LED with the ledState of the variable:
  411. digitalWrite(rightTurnPin, rightLight);
  412. digitalWrite(leftTurnPin, HIGH);
  413. }
  414. }
  415.  
  416.  
  417.  
  418.  
  419. // HAZZARD FLASHERS: -----------------------------------------------------------
  420.  
  421.  
  422. void hazzardFlashers(){
  423. unsigned long currentMs = millis();
  424. if(currentMs - hazzardMs >= hazzardInterval) {
  425. // save the last time you blinked the LED
  426. hazzardMs = currentMs;
  427.  
  428.  
  429. // if the LED is off turn it on and vice-versa:
  430. if (rightLight == HIGH)
  431. rightLight = LOW;
  432. else
  433. rightLight = HIGH;
  434.  
  435.  
  436. if (leftLight == HIGH)
  437. leftLight = LOW;
  438. else
  439. leftLight = HIGH;
  440.  
  441.  
  442. // set the LED with the ledState of the variable:
  443. digitalWrite(rightTurnPin, rightLight);
  444. digitalWrite(leftTurnPin, leftLight);
  445. }
  446. }
  447.  
  448.  
  449.  
  450.  
  451. // PARKING LIGHTS: -------------------------------------------------------------
  452.  
  453.  
  454. void parkingLightsOn(){
  455. digitalWrite(rightTurnPin, LOW);
  456. digitalWrite(leftTurnPin, LOW);
  457. }
  458.  
  459.  
  460.  
  461.  
  462. // BLINKERS OFF: ---------------------------------------------------------------
  463.  
  464.  
  465. void blinkersOff(){
  466. digitalWrite(rightTurnPin, HIGH);
  467. digitalWrite(leftTurnPin, HIGH);
  468. }
  469.  
  470.  
  471.  
  472.  
  473. // HORN: ------------------------------------------------------------------------
  474.  
  475.  
  476. void hornOn(){
  477. digitalWrite(hornPin, LOW);
  478. }
  479.  
  480.  
  481. void hornOff(){
  482. digitalWrite(hornPin, HIGH);
  483. }
  484.  
  485.  
  486.  
  487.  
  488. // STARTER: ---------------------------------------------------------------------
  489.  
  490.  
  491. void starterOn(){
  492. digitalWrite(startPin, LOW);
  493. }
  494.  
  495.  
  496. void starterOff(){
  497. digitalWrite(startPin, HIGH);
  498. }
  499.  
  500.  
  501.  
  502.  
  503. /* / KILLSWITCH: ------------------------------------------------------------------
  504.  
  505.  
  506. void killOn(){
  507. digitalWrite(killPin, LOW);
  508. }
  509.  
  510.  
  511. void killOff(){
  512. digitalWrite(killPin, HIGH);
  513. }
  514. */
  515.  
  516.  
  517.  
  518.  
  519. // HEADLIGHT: ------------------------------------------------------------------
  520.  
  521.  
  522. void headlightOn(){
  523. digitalWrite(headlightPin, LOW);
  524. }
  525.  
  526.  
  527. void headlightOff(){
  528. digitalWrite(headlightPin, HIGH);
  529. }
  530.  
  531.  
  532.  
  533. // END OF CODE (FOR NOW)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement