Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <pthread.h>
- #include "DHT.h";
- #include "NewPing.h"
- #define DHTPIN 4
- #define DHTTYPE DHT22
- #define TRIGGER_PIN 5
- #define TRIGGER_PIN1 17
- #define TRIGGER_PIN2 14
- #define ECHO_PIN 16
- #define ECHO_PIN1 18
- #define ECHO_PIN2 13
- #define MAX_DISTANCE 150
- #define ITERATIONS 5
- NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
- NewPing sonar1(TRIGGER_PIN1, ECHO_PIN1, MAX_DISTANCE);
- NewPing sonar2(TRIGGER_PIN2, ECHO_PIN2, MAX_DISTANCE);
- DHT dht(DHTPIN, DHTTYPE);
- float hum, temp,
- duration, duration1, duration2,
- distance, distance1, distance2,
- soundsp, soundcm;
- void serialPrint(void);
- void *measureThread(void *)
- {
- while (true)
- {
- hum = dht.readHumidity();
- temp = dht.readTemperature();
- soundsp = 331.4 + (0.606 * temp) + (0.0124 * hum);
- soundcm = soundsp / 10e3;
- delay(1000); // Temperature and humidity update delay
- }
- }
- void *sonarsThread(void *)
- {
- while (true)
- {
- delay(1e3); // Sonars check delay
- float distance = (sonar.ping_median(ITERATIONS) / 2) * soundcm;
- float distance1 = (sonar1.ping_median(ITERATIONS) / 2) * soundcm;
- float distance2 = (sonar2.ping_median(ITERATIONS) / 2) * soundcm;
- calcDistanceAndVibrate(distance, 27);
- calcDistanceAndVibrate(distance1, 32);
- calcDistanceAndVibrate(distance2, 33);
- serialPrint();
- }
- }
- void setup()
- {
- pthread_t sonars, measure;
- Serial.begin(115200);
- dht.begin();
- pinMode(33, OUTPUT);
- pinMode(32, OUTPUT);
- pinMode(27, OUTPUT);
- pthread_create(&measure, NULL, measureThread, nullptr);
- pthread_create(&sonars, NULL, sonarsThread, nullptr);
- }
- void calcDistanceAndVibrate(float dis, const int pin)
- {
- if (dis > MAX_DISTANCE || dis == 0)
- {
- digitalWrite(pin, LOW); //це перетворення відстані в вібрації тіпа як на бейсболці якій я робив тоді
- }
- else
- {
- digitalWrite(pin, HIGH);
- delay(100);
- digitalWrite(pin, LOW);
- delay(dis * dis / 15);
- }
- }
- void loop() {}
- void serialPrint(void)
- {
- Serial.print("Sound: ");
- Serial.print(soundsp);
- Serial.print(" m/s, ");
- Serial.print("Humid: ");
- Serial.print(hum);
- Serial.print(" %, Temp: ");
- Serial.print(temp);
- Serial.print(" C, ");
- Serial.print("Distance: ");
- Serial.print(distance);
- Serial.print("см ");
- Serial.print(distance1);
- Serial.print("см ");
- Serial.print(distance2);
- Serial.print("см ");
- Serial.println(" ");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement