KGBRUS

Schweisslicht

Jul 21st, 2022
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.67 KB | None | 0 0
  1. /*----------------------------------Revision History --------------------------------------------
  2. Darstellung Licht des schweissbogens
  3. LED Kaltweiß für maximale Helligkeit LED mit Vorwiederstand 47 Ohm an 5V betreiben
  4. 1.0 Ein und AUsgänge definiert
  5. 1.1 Realiesierung über State masch Funktionstest OK
  6.  
  7.  
  8.  
  9. */
  10.  
  11.  
  12. // Umbenenen der STM Pins
  13.  
  14. // EIngänge
  15.  
  16. const int TASFU0001 = PB9; // Taster zum Auslösen der Schweissszene
  17. int TASFU0001State = 0;
  18. // Ausgänge
  19. // LED AUSGÄNGE
  20. const int FULED0001 = PA0; // Lichtschranke einfahrt Ebene 0
  21. int FULED0001State = 0;
  22.  
  23.  
  24.  
  25. //Variablen:
  26.  
  27. int xZaehlFU001 = 0; // Ganze Zahl um Helligkeit rauf zu zählen für
  28. int RANDOM0001 = 1; // Zufahlszahl für States in Schweislicht State Maschine
  29. unsigned RANDOM0002 = 0;
  30. unsigned RANDOM0003 = 0;
  31. int RANDOM0004 = 0;
  32. int RANDOM0005 = 0;
  33. int RANDOM0006 = 0;
  34. int RANDOM0007 = 0;
  35. int RANDOM0008 = 0;
  36. unsigned ZeitSpeiFU0001 = 0; // Zeitspeicher für State maschine Schweislicht
  37.  
  38. enum SCHWEISSTATE01 // State Maschine für Schweisslicht
  39. {
  40. GANZHELL, HELL, MITTEL, DUNKEL, AUS, VERTEILER
  41. };
  42.  
  43. SCHWEISSTATE01 akt_state_SCHWEISSTATE01 = VERTEILER;
  44. SCHWEISSTATE01 next_state_SCHWEISSTATE01 = VERTEILER;
  45.  
  46. void setup()
  47. {
  48. pinMode(LED_BUILTIN, OUTPUT); //LED auf Arduino auf HIGh
  49. pinMode (TASFU0001, INPUT);
  50.  
  51. pinMode (FULED0001, OUTPUT);
  52.  
  53. }
  54.  
  55. void loop()
  56. //-------------------------------- Schweisslicht Begin
  57. {
  58.  
  59.  
  60. {
  61. //------------------------------ Begin State Maschine Schweislicht
  62. if (next_state_SCHWEISSTATE01 != akt_state_SCHWEISSTATE01) // ---------------vergleich ob Status der State Maschine sich geändert hat
  63. {
  64. switch (next_state_SCHWEISSTATE01) // ---------------------------------Begin State Maschine für Übergänge (alles wird nur einmal ausgeführt)
  65. {
  66. case VERTEILER:
  67. {
  68. RANDOM0001 = random(5); // Zufällig geweählte State
  69. RANDOM0002 = random(150); // Zufällig gewählte Zeit für die leuchtdauer in den einzelnen States
  70. RANDOM0003 = random(250, 1000); // Zufällig gewählte Zeit für aus
  71. RANDOM0004 = random(65); // Zufallszahl für Helligkeit im State DUNKEL
  72. RANDOM0005 = random(65, 125); // Zufallszahl für Helligkeit im State MITTEL
  73. RANDOM0006 = random(125, 185); // Zufallszahl für Helligkeit im State HELL
  74. RANDOM0007 = random(185, 255); // Zufallszahl für Helligkeit im State GANZHELL
  75. RANDOM0008 = random(100, 500); // Zufallszahl Zeit für Helligkeit im State GANZHELL
  76.  
  77. break;
  78. }
  79. case DUNKEL:
  80. {
  81. ZeitSpeiFU0001 = millis();
  82. break;
  83. }
  84. case MITTEL:
  85. {
  86. ZeitSpeiFU0001 = millis();
  87. break;
  88. }
  89. case HELL:
  90. {
  91. ZeitSpeiFU0001 = millis();
  92. break;
  93. }
  94. case GANZHELL:
  95. {
  96. ZeitSpeiFU0001 = millis();
  97. break;
  98. }
  99. case AUS:
  100. {
  101. ZeitSpeiFU0001 = millis();
  102. break;
  103. }
  104. }
  105. akt_state_SCHWEISSTATE01 = next_state_SCHWEISSTATE01; // Zustand next in Zustand akt schreiben
  106. }
  107.  
  108. // ----------------------------------------------------------------- begin State Maschine mit befehlen
  109. switch (akt_state_SCHWEISSTATE01)
  110. {
  111. case VERTEILER:
  112. {
  113. if (RANDOM0001 == 0)
  114. {
  115. next_state_SCHWEISSTATE01 = GANZHELL;
  116. }
  117. if (RANDOM0001 == 1)
  118. {
  119. next_state_SCHWEISSTATE01 = HELL;
  120. }
  121. if (RANDOM0001 == 2)
  122. {
  123. next_state_SCHWEISSTATE01 = MITTEL;
  124. }
  125. if (RANDOM0001 == 3)
  126. {
  127. next_state_SCHWEISSTATE01 = DUNKEL;
  128. }
  129. if (RANDOM0001 == 4)
  130. {
  131. next_state_SCHWEISSTATE01 = AUS;
  132. }
  133. if (RANDOM0001 == 5)
  134. {
  135. next_state_SCHWEISSTATE01 = AUS;
  136. }
  137. break;
  138. }
  139. case DUNKEL:
  140. {
  141. analogWrite(FULED0001, RANDOM0005);
  142. if ( millis() - RANDOM0002 > ZeitSpeiFU0001)
  143. {
  144. next_state_SCHWEISSTATE01 = VERTEILER;
  145. }
  146. break;
  147. }
  148. case MITTEL:
  149. {
  150. analogWrite(FULED0001, RANDOM0004);
  151. if ( millis() - RANDOM0002 > ZeitSpeiFU0001)
  152. {
  153. next_state_SCHWEISSTATE01 = VERTEILER;
  154. }
  155. break;
  156. }
  157. case HELL:
  158. {
  159. analogWrite(FULED0001, RANDOM0006);
  160. if ( millis() - RANDOM0002 > ZeitSpeiFU0001)
  161. {
  162. next_state_SCHWEISSTATE01 = VERTEILER;
  163. }
  164. break;
  165. }
  166. case GANZHELL:
  167. {
  168. analogWrite(FULED0001, RANDOM0007);
  169. if ( millis() - RANDOM0008 > ZeitSpeiFU0001)
  170. {
  171. next_state_SCHWEISSTATE01 = VERTEILER;
  172. }
  173. break;
  174. }
  175. case AUS:
  176. {
  177. analogWrite(FULED0001, 0);
  178. if ( millis() - RANDOM0003 > ZeitSpeiFU0001)
  179. {
  180. next_state_SCHWEISSTATE01 = VERTEILER;
  181. }
  182. break;
  183. }
  184.  
  185. }
  186. // ----------------------------------------------------------------- Ende State Maschine mit befehlen
  187. //------------------------------ Ende State Maschine Schweislicht
  188. }
  189.  
  190. //-------------------------------- Schweisslicht Ende
  191. }
Advertisement
Add Comment
Please, Sign In to add comment