Browse Source

DHT reading data

James Bowman 6 years ago
parent
commit
5149d10ad6
1 changed files with 57 additions and 0 deletions
  1. 57 0
      dht.ino

+ 57 - 0
dht.ino

@@ -0,0 +1,57 @@
+#include <EEPROM.h>
+#include <SPI.h>
+#include <GD2.h>
+
+#define DHTPIN  A0
+
+#define RISE()   do {} while (digitalRead(DHTPIN) == 0)
+#define FALL()   do {} while (digitalRead(DHTPIN) == 1)
+
+void setup()
+{
+  Serial.begin(1000000);
+
+  pinMode(DHTPIN, OUTPUT);
+  digitalWrite(DHTPIN, HIGH);
+  delay(1000);
+}
+
+int getbit()
+{
+  RISE();
+  uint32_t t0 = micros();
+  FALL();
+  return (micros() - t0) > 48;
+}
+
+void loop()
+{
+  pinMode(DHTPIN, OUTPUT);
+  digitalWrite(DHTPIN, LOW);
+  delay(18);
+  digitalWrite(DHTPIN, HIGH);
+  delayMicroseconds(40);
+  pinMode(DHTPIN, INPUT_PULLUP);
+
+  FALL();
+  getbit();
+
+  int bits[40];
+  for (int i = 0; i < 40; i++)
+    bits[i] = getbit();
+  for (int i = 0; i < 40; i++) {
+    Serial.print(i);
+    Serial.print(' ');
+    Serial.println(bits[i]);
+  }
+  int bytes[5] = {0};
+  for (int i = 0; i < 40; i++)
+    bytes[i / 8] = (bytes[i / 8] << 1) | bits[i];
+  for (int i = 0; i < 5; i++) {
+    Serial.print(bytes[i]);
+    Serial.print(' ');
+  }
+  Serial.println();
+
+  delay(6000);
+}