Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <EEPROM.h>
- #include <AnalogMultiButton.h>
- #include <Mouse.h>
- #include <SevSeg.h>
- SevSeg sevseg; //Instantiate a seven segment object
- const int BUTTONS_PIN = A1;
- const int BUTTONS_TOTAL = 4;
- const int BUTTONS_VALUES[BUTTONS_TOTAL] = {0, 318, 486, 589};
- const int BUTTON_MODE = 0;
- const int BUTTON_MINUS = 1;
- const int BUTTON_PLUS = 2;
- const int BUTTON_START = 3;
- unsigned long previousMicros = 0;
- unsigned long previousMicros2 = 0;
- const int ledPin = 13;
- int analogPin = 0;
- int val = 0;
- unsigned long lag = 0;
- unsigned long lag2;
- unsigned long wait;
- int state = 0;
- unsigned long var2 = 0;
- int refresh = 1;
- int s;
- int samples;
- int setSamples;
- int t;
- int lcd = 1;
- int location = 0;
- int8_t distance;
- int mode = 1;
- int i = 101;
- int PC = 0;
- int addressDistance = 0;
- int addressInterval = 1;
- int addressSamples = 2;
- float skaicius;
- float skaicius2;
- AnalogMultiButton buttons(BUTTONS_PIN, BUTTONS_TOTAL, BUTTONS_VALUES);
- void setup() {
- Mouse.begin();
- byte numDigits = 4;
- byte digitPins[] = {1, 4, 5, 7};
- byte segmentPins[] = {2, 6, 9, 11, 12, 3, 8, 10};
- bool resistorsOnSegments = true; // 'false' means resistors are on digit pins
- byte hardwareConfig = COMMON_CATHODE; // See README.md for options
- sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
- pinMode(ledPin, OUTPUT);
- setSamples = EEPROM.read(addressSamples);
- distance = EEPROM.read(addressDistance);
- t = EEPROM.read(addressInterval);
- Serial.begin(9600);
- }
- void loop() {
- unsigned long currentMicros = micros();
- val = analogRead(analogPin);
- buttons.update();
- if (buttons.isPressedAfter(BUTTON_MODE, 3000)) {
- setSamples = 50;
- EEPROM.write(addressSamples, setSamples);
- distance = 50;
- EEPROM.write(addressDistance, distance);
- t = 1;
- EEPROM.write(addressInterval, t);
- }
- switch (mode)
- {
- case 1:
- {
- if (lcd == 1) {
- sevseg.setNumber(1);
- samples = setSamples;
- }
- if (state == 1 && s <= samples) {
- wait = 250000 * t;
- sevseg.setNumber(s);
- state = 2;
- previousMicros = currentMicros;
- }
- if (currentMicros - previousMicros >= wait && state == 2) {
- Mouse.move(distance, 0, 0);
- digitalWrite(ledPin, HIGH);
- previousMicros = currentMicros;
- state = 3;
- }
- if (val <= 980 && state == 3) {
- lag = currentMicros - previousMicros;
- digitalWrite(ledPin, LOW);
- Mouse.move(-distance, 0, 0);
- previousMicros = currentMicros;
- s = s + 1;
- PC = 1;
- state = 4;
- }
- if (state == 4) {
- if (lag >= 1000000) {
- lag2 = lag / 1000;
- sevseg.setNumber(lag2);
- } else {
- lag2 = lag / 100;
- sevseg.setNumber(lag2, 1);
- }
- if (PC == 1) {
- skaicius2 = lag;
- skaicius = skaicius2 / 1000;
- Serial.println(skaicius);
- PC = 0;
- }
- if (currentMicros - previousMicros >= wait && PC == 0) {
- state = 1;
- }
- }
- if (buttons.onPress(BUTTON_START))
- {
- state = 1;
- s = 1;
- lcd = 10;
- }
- else if (buttons.onPress(BUTTON_MODE))
- {
- mode = 2; // Switch to mode 2
- lcd = mode;
- state = 5;
- }
- break;
- }
- case 2:
- {
- if (lcd == 2) {
- sevseg.setNumber(2);
- }
- if (refresh == 1) {
- previousMicros = currentMicros;
- refresh = 0;
- }
- if (lcd == 21 && currentMicros - previousMicros >= 200000) {
- sevseg.setNumber(val);
- refresh = 1;
- }
- if (val <= 980) {
- digitalWrite(ledPin, HIGH);
- } else {
- digitalWrite(ledPin, LOW);
- }
- if (buttons.onPress(BUTTON_START))
- {
- if (location == 0) {
- Mouse.move(distance, 0, 0);
- location = 1;
- } else {
- Mouse.move(-distance, 0, 0);
- location = 0;
- }
- lcd = 21;
- }
- else if (buttons.onPress(BUTTON_MODE))
- {
- mode = 3; // Switch to mode 3
- lcd = mode;
- if (location == 1) {
- Mouse.move(-distance, 0, 0);
- location = 0;
- }
- }
- break;
- }
- case 3:
- {
- if (lcd == 3) {
- sevseg.setNumber(3);
- }
- if (refresh == 1) {
- previousMicros = currentMicros;
- refresh = 0;
- }
- if (lcd == 31 && currentMicros - previousMicros >= 200000) {
- sevseg.setNumber(val);
- refresh = 1;
- }
- if (currentMicros - previousMicros2 >= 1000000 && lcd == 30) {
- lcd = 31;
- }
- if (val <= 980) {
- digitalWrite(ledPin, HIGH);
- } else {
- digitalWrite(ledPin, LOW);
- }
- if (buttons.onPress(BUTTON_PLUS))
- {
- if (location == 0) {
- Mouse.move(distance, 0, 0);
- location = 3;
- }
- else if (location == 3 && distance <= 120) {
- Mouse.move(5, 0, 0);
- distance = distance + 5;
- EEPROM.update(addressDistance, distance);
- }
- sevseg.setNumber(distance);
- lcd = 30;
- previousMicros2 = currentMicros;
- }
- else if (buttons.onPress(BUTTON_MINUS))
- {
- if (location == 0) {
- Mouse.move(distance, 0, 0);
- location = 3;
- }
- else if (location == 3 && distance >= -120) {
- Mouse.move(-5, 0, 0);
- distance = distance - 5;
- EEPROM.update(addressDistance, distance);
- }
- sevseg.setNumber(distance);
- lcd = 30;
- previousMicros2 = currentMicros;
- }
- else if (buttons.onPress(BUTTON_START))
- {
- if (location == 0) {
- Mouse.move(distance, 0, 0);
- location = 3;
- } else {
- Mouse.move(-distance, 0, 0);
- location = 0;
- }
- lcd = 31;
- }
- else if (buttons.onPress(BUTTON_MODE))
- {
- mode = 4; // Switch to mode 4
- lcd = mode;
- if (location == 3) {
- Mouse.move(-distance, 0, 0);
- location = 0;
- }
- }
- break;
- }
- case 4:
- {
- if (lcd == 4) {
- sevseg.setNumber(4);
- }
- if (buttons.onPress(BUTTON_PLUS))
- {
- if (lcd == 4) {
- sevseg.setNumber(t * 5, 1);
- lcd = 40;
- } else if (t <= 19) {
- t = t + 1;
- EEPROM.update(addressInterval, t);
- sevseg.setNumber(t * 5, 1);
- }
- }
- else if (buttons.onPress(BUTTON_MINUS))
- {
- if (lcd == 4) {
- sevseg.setNumber(t * 5, 1);
- lcd = 40;
- } else if (t >= 2) {
- t = t - 1;
- EEPROM.update(addressInterval, t);
- sevseg.setNumber(t * 5, 1);
- }
- }
- else if (buttons.onPress(BUTTON_MODE))
- {
- mode = 5; // Switch to mode 5
- lcd = mode;
- }
- break;
- }
- case 5:
- {
- if (lcd == 5) {
- sevseg.setNumber(5);
- }
- if (buttons.onPress(BUTTON_PLUS))
- {
- if (lcd == 5) {
- sevseg.setNumber(setSamples);
- lcd = 50;
- } else if (setSamples <= 240) {
- setSamples = setSamples + 10;
- EEPROM.update(addressSamples, setSamples);
- sevseg.setNumber(setSamples);
- }
- }
- else if (buttons.onPress(BUTTON_MINUS))
- {
- if (lcd == 5) {
- sevseg.setNumber(setSamples);
- lcd = 50;
- } else if (setSamples >= 10) {
- setSamples = setSamples - 10;
- EEPROM.update(addressSamples, setSamples);
- sevseg.setNumber(setSamples);
- }
- }
- else if (buttons.onPress(BUTTON_MODE))
- {
- mode = 1; // Switch to mode 1
- lcd = mode;
- }
- break;
- }
- }
- sevseg.refreshDisplay();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement