#define BUTTON_PIN 2 #define SONIC_ECHO_PIN 3 #define SONIC_TRIG_PIN 4 const uint8_t debounceDelay = 50; void setup() { /* Käivitame jadaühenduse */ Serial.begin(9600); /* Seadistame surunupu */ pinMode(BUTTON_PIN, INPUT); /* Seadistame ultraheli sisendi ja väljundi */ pinMode(SONIC_TRIG_PIN, OUTPUT); pinMode(SONIC_ECHO_PIN, INPUT); } void loop() { if (ButtonRead()) { float distance = GetDistInCm(); Serial.print("Roboti kaugus objektist on: "); Serial.println(distance); } } float GetDistInCm() { /* Saadame ultrahelilaine välja, kestvus 10 us */ digitalWrite(SONIC_TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(SONIC_TRIG_PIN, LOW); /* Loeme signaali peegeldumise aja */ uint16_t echoTime = pulseIn(SONIC_ECHO_PIN, HIGH); /* Asenda tagastus korrektse valemiga, mille leiad andmelehelt */ return 0.0f; } bool ButtonRead() { static bool lastButtonState = LOW; static uint32_t lastDebounceTime = 0; static bool buttonState = LOW; bool btnReadValue = digitalRead(BUTTON_PIN); if (btnReadValue != lastButtonState) { lastDebounceTime = millis(); } if ((millis() - lastDebounceTime) > debounceDelay) { if (btnReadValue != buttonState) { buttonState = btnReadValue; if (buttonState == HIGH) { return true; } } } lastButtonState = btnReadValue; return false; }