Adafruit BDSM Alarm

files.catbox.moe/giwmyi.mp4

1. Adafruit Metro Mini
2. MG90S Servo
3. 7 Segment Digit Display
4. Toggle Switch
5. Momentary Button (2)
6. AAA Battery (3)


  1. // alarm choker
  2. // vgmlr
  3. #include "SevSeg.h"
  4. #include "Servo.h"
  5. SevSeg sevseg;
  6. int digit = 0;
  7. Servo choke;
  8. const int servo_pin = 10;
  9. const int start = 180;
  10. const int finish = 0;
  11. int pos = 0;
  12. const int top = 11;
  13. const int bottom = 12;
  14. int top_state = 0;
  15. int bot_state = 0;
  16. const unsigned long sec = 1000;
  17. const unsigned long hr = 3600 * sec;
  18. int cd = 0;
  19. int buttonState;
  20. int lastButtonState = LOW;
  21. unsigned long lastDebounceTime = 0;
  22. unsigned long debounceDelay = 50;
  23. void setup() {
  24. // digit
  25. byte numDigits = 1;
  26. byte digitPins[] = {};
  27. // A, B, C, D, E, F, G, DP
  28. byte segmentPins[] = {3, 2, 8, 7, 6, 4, 5, 9};
  29. bool resistorsOnSegments = true;
  30. sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins, resistorsOnSegments);
  31. sevseg.setBrightness(50);
  32. // servo
  33. choke.attach(servo_pin);
  34. choke.write(start);
  35. // buttons
  36. pinMode(top, INPUT);
  37. pinMode(bottom, INPUT);
  38. }
  39. void loop() {
  40. bot_state = digitalRead(bottom);
  41. sevseg.setNumber(digit);
  42. sevseg.refreshDisplay();
  43. if (bot_state != lastButtonState) {
  44. lastDebounceTime = millis();
  45. }
  46. if ((millis() - lastDebounceTime) > debounceDelay) {
  47. if (bot_state != buttonState) {
  48. buttonState = bot_state;
  49. if (buttonState == HIGH) {
  50. if (digit == 9) {
  51. digit = 0;
  52. sevseg.setNumber(digit);
  53. sevseg.refreshDisplay();
  54. } else {
  55. digit++;
  56. sevseg.setNumber(digit);
  57. sevseg.refreshDisplay();
  58. }
  59. }
  60. }
  61. }
  62. // start button
  63. top_state = digitalRead(top);
  64. if (top_state == HIGH) {
  65. if (digit == 0) {
  66. countdown();
  67. } else {
  68. alarm();
  69. }
  70. }
  71. lastButtonState = bot_state;
  72. }
  73. void alarm() {
  74. for (int w = 0; w < 3; w++) {
  75. sevseg.setNumber(digit);
  76. sevseg.refreshDisplay();
  77. delay(500);
  78. sevseg.blank();
  79. sevseg.refreshDisplay();
  80. delay(500);
  81. }
  82. for (int k = digit; k > 0; k--) {
  83. sevseg.setNumber(k,0);
  84. sevseg.refreshDisplay();
  85. delay(hr);
  86. }
  87. sevseg.setNumber(0);
  88. sevseg.refreshDisplay();
  89. delay(1000);
  90. countdown();
  91. }
  92. void countdown() {
  93. for (int i = 9; i > 0; i--) {
  94. sevseg.setNumber(i);
  95. sevseg.refreshDisplay();
  96. delay(1000);
  97. }
  98. sevseg.setNumber(0);
  99. sevseg.refreshDisplay();
  100. wakeup();
  101. }
  102. void wakeup() {
  103. for (int x = start; x > finish; x--) {
  104. choke.write(x);
  105. delay(20);
  106. }
  107. }
Update(s)-
1. ptmr | 343025 [Changelog]
10:22 343 025
Dev-
1. TVShow (227) 'CSA'
2. Wedge (Miter) 1.0.0
3. TVShow (228) 'APT'
4. TVProgram (83) 'BXT'
11:51 339 025

Menu
Index
Engineering
Entertainment
Literature
Miscellaneous
Contact
Search
tiktok.com/@vgmlr
youtube.com/@vgmlr
Miter
@vgmlr
=SUM(parts)
86 miters
131 tenons
Subscribe
0.00112