Ich versuche gerade mit zwei Lichtsensoren (TCRT5000) über den analogen Ausgang zwei LED zum leuchten zu bringen. soweit funktioniert es auch!
Problem: an Pin 3 vom Arduino kommen 5 Volt raus wenn der Sensor etwas erkennt, an Pin 8 aber leider nur 2,5 Volt...
habe den Arduino mit einer externen Quelle (9Volt) gespeißt und die Sensoren bekommen von einer externen Quelle die 5 Volt.
Wenn ich im Sketch die Pinnummern änder ist immer das selbe Problem. Der im Sketch als erstes genannte Pin liefert immer die vollen 5 Volt und der zweite Pin nur 2,5 Volt.
kann mir einer Helfen das beide die vollen 5 Volt ausgeben?
LG
int ledPin = 3;
int ledPin1 = 8;
int analogPin = 5;
int analogPin1 = 4;
int val = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
val = analogRead(analogPin);
Serial.print("val = ");
Serial.print(val);
if (val > 500) {
digitalWrite(ledPin, LOW);
}
else {
digitalWrite(ledPin, HIGH);
}
delay (100);
val = analogRead(analogPin1);
Serial.print("val = ");
Serial.print(val);
if (val > 500) {
digitalWrite(ledPin1, LOW);
}
else {
digitalWrite(ledPin1, HIGH);
}
delay (100);
}
Das ist ja meine Frage.
Was muss ich im Sketch ändern/anpassen damit die Led nicht nur beim Signal vom TCRT5000 an ist, sondern auch für eine bestimmte Zeit an bleibt obwohl das Signal wieder weg ist?
Ich würde auch dazu raten einen wert hoch/runterzählen zulassen und dann bei überschreiten erst dann den pin ändern auszulösen.
Ich als Anfänger würde das so umsetzten nicht schön aber einfach verständlich.
int ledPin = 3;
int ledPin1 = 8;
int analogPin = 5;
int analogPin1 = 4;
int timer = 0 ;
int timer2 = 0 ;
int val = 0;
int val2 = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
Serial.begin(115200);
}
void loop() {
val = analogRead(analogPin);
Serial.print("ADC Wert an Pin 1 = "); //val 0 ist 0 Volt val 511 ist ca 2,5x Vol und 1023 ist 5 Volt nur mal so
Serial.println(val);
Serial.println();
if (val > 500) {
timer = 0;
digitalWrite(ledPin, HIGH);
}
else
{
timer++;
}
if (timer > 5000)
{
timer = 5000;
digitalWrite(ledPin, LOW);
}
//----------------------------------------
val2 = analogRead(analogPin1);
Serial.print("ADC Wert an Pin 2 = ");
Serial.println(val2);
Serial.println();
if (val2 > 500) {
timer2 = 0;
digitalWrite(ledPin1, HIGH);
}
else {
timer2++;
}
if (timer2 > 5000)
{
timer2 = 5000;
digitalWrite(ledPin1, LOW);
}
}
ob die 5000 in etwa 5 Sek. sind musste mal ausprobieren wenn nicht den wert verändern.
Das ADC auslesen und Serial print braucht halt ein kleinen Moment.
Ich gehe mal davon aus das Serial print nur zum testen trine ist und später rauskommt.