Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
boebot-public
/
eriala-2024
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
61d1d3fb
authored
5 months ago
by
Risto Heinsar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added lab 4 public demo codes
parents
master
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
274 additions
and
0 deletions
lab4_demo_qti_calibration/lab4_demo_qti_calibration.ino
lab4_demo_servo_calibrate/lab4_demo_servo_calibrate.ino
lab4_demo_servo_move/lab4_demo_servo_move.ino
lab4_demo_ultrasonic/lab4_demo_ultrasonic.ino
lab4_demo_qti_calibration/lab4_demo_qti_calibration.ino
0 → 100644
View file @
61d1d3fb
#define BUTTON_PIN 2
#define LEFT_QTI_PIN A0
#define MIDDLE_QTI_PIN A1
#define RIGHT_QTI_PIN A2
#define NUM_OF_MEASUREMENTS 10
const
uint8_t
debounceDelay
=
50
;
// the debounce time; increase if the output flickers
void
setup
()
{
Serial
.
begin
(
9600
);
pinMode
(
BUTTON_PIN
,
INPUT
);
}
void
loop
()
{
Serial
.
println
(
"Leiame QTI sensorite tumeda ja heleda pinna keskmise väärtuse."
);
Serial
.
println
(
"Pane roboti kõik QTI sensorid tumedale pinnale ja vajuta nuppu."
);
WaitForBtnClick
();
uint16_t
darkSurface
=
MeasureQtiAverage
();
Serial
.
print
(
"Tumeda pinna keskmine väärtus on: "
);
Serial
.
println
(
darkSurface
);
Serial
.
println
(
"Pane roboti kõik QTI sensorid heledale pinnale ja vajuta nuppu."
);
WaitForBtnClick
();
uint16_t
lightSurface
=
MeasureQtiAverage
();
Serial
.
print
(
"Heleda pinna keskmine väärtus on: "
);
Serial
.
println
(
lightSurface
);
Serial
.
print
(
"Soovituslik ""qti_threshold"" väärtus on: "
);
Serial
.
println
((
lightSurface
+
darkSurface
)
/
2
);
Serial
.
println
(
"Uuesti mõõtmiseks vajuta nuppu."
);
WaitForBtnClick
();
Serial
.
println
(
"------------------------------------------------------------------------"
);
}
uint16_t
ReadQti
(
uint8_t
qtiPin
)
{
digitalWrite
(
qtiPin
,
HIGH
);
// Lülitame infrapuna sisse
delayMicroseconds
(
1000
);
// Ootame 1 ms
digitalWrite
(
qtiPin
,
LOW
);
// Lülitame infrapuna välja
return
analogRead
(
qtiPin
);
// Loeme kondensaatorilt tulemuse
}
void
WaitForBtnClick
()
{
while
(
ButtonRead
()
!=
true
);
}
uint16_t
MeasureQtiAverage
(
void
)
{
uint16_t
leftQtiSum
=
0
;
uint16_t
middleQtiSum
=
0
;
uint16_t
rightQtiSum
=
0
;
/* Summeerime üle N mõõtmise */
for
(
uint8_t
i
=
0
;
i
<
NUM_OF_MEASUREMENTS
;
i
++
)
{
leftQtiSum
+=
ReadQti
(
LEFT_QTI_PIN
);
middleQtiSum
+=
ReadQti
(
MIDDLE_QTI_PIN
);
rightQtiSum
+=
ReadQti
(
RIGHT_QTI_PIN
);
delay
(
100
);
}
/* Leiame kõigi sensorite keskmised tulemused*/
uint16_t
leftQtiAverage
=
leftQtiSum
/
NUM_OF_MEASUREMENTS
;
uint16_t
middleQtiAverage
=
middleQtiSum
/
NUM_OF_MEASUREMENTS
;
uint16_t
rightQtiAverage
=
rightQtiSum
/
NUM_OF_MEASUREMENTS
;
Serial
.
println
(
"Sensorite kesmine väärtus:"
);
Serial
.
println
(
"Vasak | Keskmine | Parem"
);
Serial
.
print
(
leftQtiAverage
);
Serial
.
print
(
"
\t
"
);
Serial
.
print
(
middleQtiAverage
);
Serial
.
print
(
"
\t
"
);
Serial
.
println
(
rightQtiAverage
);
/* Leiame pinna üldise keskmise */
uint16_t
surface
=
(
leftQtiSum
+
middleQtiSum
+
rightQtiSum
)
/
(
NUM_OF_MEASUREMENTS
*
3
);
return
surface
;
}
/* Compacted version of https://docs.arduino.cc/built-in-examples/digital/Debounce/ */
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
;
}
This diff is collapsed.
Click to expand it.
lab4_demo_servo_calibrate/lab4_demo_servo_calibrate.ino
0 → 100644
View file @
61d1d3fb
#include <Servo.h>
#define RIGHT_LED_PIN 7
#define LEFT_LED_PIN 8
/* Servomootorite viigud */
#define RIGHT_SERVO_PIN 5
#define LEFT_SERVO_PIN 6
/* Servomootorite impulsside pikkused */
#define SERVO_MIN_PULSE 1300
#define SERVO_MAX_PULSE 1700
#define SERVO_STANDSTILL 1500
Servo
leftWheel
;
Servo
rightWheel
;
const
uint16_t
tickDelay
=
1000
;
void
setup
()
{
/* LEDid väljundiks */
pinMode
(
LEFT_LED_PIN
,
OUTPUT
);
pinMode
(
RIGHT_LED_PIN
,
OUTPUT
);
/* Konfigureerime servomootorid */
leftWheel
.
attach
(
LEFT_SERVO_PIN
,
SERVO_MIN_PULSE
,
SERVO_MAX_PULSE
);
rightWheel
.
attach
(
RIGHT_SERVO_PIN
,
SERVO_MIN_PULSE
,
SERVO_MAX_PULSE
);
/* Anname servodemootorite külge võtmiseks hetke aega */
delay
(
10
);
/* Seadistame servomootorid seisvale asendile */
leftWheel
.
writeMicroseconds
(
SERVO_STANDSTILL
);
rightWheel
.
writeMicroseconds
(
SERVO_STANDSTILL
);
}
void
loop
()
{
static
bool
ledState
=
false
;
digitalWrite
(
RIGHT_LED_PIN
,
ledState
);
digitalWrite
(
LEFT_LED_PIN
,
!
ledState
);
ledState
=
!
ledState
;
delay
(
tickDelay
);
}
This diff is collapsed.
Click to expand it.
lab4_demo_servo_move/lab4_demo_servo_move.ino
0 → 100644
View file @
61d1d3fb
#include <Servo.h>
#define RIGHT_SERVO_PIN 5
#define LEFT_SERVO_PIN 6
#define SERVO_MIN_PULSE 1300
#define SERVO_MAX_PULSE 1700
#define SERVO_STANDSTILL 1500
Servo
leftWheel
;
Servo
rightWheel
;
void
setup
()
{
/* Konfigureerime servomootorid */
leftWheel
.
attach
(
LEFT_SERVO_PIN
,
SERVO_MIN_PULSE
,
SERVO_MAX_PULSE
);
rightWheel
.
attach
(
RIGHT_SERVO_PIN
,
SERVO_MIN_PULSE
,
SERVO_MAX_PULSE
);
/* Anname servodemootorite külge võtmiseks hetke aega */
delay
(
10
);
/* Seadistame servomootorid seisvale asendile */
SetWheels
(
SERVO_STANDSTILL
,
SERVO_STANDSTILL
);
}
void
loop
()
{
/* Liigub edasi aeglaselt */
SetWheels
(
1550
,
1450
);
delay
(
1000
);
/* Seisab pool sekundit */
SetWheels
(
SERVO_STANDSTILL
,
SERVO_STANDSTILL
);
delay
(
500
);
/* Liigub tagasi aeglaselt */
SetWheels
(
1450
,
1550
);
delay
(
1000
);
/* Seisab pool sekundit */
SetWheels
(
SERVO_STANDSTILL
,
SERVO_STANDSTILL
);
delay
(
500
);
}
void
SetWheels
(
int
leftWheelImpulseLength
,
int
rightWheelImpulseLength
)
{
leftWheel
.
writeMicroseconds
(
leftWheelImpulseLength
);
rightWheel
.
writeMicroseconds
(
rightWheelImpulseLength
);
}
This diff is collapsed.
Click to expand it.
lab4_demo_ultrasonic/lab4_demo_ultrasonic.ino
0 → 100644
View file @
61d1d3fb
#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.0
f
;
}
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
;
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment