kartonman

Long Timed Arc Welder

Sep 16th, 2021
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. /* for long time-period reference
  2. 4,294,967,295 millisecs
  3. 4,294,967 seconds
  4. 71,583 minutes
  5. 1,193 hours
  6. 50 days
  7. */
  8.  
  9. #define ledPin 5 // LED connected to digital pin 9
  10. #define ledPin2 4 // LED connected to digital pin 9
  11. #define toggle 7
  12.  
  13. int weldingTable[][2] ={{3,5}, {2, 3}};
  14.  
  15. int i, j, count;
  16.  
  17. unsigned long offTimeDelay;
  18. unsigned long onTimeDelay;
  19.  
  20. long t1;
  21.  
  22. // since it's not being initialized, both dimension must be define explicity
  23. long delayTable[2][2];
  24.  
  25. void setup() {
  26. pinMode(ledPin, OUTPUT);
  27. pinMode(ledPin2, OUTPUT);
  28. pinMode(toggle, INPUT_PULLUP);
  29.  
  30. // do time-conversion once to save on repeated multiplications
  31. for (i=0; i<2; i++) {
  32. delayTable[i][0] = weldingTable[i][0] * 60000;
  33. delayTable[i][1] = weldingTable[i][1] * 60000;
  34. }
  35. }
  36.  
  37. void loop() {
  38.  
  39. if (digitalRead(toggle) == LOW) { //begin one major cycle
  40.  
  41. for (i=0; i<2; i++) { //assign time periods
  42. onTimeDelay = delayTable[i][0];
  43. offTimeDelay = delayTable[i][1];
  44.  
  45. t1 = millis(); //start timing the 'on' period
  46.  
  47. while ((millis()-t1) < onTimeDelay) { //while 'on' time hasn't run out
  48.  
  49. // but if user wants 'out', begin breaking out here
  50. if (digitalRead(toggle) != LOW) break;
  51.  
  52. ////setup a random amount of flashing and do the flashing
  53. count = random(10, 80);
  54. for (j=0; j<count; j++) {
  55. digitalWrite(ledPin, HIGH); // flash one LED
  56. delay(random(50));
  57. digitalWrite(ledPin2, HIGH); // and then the other
  58. delay(random(20));
  59. digitalWrite(ledPin, LOW); // then turn them both off
  60. digitalWrite(ledPin2, LOW);
  61. delay(random(200)); // brief pause
  62. }
  63. delay(random(800, 2000)); //pause before resume flashing
  64. }
  65. // 'on' time has run out, so reset timer and begin the 'off' time cycle
  66. t1 = millis();
  67.  
  68. while((millis()-t1) < offTimeDelay){
  69. // and complete breaking out of process here
  70. if (digitalRead(toggle) != LOW) break;
  71. }
  72.  
  73. // 'off' time is done, so go back and do it again for the second set of time periods
  74. }
  75. // both time periods have been completed, check and see if user wants to do it all over again
  76. }
  77. }
  78.  
Advertisement
Add Comment
Please, Sign In to add comment