leider bin ich nicht der Coding Pro.
Der SR04 erkennt wunderbar die Höhe. Maximale Höhe ist 18cm.
Im Bereich 16-18cm soll alleine die rote LED leuchten(sofern es geht bei 18cm sogar blinken?)
Die gelbe LED im Bereich 9-15cm (alleine)
und bei 0-8cm nur die grüne LED.
Jedoch funktioniert der Sketch leider nicht so wie ich will....
Woran liegts?
#include "SR04.h"
#define TRIG_PIN 11
#define ECHO_PIN 10
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;
int pin1 = 2;//Highest level (grueneLED)
int pin2 = 3;//(gelbeLED)
int pin3 = 4;//Lowest Level (roteLED)
void setup() {
Serial.begin(9600);
delay(1000);
pinMode (pin1, OUTPUT);
pinMode (pin2, OUTPUT);
pinMode (pin3, OUTPUT);
digitalWrite (pin1, LOW);
digitalWrite (pin2, LOW);
digitalWrite (pin3, LOW);
}
void loop() {
a=sr04.Distance();
Serial.print(a);
Serial.println("cm");
delay(1000);
if (a == 16,17,18)
digitalWrite (pin3, HIGH);
else
digitalWrite (pin3, LOW);
if (a == 9,10,11,12,13,14,15)
digitalWrite (pin2, HIGH);
else
digitalWrite (pin2, LOW);
if (a <= 8)
digitalWrite (pin1, HIGH);
else
digitalWrite (pin1, LOW);
delay(1000);
}
habs nun auf die Kette gebracht. Vielleicht kann man es noch vereinfachen, aber da fehlen mir momentan noch die nötigen Skills(wenn man alle 3 Jahre mal probiert was zu programmieren, löscht man es eben automatisch...)
Hier gerne mein Sketch:
#include "SR04.h"
#define TRIG_PIN 11
#define ECHO_PIN 10
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;
int pin_led_gruen = 2;//Highest level (grueneLED)
int pin_led_gelb = 3;//(gelbeLED)
int pin_led_rot = 4;//Lowest Level (roteLED)
void setup() {
Serial.begin(9600);
delay(1000);
pinMode (pin_led_gruen, OUTPUT);
pinMode (pin_led_gelb, OUTPUT);
pinMode (pin_led_rot, OUTPUT);
digitalWrite (pin_led_gruen,LOW);
digitalWrite (pin_led_gelb,LOW);
digitalWrite (pin_led_rot,LOW);
}
void loop() {
a=sr04.Distance();
Serial.print(a);
Serial.println("cm");
delay(1000);
if (a >= 17){
digitalWrite (pin_led_gruen,LOW);
digitalWrite (pin_led_gelb,LOW);
digitalWrite (pin_led_rot,HIGH);
delay(100);
digitalWrite (pin_led_rot,LOW);
}
else{
digitalWrite (pin_led_rot,LOW);
}
if (a == 13 || a == 14 || a == 15 || a == 16){
digitalWrite (pin_led_gruen,LOW);
digitalWrite (pin_led_gelb,LOW);
digitalWrite (pin_led_rot,HIGH);
}
else{
digitalWrite (pin_led_rot, LOW);
}
if (a == 9 || a == 10 || a == 11 || a == 12){
digitalWrite (pin_led_gruen,LOW);
digitalWrite (pin_led_gelb,HIGH);
digitalWrite (pin_led_rot,LOW);
}
else{
digitalWrite (pin_led_gelb,LOW);
}
if (a < 9){
digitalWrite (pin_led_gruen,HIGH);
digitalWrite (pin_led_gelb,LOW);
digitalWrite (pin_led_rot,LOW);
}
else {
digitalWrite (pin_led_gruen,LOW);
}
}
Was soll passieren, wenn der Sensor 15,3cm misst? Laut Deinen Vorgaben ... Nichts. WAS willst Du wirklich? (Klar kann ich mir vorstellen, was Du willst, aber Du musst Das selber auch 'sehen' können). Edit Mein gesehenes Problem ist HIER gar Keins!
Ob die LED blinkt, an ist, langsam hoch/runter dimmt, gleichzeitig noch ein Piezo ein Martinshorn imitiert ... Alles kein Ding - aber akut eben nicht bei z.B. 15,3 cm
MfG
PS: In Deinem Sketch sind die Werte nun Andere - das Grundproblem bleibt