wariat

KorpoMyszka-2.0

Feb 21st, 2026
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*  
  2.  * Korpo Myszka do pracy zdalnej
  3.  *
  4.  * Pro Micro USB Beetle (ATMEGA32U4)
  5.  * „Arduino Leonardo”
  6.  *
  7.  * copyright by wariat 2026
  8.  * WTFPL-2.0 - https://www.wtfpl.net/
  9.  */
  10.  
  11. #include <Mouse.h>
  12.  
  13. // stałe
  14. const int8_t    BUTTON            = 11;
  15. const int8_t    LED[]             = { LED_BUILTIN, 10, 9, A0, A1, A2 };
  16. const uint32_t  LED_TIMEOUT       = 3600000;  // 3600000ms = 1h czas na „jedną diodę”
  17. const uint32_t  MOUSE_MIN_TIMEOUT = 240000;   //  240000ms = 4min
  18. const uint32_t  MOUSE_MAX_TIMEOUT = 595000;   //  595000ms = 9min 55s czas po jakim załącza się wygaszacz ekranu 5m do żółtego 10m do końca
  19.  
  20. // zmienne
  21. int8_t    LEDsTillEnd     = 0;  // liczba zapalonych LED / godzin do wyłączenia 0 - 5
  22. uint32_t  LEDtimestamp;         // millis
  23. uint32_t  MOUSEtimestamp;       // millis
  24. uint32_t  MOUSEtimeout;         // czas do następnego eventu
  25.  
  26. void setup()
  27. {
  28.   pinMode ( BUTTON, INPUT );
  29.   for ( int8_t n = 0; n < 6; n++ )
  30.     pinMode ( LED[ n ], OUTPUT );
  31.  
  32.   //while ( 1 )  { delay( 5000 ); moveTheMouse(); } // MoveTheMouse TEST
  33.   //Serial.begin( 115200 ); while ( 1 ) rnd_test(); // random TEST
  34.   Mouse.begin();
  35. }
  36.  
  37. void loop()
  38. {
  39.   uint32_t buttonPulse =  pulseIn ( BUTTON, HIGH );
  40.  
  41.   if ( buttonPulse )
  42.   {
  43.     LEDsTillEnd = LEDsTillEnd < 5 ? ++LEDsTillEnd : 0;
  44.  
  45.     switch ( LEDsTillEnd )
  46.     {
  47.       case 0:
  48.         for ( int8_t n = 1; n < 6; n++ )
  49.           digitalWrite( LED[ n ], LOW );
  50.         break;
  51.  
  52.       case 1:
  53.         MOUSEtimeout   = MOUSE_MAX_TIMEOUT;
  54.         MOUSEtimestamp = millis();
  55.      
  56.       default:
  57.         digitalWrite( LED[ LEDsTillEnd ], HIGH );
  58.         LEDtimestamp = millis();
  59.         break;
  60.     }
  61.   }
  62.  
  63.   if ( LEDsTillEnd > 0 )
  64.   { // jeśli w ogóle jest co robić
  65.  
  66.     if ( millis() - LEDtimestamp > LED_TIMEOUT )
  67.     { // minęła kolejna godzina
  68.       digitalWrite( LED[ LEDsTillEnd-- ], LOW );
  69.       LEDtimestamp = millis();
  70.     }
  71.  
  72.     if ( millis() - MOUSEtimestamp > MOUSEtimeout )
  73.     { // czas ruszyć myszą
  74.       moveTheMouse();
  75.       MOUSEtimeout    = random ( MOUSE_MIN_TIMEOUT, MOUSE_MAX_TIMEOUT );
  76.       MOUSEtimestamp  = millis();
  77.     }
  78.   }
  79. }
  80.  
  81. void moveTheMouse()
  82. {
  83.   digitalWrite( LED[ 0 ], HIGH );
  84.  
  85.   int8_t xMove = 0;
  86.   int8_t yMove = 0;
  87.   int8_t steps = random ( 25, 51 );
  88.  
  89.   for ( int8_t n = 0; n < steps; n++ )
  90.   {
  91.     xMove = random( -2, 3 );
  92.     yMove = random( -2, 3 );
  93.     Mouse.move( xMove, yMove, 0 );
  94.     delay( 20 );
  95.   }
  96.   digitalWrite( LED[ 0 ], LOW );
  97. }
  98.  
  99. // ----- eksperymenty ----- 8< ----- CUT HERE ----- 8< -------------
  100.  
Advertisement
Add Comment
Please, Sign In to add comment