Advertisement
kris83

Swiatla samochodowe Przednie

Jul 9th, 2021
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.82 KB | None | 0 0
  1. ///////////////////////////////////////////////////
  2. // Światła samochodowe Przednie //
  3. // Arduino Nano V3 //
  4. // Firmware 09.07.2021 //
  5. ///////////////////////////////////////////////////
  6.  
  7. #include "Arduino.h"
  8. #include <FastLED.h>
  9.  
  10. #define LED_PIN 8 // Połączenie sygnału taśmy LED
  11.  
  12. #define DRLSignal 4 // Połączenie sygnału przełącznika DRL
  13. #define LeftSignal 2 // Połączenie sygnału lewego migacza
  14. #define RightSignal 3 // Połączenie sygnału prawego migacza
  15.  
  16. #define NUM_LEDS 44 // Całkowita liczba diod LED w dwóch taśmach LED (np. Użyj tutaj 40 dla dwóch 20 taśm LED)
  17. #define BlinkerLEDs NUM_LEDS/2
  18.  
  19. int BlinkerSpeed = 10; // Kierunkowskaz działa prędkość LED. Dostosuj to do prędkości kierunkowskazów pojazdu.
  20. int BlinkerOffDelay = 250; // Włącz czas wyłączenia sygnału. Dostosuj to do prędkości kierunkowskazów pojazdu.
  21.  
  22. int StartupSpeed = 10;
  23. int DRLDetect = 0;
  24.  
  25. int DRLColour = 3; // Zmień kolor diody LED tutaj, 1-lodowy błękit, 2-niebieski, 3-biały, 4-pomarańczowy
  26.  
  27. CRGB leds[NUM_LEDS];
  28. int r, r_dim, g, g_dim, b, b_dim;
  29.  
  30.  
  31. void setup()
  32. {
  33. FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
  34. pinMode(DRLSignal, INPUT);
  35. pinMode(LeftSignal, INPUT);
  36. pinMode(RightSignal, INPUT);
  37. }
  38.  
  39.  
  40. void loop()
  41. {
  42. if (DRLDetect == 0)
  43. {
  44. if (digitalRead(DRLSignal) == 1)
  45. {
  46. DRLDetect = 1;
  47. }
  48. }
  49.  
  50. if (DRLDetect == 2)
  51. {
  52. if (digitalRead(DRLSignal) == 0)
  53. {
  54. DRLDetect = 3;
  55. }
  56. }
  57.  
  58. if (DRLDetect == 1)
  59. {
  60. DRL_ON();
  61. DRLDetect = 2;
  62. }
  63.  
  64. if (DRLDetect == 3)
  65. {
  66. DRL_OFF();
  67. DRLDetect = 0;
  68. }
  69.  
  70.  
  71. if (digitalRead(DRLSignal) == 0)
  72. {
  73. if ((digitalRead(LeftSignal) == 1) && (digitalRead(RightSignal) == 0)) // Lewy migacz
  74. {
  75. RightOff();
  76. LeftBlinker();
  77. LeftDim();
  78. delay (BlinkerOffDelay);
  79. }
  80.  
  81. if ((digitalRead(RightSignal) == 1) && (digitalRead(LeftSignal) == 0)) // Prawy migacz
  82. {
  83. LeftOff();
  84. RightBlinker();
  85. RightDim();
  86. delay (BlinkerOffDelay);
  87. }
  88.  
  89. if ((digitalRead(LeftSignal) == 1) && (digitalRead(RightSignal) == 1)) // Podwójny migacz/zagrożenie
  90. {
  91. MiddleOff();
  92. DualBlinker();
  93. LeftDim();
  94. RightDim();
  95. delay (BlinkerOffDelay);
  96. }
  97. }
  98.  
  99.  
  100. if (DRLDetect == 2)
  101. {
  102. if ((digitalRead(LeftSignal) == 0) && (digitalRead(RightSignal) == 0)) // Światło parkowe
  103. {
  104. ParkFull();
  105. }
  106.  
  107. if ((digitalRead(LeftSignal) == 1) && (digitalRead(RightSignal) == 0)) // Lewy migacz
  108. {
  109. LeftDim();
  110. RightLit();
  111. LeftBlinker();
  112. LeftDim();
  113. delay (BlinkerOffDelay);
  114. }
  115.  
  116. if ((digitalRead(RightSignal) == 1) && (digitalRead(LeftSignal) == 0)) // Prawy migacz
  117. {
  118. RightDim();
  119. LeftLit();
  120. RightBlinker();
  121. RightDim();
  122. delay (BlinkerOffDelay);
  123. }
  124.  
  125. if ((digitalRead(LeftSignal) == 1) && (digitalRead(RightSignal) == 1)) // Podwójny migacz/zagrożenie
  126. {
  127. LeftDim();
  128. RightDim();
  129. ParkMiddle();
  130. DualBlinker();
  131. LeftDim();
  132. RightDim();
  133. delay (BlinkerOffDelay);
  134. }
  135. }
  136.  
  137. switch (DRLColour)
  138. {
  139. case 1:
  140. g = 255;
  141. g_dim = 30;
  142. b = 255;
  143. b_dim = 30;
  144. break;
  145.  
  146. case 2:
  147. b = 255;
  148. b_dim = 30;
  149. break;
  150.  
  151. case 3:
  152. r = 255;
  153. r_dim = 30;
  154. g = 255;
  155. g_dim = 30;
  156. b = 255;
  157. b_dim = 30;
  158. break;
  159.  
  160. case 4:
  161. r = 255;
  162. r_dim = 30;
  163. g = 165;
  164. g_dim = 20;
  165. b = 0;
  166. b_dim = 0;
  167. break;
  168. }
  169.  
  170. }
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. void DRL_ON()
  178. {
  179. for (int j = ((NUM_LEDS / 2) - 1); j >= 0; j--)
  180. {
  181. leds[j] = CRGB(r_dim, g_dim, b_dim);
  182. leds[j + 1] = CRGB(0, 0, 0);
  183. leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j)] = CRGB(r_dim, g_dim, b_dim);
  184. leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j) - 1] = CRGB(0, 0, 0);
  185. FastLED.show();
  186. delay (StartupSpeed);
  187. }
  188.  
  189. for (int i = 0; i < (NUM_LEDS / 2); i++)
  190. {
  191. leds[i] = CRGB(r_dim, g_dim, b_dim);
  192. leds[(NUM_LEDS - 1) - i] = CRGB(r_dim, g_dim, b_dim);
  193. FastLED.show();
  194. delay (StartupSpeed);
  195. }
  196.  
  197.  
  198. for (int j = ((NUM_LEDS / 2) - 1); j >= 0; j--)
  199. {
  200. leds[j] = CRGB(r, g, b);
  201. leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j)] = CRGB(r, g, b);
  202. FastLED.show();
  203. delay (StartupSpeed);
  204. }
  205. }
  206.  
  207. void DRL_OFF()
  208. {
  209.  
  210. for (int j = 0; j <= ((NUM_LEDS / 2) - 1); j++)
  211. {
  212. leds[j] = CRGB(r, g, b);
  213. leds[j - 1] = CRGB(r_dim, g_dim, b_dim);
  214. leds[(NUM_LEDS - 1) - j] = CRGB(r, g, b);
  215. leds[(NUM_LEDS) - j] = CRGB(r_dim, g_dim, b_dim);
  216. FastLED.show();
  217. delay (StartupSpeed);
  218. }
  219.  
  220. leds[((NUM_LEDS / 2) - 1)] = CRGB(r_dim, g_dim, b_dim);
  221. leds[((NUM_LEDS / 2) - 1) + 1] = CRGB(r_dim, g_dim, b_dim);
  222. FastLED.show();
  223.  
  224. for (int j = ((NUM_LEDS / 2) - 1); j >= 0; j--)
  225. {
  226. leds[j] = CRGB(r_dim, g_dim, b_dim);
  227. leds[j + 1] = CRGB(0, 0, 0);
  228. leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j)] = CRGB(r_dim, g_dim, b_dim);
  229. leds[(NUM_LEDS / 2 - 1) + ((NUM_LEDS / 2) - j) - 1] = CRGB(0, 0, 0);
  230. FastLED.show();
  231. delay (StartupSpeed);
  232. }
  233.  
  234. for (int j = 0; j <= ((NUM_LEDS / 2) - 1); j++)
  235. {
  236. leds[j] = CRGB(r_dim, g_dim, b_dim);
  237. leds[j - 1] = CRGB(0, 0, 0);
  238. leds[(NUM_LEDS - 1) - j] = CRGB(r_dim, g_dim, b_dim);
  239. leds[(NUM_LEDS) - j] = CRGB(0, 0, 0);
  240. FastLED.show();
  241. delay (StartupSpeed);
  242. }
  243.  
  244. leds[(NUM_LEDS / 2) - 1] = CRGB(0, 0, 0);
  245. leds[NUM_LEDS / 2] = CRGB(0, 0, 0);
  246. FastLED.show();
  247. }
  248.  
  249. void AllOff()
  250. {
  251. for (int i = 0; i < NUM_LEDS; i++)
  252. {
  253. leds[i] = CRGB(0, 0, 0);
  254. }
  255. FastLED.show();
  256. }
  257.  
  258. void LeftOff()
  259. {
  260. for (int i = 0; i < (NUM_LEDS - BlinkerLEDs); i++)
  261. {
  262. leds[i] = CRGB(0, 0, 0);
  263. }
  264. FastLED.show();
  265. }
  266.  
  267. void RightOff()
  268. {
  269. for (int i = BlinkerLEDs; i < NUM_LEDS; i++)
  270. {
  271. leds[i] = CRGB(0, 0, 0);
  272. }
  273. FastLED.show();
  274. }
  275.  
  276. void MiddleOff()
  277. {
  278. for (int i = BlinkerLEDs; i < (NUM_LEDS - BlinkerLEDs); i++)
  279. {
  280. leds[i] = CRGB(0, 0, 0);
  281. }
  282. FastLED.show();
  283. }
  284.  
  285. void ParkFull()
  286. {
  287. for (int i = 0; i < NUM_LEDS; i++)
  288. {
  289. leds[i] = CRGB(r, g, b);
  290. }
  291. FastLED.show();
  292. }
  293.  
  294. void ParkMiddle()
  295. {
  296. for (int i = BlinkerLEDs; i < (NUM_LEDS - BlinkerLEDs); i++)
  297. {
  298. leds[i] = CRGB(60, 0, 0);
  299. }
  300. FastLED.show();
  301. }
  302.  
  303. void LeftBlinker()
  304. {
  305. for (int i = (BlinkerLEDs - 1); i >= 0; i--)
  306. {
  307. leds[i] = CRGB(255, 165, 0);
  308. FastLED.show();
  309. delay (BlinkerSpeed);
  310. }
  311. }
  312.  
  313. void LeftDim()
  314. {
  315. for (int i = 0; i < BlinkerLEDs; i++)
  316. {
  317. leds[i] = CRGB(0, 0, 0);
  318. }
  319. FastLED.show();
  320. }
  321.  
  322. void LeftLit()
  323. {
  324. for (int i = 0; i < (NUM_LEDS - BlinkerLEDs); i++)
  325. {
  326. leds[i] = CRGB(r, g, b);
  327. }
  328. FastLED.show();
  329. }
  330.  
  331. void LeftFull()
  332. {
  333. for (int i = 0; i < (NUM_LEDS - BlinkerLEDs); i++)
  334. {
  335. leds[i] = CRGB(r, g, b);
  336. }
  337. FastLED.show();
  338. }
  339.  
  340. void RightBlinker()
  341. {
  342. for (int i = (NUM_LEDS - BlinkerLEDs); i < NUM_LEDS; i++)
  343. {
  344. leds[i] = CRGB(255, 165, 0);
  345. FastLED.show();
  346. delay (BlinkerSpeed);
  347. }
  348. }
  349.  
  350. void RightDim()
  351. {
  352. for (int i = (NUM_LEDS - BlinkerLEDs); i < NUM_LEDS; i++)
  353. {
  354. leds[i] = CRGB(0, 0, 0);
  355. }
  356. FastLED.show();
  357. }
  358.  
  359. void RightLit()
  360. {
  361. for (int i = BlinkerLEDs; i < NUM_LEDS; i++)
  362. {
  363. leds[i] = CRGB(r, g, b);
  364. }
  365. FastLED.show();
  366. }
  367.  
  368. void RightFull()
  369. {
  370. for (int i = BlinkerLEDs; i < NUM_LEDS; i++)
  371. {
  372. leds[i] = CRGB(r, g, b);
  373. }
  374. FastLED.show();
  375. }
  376.  
  377. void DualBlinker()
  378. {
  379. for (int i = (BlinkerLEDs - 1); i >= 0; i--)
  380. {
  381. leds[i] = CRGB(255, 165, 0);
  382. leds[NUM_LEDS - 1 - i] = CRGB(255, 165, 0);
  383. FastLED.show();
  384. delay (BlinkerSpeed);
  385. }
  386. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement