Hello, I can't recieve any output when I run this code.
The code is supposed to turn on a circut when the sensor is registrating less than 15 cm, and reset the circuit for 10 seconds when a button is pressed.
int vcc = 2; //attach pin 2 to vcc
int trig = 3; // attach pin 3 to Trig
int echo = 4; //attach pin 4 to Echo, Kan slettes?
int gnd = 5; //Kan slettes?
int sw_pin = 6; //Der du kobler til bryteren som lammer kretsen
int krets =7; //Der du kobler til kretsen, HIGH når krets er på, ellers LOW.
//initialiserer variabler først:
long duration, cm, event_dist, event_sw;
void setup()
{
pinMode (vcc,OUTPUT); //Gjer strum?
pinMode(trig, OUTPUT);
pinMode(echo,INPUT);
pinMode(sw_pin, INPUT);
pinMode(krets, OUTPUT);
event_sw = millis(); //Vent 10 sec ved oppstart før me kan bruke koden:)
event_dist = millis();
}
void loop() {
if (abs(event_sw - millis()) > 10000) {
//Pinger bare dersom det er 10 sec sidan brytar vart skrud på
digitalWrite(trig, LOW); //forbereder for signalsending
delayMicroseconds(2);
digitalWrite(trig, HIGH); //starter HIGH
delayMicroseconds(5); //Venter minimum tid for at signal skal sendes
digitalWrite(trig, LOW); //stopper HIGH..
duration = pulseIn(echo, HIGH); //Leser av når "LOW" signalet når fram
cm = microsecondsToCentimeters(duration); //Konverterer tid til avstand
if (abs(event_dist - millis()) > 10000) { //Venter 6+4 sec før den tillater ein ny event
if (cm <= 15) event_dist = millis(); //Dersom avstanden er liten marker event_dist
}
if (abs(event_dist - millis()) < 6000) digitalWrite(krets, HIGH);
else digitalWrite(krets, LOW); //
}
if (digitalRead(sw_pin) == HIGH) {
digitalWrite(krets, LOW); //Skrur av kretsen
event_sw = millis(); //Lagrer tid når bryter vart skrudd på
}
}
long microsecondsToCentimeters(long microseconds)
{
return microseconds / 29 / 2;
}
//slå på krets når mindre enn 15 cm, duration 6 sec
//restart funksjon... slår av signal 10 sec...