Initial commit

This commit is contained in:
Michael Reber 2020-06-02 19:47:34 +02:00
parent fd68469594
commit 1b9d0a655f
5 changed files with 177 additions and 1 deletions

View File

@ -1,2 +1,18 @@
# arduino-touchless-projects
# Arduino touchless projects
### Versions
- **touchless_basic**: Läuft so lange, wie man die Hand in Reichweite hält.
- **touchless_power_switch**: Ein und ausschalten von Geräten.
- **touchless_time_limited**: Läuft für eine angegebene Zeit und stoppt anschliessend.
#### Hardware
* Arduino: - https://www.conrad.ch/de/p/arduino-ag-mikrocontroller-uno-rev3-smd-191789.html **23.-**
* Relay: - https://www.play-zone.ch/de/elektronik-kit-zubehoer/module-karten/relais/1-kanal-relais-modul-karte-5v-30vdc-mit-kabel.html **11.-**
* Sensor: - https://www.pi-shop.ch/ultrasonic-range-sensor-hc-sr04 **7.-**
* Pumpe: - https://www.conrad.ch/de/p/modelcraft-kraftstoff-getriebepumpe-benzinfest-foerdermenge-0-6-l-207894.html **13.-**
* Pumpe2: - https://www.brack.ch/velleman-wasserpumpe-871806 **15.-**

BIN
diy_relay_module.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

View File

@ -0,0 +1,52 @@
const int US_sensorPin = 7;
const int relayPin = 10;
const int waveBackWait = 5000; //adjust this to set the min speed of wave gesture
const int range = 8; //Range of detection from the sensor in cm
void setup() {
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // Default relay should be OFF!
}
void loop() {
long duration, cm;
pinMode(US_sensorPin, OUTPUT);
digitalWrite(US_sensorPin, LOW);
delayMicroseconds(2);
digitalWrite(US_sensorPin, HIGH);
delayMicroseconds(5);
digitalWrite(US_sensorPin, LOW);
pinMode(US_sensorPin, INPUT);
duration = pulseIn(US_sensorPin, HIGH);
cm = microsecondsToCentimeters(duration);
if (cm < range && cm > 1) {
for (int i = waveBackWait; i > 0; i--) {
long new_duration, new_cm;
pinMode(US_sensorPin, OUTPUT);
digitalWrite(US_sensorPin, LOW);
delayMicroseconds(2);
digitalWrite(US_sensorPin, HIGH);
delayMicroseconds(5);
digitalWrite(US_sensorPin, LOW);
pinMode(US_sensorPin, INPUT);
new_duration = pulseIn(US_sensorPin, HIGH);
new_cm = microsecondsToCentimeters(new_duration);
if (new_cm < range && new_cm > 1) {
digitalWrite(relayPin, LOW); // Turn Ralay ON
delay(500); // Miliseconds which it waits before turn off again
digitalWrite(relayPin,HIGH); // Trun Ralay OFF
}
}
}
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}

View File

@ -0,0 +1,56 @@
const int US_sensorPin = 7;
const int relayPin = 10;
const int range = 8; //Range of detection from the sensor in cm
int valRelay = 0; // variable to store the read value
long relayAction;
void setup() {
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // Default relay should be OFF!
}
void loop() {
long duration, cm;
pinMode(US_sensorPin, OUTPUT);
digitalWrite(US_sensorPin, LOW);
delayMicroseconds(2);
digitalWrite(US_sensorPin, HIGH);
delayMicroseconds(5);
digitalWrite(US_sensorPin, LOW);
pinMode(US_sensorPin, INPUT);
duration = pulseIn(US_sensorPin, HIGH);
cm = microsecondsToCentimeters(duration);
if (cm < range && cm > 1) {
long new_duration, new_cm;
pinMode(US_sensorPin, OUTPUT);
digitalWrite(US_sensorPin, LOW);
delayMicroseconds(2);
digitalWrite(US_sensorPin, HIGH);
delayMicroseconds(5);
digitalWrite(US_sensorPin, LOW);
pinMode(US_sensorPin, INPUT);
new_duration = pulseIn(US_sensorPin, HIGH);
new_cm = microsecondsToCentimeters(new_duration);
valRelay = digitalRead(relayPin); // read the status of input pin
if (valRelay) {
relayAction = LOW;
} else {
relayAction = HIGH;
}
if (new_cm < range && new_cm > 1) {
digitalWrite(relayPin, relayAction); // Switch Ralay ON or OFF
delay(1000); // Miliseconds which it waits before does any action again
}
}
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}

View File

@ -0,0 +1,52 @@
const int US_sensorPin = 7;
const int relayPin = 10;
const int range = 8; //Range of detection from the sensor in cm
void setup() {
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // Default relay should be OFF!
}
void loop() {
long duration, cm;
pinMode(US_sensorPin, OUTPUT);
digitalWrite(US_sensorPin, LOW);
delayMicroseconds(2);
digitalWrite(US_sensorPin, HIGH);
delayMicroseconds(5);
digitalWrite(US_sensorPin, LOW);
pinMode(US_sensorPin, INPUT);
duration = pulseIn(US_sensorPin, HIGH);
cm = microsecondsToCentimeters(duration);
if (cm < range && cm > 1) {
long new_duration, new_cm;
pinMode(US_sensorPin, OUTPUT);
digitalWrite(US_sensorPin, LOW);
delayMicroseconds(2);
digitalWrite(US_sensorPin, HIGH);
delayMicroseconds(5);
digitalWrite(US_sensorPin, LOW);
pinMode(US_sensorPin, INPUT);
new_duration = pulseIn(US_sensorPin, HIGH);
new_cm = microsecondsToCentimeters(new_duration);
if (new_cm < range && new_cm > 1) {
digitalWrite(relayPin, LOW); // Turn Ralay ON
delay(500); // Miliseconds which it waits before turn off again
digitalWrite(relayPin,HIGH); // Trun Ralay OFF
}
if (new_cm < range && new_cm > 1) {
delay(3000); // Pauses the measure for 3 seconds.. so the liquid-flow stops after above time
}
}
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}