Adding powerswitch-version with display

This commit is contained in:
Michael Reber 2020-06-04 15:28:19 +02:00
parent 1b9d0a655f
commit d793a14ae0
5 changed files with 76 additions and 0 deletions

View File

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 115 KiB

BIN
_wiring/wiring.fzz Normal file

Binary file not shown.

BIN
_wiring/wiring_basic.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

View File

@ -0,0 +1,76 @@
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;
bool newAction;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
void setup() {
Serial.begin (9600); //Allows serial output to serial monitor
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, HIGH); // Default relay should be OFF!
lcd.begin(16,2); //Say what format of LCD we are using.
lcd.clear();
lcd.setCursor(0,0); //Goto line 0 char 0
lcd.print("RC Solutions");
lcd.setCursor(0,1); //Goto second line
lcd.print("touchless v1");
delay(1500);
lcd.clear();
lcd.setCursor(0,0); //Goto line 0 char 0
lcd.print("Power Status:");
lcd.setCursor(0,1); //Goto second line
lcd.print("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) {
if (newAction) {
valRelay = digitalRead(relayPin); // read the status of input pin
if (valRelay) {
relayAction = LOW;
lcd.clear();
lcd.print("Power Status:");
lcd.setCursor(0,1); //Goto second line
lcd.print("ON");
} else {
relayAction = HIGH;
lcd.clear();
lcd.print("Power Status:");
lcd.setCursor(0,1); //Goto second line
lcd.print("OFF");
}
digitalWrite(relayPin, relayAction); // Switch Ralay ON or OFF
newAction = false;
}
//lcd.print(newAction);
delay(1000); // Miliseconds which it waits before does any action again
} else {
newAction = true;
//lcd.print(newAction);
}
}
long microsecondsToCentimeters(long microseconds) {
return microseconds / 29 / 2;
}