From e87596ff17ec41c39269ea6d16aebd4f77172bbf Mon Sep 17 00:00:00 2001 From: Ernesto Corbellini Date: Tue, 27 Sep 2016 21:41:40 -0300 Subject: [PATCH] Added a sleep method.| --- examples/test_sleep/test_sleep.pde | 18 ++++++++++++++++++ keywords.txt | 4 ++++ library.properties | 2 +- src/dreamster.cpp | 15 ++++++++++++++- src/dreamster.h | 3 ++- 5 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 examples/test_sleep/test_sleep.pde diff --git a/examples/test_sleep/test_sleep.pde b/examples/test_sleep/test_sleep.pde new file mode 100644 index 0000000..05ca26f --- /dev/null +++ b/examples/test_sleep/test_sleep.pde @@ -0,0 +1,18 @@ +#include + +// Create our robot object. +Dreamster robot; + +void setup() { + // Setup our robot. + robot.setup(); +} + +void loop() { + // Move forward for 3 seconds. + robot.move(20, 20); + robot.sleep(3000); + // Now move backwards for 3 seconds. + robot.move(-20, -20); + robot.sleep(3000); +} diff --git a/keywords.txt b/keywords.txt index b30d6b7..a4fb661 100644 --- a/keywords.txt +++ b/keywords.txt @@ -3,3 +3,7 @@ scan KEYWORD2 read KEYWORD2 move KEYWORD2 show KEYWORD2 +update KEYWORD2 +setup KEYWORD2 +sleep KEYWORD2 + diff --git a/library.properties b/library.properties index 477ff61..0dea54c 100644 --- a/library.properties +++ b/library.properties @@ -4,6 +4,6 @@ author=Lucas Chiesa maintainer=Ernesto Corbellini sentence=A library that makes using your Dreamster a breeze. paragraph=This library supports all the basic functions of the Dreamster robot -category=Robotics +category=Device Control url=http://www.dreamsterbot.org/ architectures=avr diff --git a/src/dreamster.cpp b/src/dreamster.cpp index a29ff97..2d23eb7 100644 --- a/src/dreamster.cpp +++ b/src/dreamster.cpp @@ -11,7 +11,7 @@ void Dreamster::scan(int &a, int &b, int &c) c = scan_sensor(us_trigger_c_, us_echo_c_); } -void Dreamster::read(uint16_t &left, uint16_t &right) +void Dreamster::read(int &left, int &right) { left = analogRead(ir_l_); right = analogRead(ir_r_); @@ -85,6 +85,19 @@ void Dreamster::setup() Serial.begin(9600); } +/** + * Sleep for msec milliseconds. The robot keeps updating it's status. + * @param msec Time in milliseconds to sleep. + */ +void Dreamster::sleep(long msec) +{ + unsigned long start = millis(); + while ((millis() - start) < msec) + { + update(); + } +} + Dreamster::Motor::Motor(int pin, int dir) { servo.attach(pin); diff --git a/src/dreamster.h b/src/dreamster.h index cc07e13..bc3422b 100644 --- a/src/dreamster.h +++ b/src/dreamster.h @@ -31,11 +31,12 @@ class Dreamster Dreamster(); void scan(int &a, int &b, int &c); - void read(uint16_t &left, uint16_t &right); + void read(int &left, int &right); void move(int left, int right); void show(uint8_t red, uint8_t green, uint8_t blue); void update(); void setup(); + void sleep(long msec); private: