From 28608ac04033336d5ad33ceaa2a4137525d08dd3 Mon Sep 17 00:00:00 2001
From: Sonkwa Nguegoua Dimitri <dimitri.sonkwa-nguegoua@stud.hs-bochum.de>
Date: Tue, 1 Feb 2022 23:00:30 +0000
Subject: [PATCH] Hier ist das dokumentierte Code

---
 smart_canne.ino | 203 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 203 insertions(+)
 create mode 100644 smart_canne.ino

diff --git a/smart_canne.ino b/smart_canne.ino
new file mode 100644
index 0000000..6232d7f
--- /dev/null
+++ b/smart_canne.ino
@@ -0,0 +1,203 @@
+#define CUSTOM_SETTINGS
+#define INCLUDE_TERMINAL_SHIELD
+#define INCLUDE_PHONE_SHIELD
+#define INCLUDE_ACCELEROMETER_SENSOR_SHIELD
+#define INCLUDE_TWITTER_SHIELD
+#define INCLUDE_GPS_SHIELD
+
+/* Include 1Sheeld library. */
+#include <OneSheeld.h>
+
+#define trigPin1 9                                   //pin number 9 in arduino Uno ATMEGA328p
+#define echoPin1 12                              // we'll use this pin to read the signal from the first sensor
+#define LED_first_ping 6                            // I/O digital or analogique ( we will use pin 22 to command an LED (on/off))
+#define buzzer_IR 5
+//----------------------------------------------------------------------------------------------------------------------
+
+//define the pins that we will use for the second ultrasonic sensor
+//----------------------------------------------------------------------------------------------------------------------
+#define trigPin2 10
+#define echoPin2 11
+#define buzzer_u 4
+
+// IR_sensor pins
+#define IR_sensor 13
+#define vib 2
+#define waterPin A3
+#define button 8
+
+boolean verify1 = false;
+boolean verify2 = false;
+int distance = 0;
+int del;
+//----------------------------------------------------------------------------------------------------------------------
+
+void setup() {
+  OneSheeld.begin();
+  //setup pins first sensor
+  pinMode(trigPin1, OUTPUT);                        // from where we will transmit the ultrasonic wave
+  pinMode(echoPin1, INPUT);                         //from where we will read the reflected wave
+
+  //setup pins second sensor
+  pinMode(trigPin2, OUTPUT);
+  pinMode(echoPin2, INPUT);
+
+  // Setup pins on PORTD
+  // IR_sensor as input and the other one as output
+  // then,pins 0, 1, 3 as input and 2, 4, 5, 6 as output
+
+  DDRD = B11110100;
+
+}
+
+void loop() {
+  //Serial.print("welcom in the Loop :)\n");
+  wassersensor();
+  notruf();
+  giroscope();
+
+  int ultra1 = calculateDistance(echoPin1, trigPin1, buzzer_u);
+  int ultra2 = calculateDistance(echoPin2, trigPin2, buzzer_IR);
+  int ir_reagiert = infrarot_sensor();
+
+  //  Serial.print("valeur du ultraschall1:");
+  //  Serial.println( ultra1);
+  //  Serial.print("valeur du ultraschall2:");
+  //  Serial.println(ultra2);
+
+  if (ultra1 < 100 && ultra1 > 0) {
+    PORTD = PORTD | (1 << 4); // 0x00010000
+    verify1 = true;
+    delay(ultra1 * 10);
+  }
+  if (ultra2 < 100 && ultra2 > 0) {
+
+    PORTD = PORTD | (1 << 5); //0x00100000
+    verify2 = true;
+    delay(ultra2 * 10);
+  }
+  // prüfen ob beide Ultraschallsensoren erkennen
+  if (verify1 & verify2) {
+    if (ultra1 > ultra2) {
+      del = ultra1;
+    }
+    else {
+      del = ultra2;
+    }
+    PORTD = PORTD | (1 << 4);
+    PORTD = PORTD | (1 << 5);
+    delay(del);
+
+  }
+
+  if (ir_reagiert) {
+
+    PORTD = PORTD | (1 << 2);
+    delay(1000);
+    PORTD = PORTD & ~(1 << 2);
+    delay(1000);
+  }
+  //  if( (ultra1 & ultra2) & ir_reagiert){
+  //    PORTD = PORTD | (1 << 4); // 0x00010000
+  //    PORTD = PORTD | (1 << 5);
+  //    PORTD = PORTD | (1 << 2);
+  //    delay(distance *10);
+  //    PORTD = PORTD & ~(1 << 4);
+  //    PORTD = PORTD & ~(1 << 5);
+  //    PORTD = PORTD & ~(1 << 2);
+  //    delay(distance * 10);
+  //  }
+  //
+  else {
+    PORTD = PORTD & ~(1 << 4);
+    PORTD = PORTD & ~(1 << 5);
+    PORTD = PORTD & ~(1 << 2);
+  }
+
+  verify1 = false;
+  verify2 = false;
+  //distance = 0;
+}
+
+int calculateDistance(int echoPinSensor, int trigPinSensor, int buzzer) {
+
+  long duration;
+  digitalWrite(trigPinSensor, LOW);// put trigpin LOW
+  delayMicroseconds(2);// wait 2 microseconds
+  digitalWrite(trigPinSensor, HIGH);// switch trigpin HIGH
+  delayMicroseconds(10); // wait 10 microseconds
+  digitalWrite(trigPinSensor, LOW);// turn it LOW again
+  //----------------------------------------------------------------------------------------------------------------------
+
+  //read the distance
+  //----------------------------------------------------------------------------------------------------------------------
+  duration = pulseIn(echoPinSensor, HIGH);//pulseIn funtion will return the time on how much the configured pin remain the level HIGH or LOW; in this case it will return how much time echoPinSensor stay HIGH
+  distance = (duration / 2) / 29.1; // first we have to divide the duration by two
+  return distance;
+}
+
+int infrarot_sensor() {
+  int zustand = 0;
+  int status_sensor = digitalRead(IR_sensor);
+  if (status_sensor == HIGH) {
+    zustand = 0;
+  }
+  else {
+    zustand = 1;
+  }
+  return zustand;
+}
+
+void wassersensor() {
+  // Wassersensor
+  int value = analogRead(waterPin);
+  if (value > 350) {
+    PORTD = PORTD | (1 << 2);
+    delay(1000);
+    PORTD = PORTD & ~(1 << 2);
+    delay(1000);
+  }
+}
+
+void notruf() {
+  int status_button = digitalRead(button);
+  if (status_button == LOW) {
+    Phone.call("004917675867969");
+  }
+  else {
+    PORTD = PORTD & ~(1 << 4);
+    PORTD = PORTD & ~(1 << 5);
+    PORTD = PORTD & ~(1 << 2);
+
+  }
+}
+int i = 0;
+void giroscope() {
+  /* Always get the values of the accelerometer in the 3 dimensions (X, Y and Z). */
+  float x, y, z;
+
+  int magnitudeThreshold = 25;
+  x = AccelerometerSensor.getX();
+  y = AccelerometerSensor.getY();
+  z = AccelerometerSensor.getZ();
+
+  /* Check the motion of the smartphone, if it exceeded a limit, turn the LED on. */
+  /* We do that by calcuating the magnitude of the 3D vectors. */
+  if (sqrt((x * x) + (y * y) + (z * z)) > magnitudeThreshold)
+  {
+    Phone.call("004917675867969");
+    float lat = GPS.getLatitude();
+    float lon = GPS.getLongitude();
+    i= i +1;
+    String sendlat= "Latitude: " + String(lat);
+    String sendlon= "Longitude: " + String(lon);
+    String msg1 = "Hello fam I need help my GPS Coordinates are:\n";
+    String counter = String(i);
+    String msg =msg1+sendlat+"\n"+sendlon+"\n"+counter;
+    
+    Twitter.tweet(msg);
+    
+    //i= i +1;
+    OneSheeld.delay(300);
+  }
+}
-- 
GitLab