Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Korpo Myszka do pracy zdalnej
- *
- * Pro Micro USB Beetle (ATMEGA32U4)
- * „Arduino Leonardo”
- *
- * copyright by wariat 2026
- * WTFPL-2.0 - https://www.wtfpl.net/
- */
- #include <Mouse.h>
- // stałe
- const int8_t BUTTON = 11;
- const int8_t LED[] = { LED_BUILTIN, 10, 9, A0, A1, A2 };
- const uint32_t LED_TIMEOUT = 3600000; // 3600000ms = 1h czas na „jedną diodę”
- const uint32_t MOUSE_MIN_TIMEOUT = 240000; // 240000ms = 4min
- 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
- // zmienne
- int8_t LEDsTillEnd = 0; // liczba zapalonych LED / godzin do wyłączenia 0 - 5
- uint32_t LEDtimestamp; // millis
- uint32_t MOUSEtimestamp; // millis
- uint32_t MOUSEtimeout; // czas do następnego eventu
- void setup()
- {
- pinMode ( BUTTON, INPUT );
- for ( int8_t n = 0; n < 6; n++ )
- pinMode ( LED[ n ], OUTPUT );
- //while ( 1 ) { delay( 5000 ); moveTheMouse(); } // MoveTheMouse TEST
- //Serial.begin( 115200 ); while ( 1 ) rnd_test(); // random TEST
- Mouse.begin();
- }
- void loop()
- {
- uint32_t buttonPulse = pulseIn ( BUTTON, HIGH );
- if ( buttonPulse )
- {
- LEDsTillEnd = LEDsTillEnd < 5 ? ++LEDsTillEnd : 0;
- switch ( LEDsTillEnd )
- {
- case 0:
- for ( int8_t n = 1; n < 6; n++ )
- digitalWrite( LED[ n ], LOW );
- break;
- case 1:
- MOUSEtimeout = MOUSE_MAX_TIMEOUT;
- MOUSEtimestamp = millis();
- default:
- digitalWrite( LED[ LEDsTillEnd ], HIGH );
- LEDtimestamp = millis();
- break;
- }
- }
- if ( LEDsTillEnd > 0 )
- { // jeśli w ogóle jest co robić
- if ( millis() - LEDtimestamp > LED_TIMEOUT )
- { // minęła kolejna godzina
- digitalWrite( LED[ LEDsTillEnd-- ], LOW );
- LEDtimestamp = millis();
- }
- if ( millis() - MOUSEtimestamp > MOUSEtimeout )
- { // czas ruszyć myszą
- moveTheMouse();
- MOUSEtimeout = random ( MOUSE_MIN_TIMEOUT, MOUSE_MAX_TIMEOUT );
- MOUSEtimestamp = millis();
- }
- }
- }
- void moveTheMouse()
- {
- digitalWrite( LED[ 0 ], HIGH );
- int8_t xMove = 0;
- int8_t yMove = 0;
- int8_t steps = random ( 25, 51 );
- for ( int8_t n = 0; n < steps; n++ )
- {
- xMove = random( -2, 3 );
- yMove = random( -2, 3 );
- Mouse.move( xMove, yMove, 0 );
- delay( 20 );
- }
- digitalWrite( LED[ 0 ], LOW );
- }
- // ----- eksperymenty ----- 8< ----- CUT HERE ----- 8< -------------
Advertisement
Add Comment
Please, Sign In to add comment