Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Stepper_Motor_X27168
Revision 1:b15bda5fafa8, committed 2019-04-28
- Comitter:
- aalbul3
- Date:
- Sun Apr 28 23:15:33 2019 +0000
- Parent:
- 0:71dc3ae7e2eb
- Child:
- 2:12b24ae1dc9f
- Commit message:
- Yoyo
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Dht11.cpp Sun Apr 28 23:15:33 2019 +0000
@@ -0,0 +1,89 @@
+#include "Dht11.h"
+
+Dht11::Dht11(PinName const &p) : _pin(p) {
+ // Set creation time so we can make
+ // sure we pause at least 1 second for
+ // startup.
+ _timer.start();
+
+ _temperature = 0;
+ _humidity = 0;
+}
+
+int Dht11::read()
+{
+ // BUFFER TO RECEIVE
+ uint8_t bits[5];
+ uint8_t cnt = 7;
+ uint8_t idx = 0;
+
+ // EMPTY BUFFER
+ for (int i=0; i< 5; i++) bits[i] = 0;
+
+ // Verify sensor settled after boot
+ while(_timer.read_ms() < 1500) {}
+ _timer.stop();
+
+ // Notify it we are ready to read
+ _pin.output();
+ _pin = 0;
+ wait_ms(18);
+ _pin = 1;
+ wait_us(40);
+ _pin.input();
+
+ // ACKNOWLEDGE or TIMEOUT
+ unsigned int loopCnt = 10000;
+ while(_pin == 0)
+ if (loopCnt-- == 0) return DHTLIB_ERROR_TIMEOUT;
+
+ loopCnt = 10000;
+ while(_pin == 1)
+ if (loopCnt-- == 0) return DHTLIB_ERROR_TIMEOUT;
+
+ // READ OUTPUT - 40 BITS => 5 BYTES or TIMEOUT
+ for (int i=0; i<40; i++)
+ {
+ loopCnt = 10000;
+ while(_pin == 0)
+ if (loopCnt-- == 0) return DHTLIB_ERROR_TIMEOUT;
+
+ //unsigned long t = micros();
+ Timer t;
+ t. start();
+
+ loopCnt = 10000;
+ while(_pin == 1)
+ if (loopCnt-- == 0) return DHTLIB_ERROR_TIMEOUT;
+
+ if (t.read_us() > 40) bits[idx] |= (1 << cnt);
+ if (cnt == 0) // next byte?
+ {
+ cnt = 7; // restart at MSB
+ idx++; // next byte!
+ }
+ else cnt--;
+ }
+
+ // WRITE TO RIGHT VARS
+ // as bits[1] and bits[3] are allways zero they are omitted in formulas.
+ _humidity = bits[0];
+ _temperature = bits[2];
+
+ uint8_t sum = bits[0] + bits[2];
+
+ if (bits[4] != sum) return DHTLIB_ERROR_CHECKSUM;
+ return DHTLIB_OK;
+}
+
+float Dht11::getFahrenheit() {
+ return((_temperature * 1.8) + 32);
+}
+
+int Dht11::getCelsius() {
+ return(_temperature);
+}
+
+int Dht11::getHumidity() {
+ return(_humidity);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Dht11.h Sun Apr 28 23:15:33 2019 +0000
@@ -0,0 +1,74 @@
+#ifndef DHT11_H
+#define DHT11_H
+
+#include "mbed.h"
+
+#define DHTLIB_OK 0
+#define DHTLIB_ERROR_CHECKSUM -1
+#define DHTLIB_ERROR_TIMEOUT -2
+
+/** Class for the DHT11 sensor.
+ *
+ * Example:
+ * @code
+ * #include "mbed.h"
+ * #include "Dht11.h"
+ *
+ * Serial pc(USBTX, USBRX);
+ * Dht11 sensor(PTD7);
+ *
+ * int main() {
+ * sensor.read()
+ * pc.printf("T: %f, H: %d\r\n", sensor.getFahrenheit(), sensor.getHumidity());
+ * }
+ * @endcode
+ */
+class Dht11
+{
+public:
+ /** Construct the sensor object.
+ *
+ * @param pin PinName for the sensor pin.
+ */
+ Dht11(PinName const &p);
+
+ /** Update the humidity and temp from the sensor.
+ *
+ * @returns
+ * 0 on success, otherwise error.
+ */
+ int read();
+
+ /** Get the temp(f) from the saved object.
+ *
+ * @returns
+ * Fahrenheit float
+ */
+ float getFahrenheit();
+
+ /** Get the temp(c) from the saved object.
+ *
+ * @returns
+ * Celsius int
+ */
+ int getCelsius();
+
+ /** Get the humidity from the saved object.
+ *
+ * @returns
+ * Humidity percent int
+ */
+ int getHumidity();
+
+private:
+ /// percentage of humidity
+ int _humidity;
+ /// celsius
+ int _temperature;
+ /// pin to read the sensor info on
+ DigitalInOut _pin;
+ /// times startup (must settle for at least a second)
+ Timer _timer;
+};
+
+#endif
--- a/main.cpp Tue Oct 20 00:41:08 2015 +0000
+++ b/main.cpp Sun Apr 28 23:15:33 2019 +0000
@@ -1,19 +1,90 @@
#include "mbed.h"
#include "StepperMotor_X27168.h"
-
-StepperMotor_X27168 smotor(p25, p26, p23, p22);
+#include "Dht11.h"
+/*
+StepperMotor_X27168 smotor(p26, p25, p34, p36);
+StepperMotor_X27168 smotor2(p5,p6,p14,p25);
+DigitalOut motor1(p30);
+DigitalOut motor2(p8);
int main() {
-
- smotor.step_position(180);
- wait(0.5);
-
- smotor.step_position(100);
- wait(0.5);
+
+ motor1=0;
+ motor2=1;
+ // smotor.set_speed(1200);
+ smotor.set_max_position(180);
+ int i=0;
+ while (1){
+ while (i<180) {
+ smotor2.step(0);
+ wait(.1);
+ i++;
+ }
+ while (i>0) {
+ smotor2.step(1);
+ wait(.1);
+ i--;
+ }
- smotor.angle_position(270);
- wait(0.5);
+ }
+}
+*/
+
+
+
+/*
+ Serial pc(USBTX, USBRX);
+ Dht11 sensor(p21);
+
+
+ int main() {
+ while (1) {
+ sensor.read();
+ pc.printf("T: %f, H: %d\r\n", sensor.getFahrenheit(), sensor.getHumidity());
+ wait(1);
+ }
+
+ }
+
+ */
+
+
+
+ Serial device(p9,p10); //9-10 11u; 28-27 1768
+ volatile char c = '\0'; // Initialized to the NULL character
+ DigitalOut led(LED1);
+ DigitalOut mbedp(p22);
+void onCharReceived()
+{
+ c = device.getc();
+}
+
+int main() {
- smotor.step_position(0);
- wait(0.5);
+ mbedp = 1;
+ device.attach(&onCharReceived);
+
+ while (true)
+ {
+ if (c == '1')
+ {
+ c = '\0'; // To avoid execution of this block until a '1' is received again.
+ led = 1;
+ mbedp = 0;
+ wait(4);
+ led = 0;
+ mbedp = 1;
+ }
+
+ if (c == '0')
+ {
+ c = '\0'; // To avoid execution of this block until a '0' is received again.
+ led = 0;
+ }
}
+
+
+
+}
+
+
\ No newline at end of file