Hallo erst einmal bin Anfänger und habe mich in richtung arduino noch nicht Beschäftigt. Ausser zu googln.
Ich habe eine Projekt Ider und hoffe das die mit arduino nano umzusetzen ist.
Zu meiner Idee.
Eine Lichtschranke erfasst ein und aus. Sollte das ein oder das aus länger als 1 sekunde ( am besten einstellbar über poti) betätigt oder unbetätigt sein leuchtet eine Led auf. (Später soll ein Servo auslösen.)
Das ganze sollte sich dann so nach 5 sek. Resten.
Also ist das sozusagen eine überwachungs schaltung.
Hat jemand ideen ob das so geht. Vil. Ein tuturial ?
Die Lichtschranke wird in Regelmässigen abständen betätigt. Ca. Alle 400ms geht sie an und nach 600ms geht Sie aus. Dieses wiederholt sich.
Jetzt wenn dieser rythmus unterbrochen wird für 2 sec. Dann soll eine Led leuchten. Wenn der rythmus wieder beginnt geht die led wieder aus.
Hoffentluch verständlicher.
Wenn Da nicht mehr zu tun ist, geht der Code von Schuppeste ja schon fast direkt.
Statt dem delay(5000); schreibst Du aber }else{ und in der IF änderst Du die 1000 in 2000.
Alternativ kannst Du vorher einen Analog-Wert an A0...A5 einlesen und über MAP auf eine Zeit 1000...10000 wandeln und in der IF verwenden.
Nach googln und videos denke ich verstehe es etwas. Ist ja eigetnlich nicht so schwer. Habe mir jetzt erst mal ein nano und eine tcrt5000 bestellt. Werde mich dann mal versuchen.
CoasterForce:
Hallo erst einmal bin Anfänger und habe mich in richtung arduino noch nicht Beschäftigt. Ausser zu googln.
Ich habe eine Projekt Ider und hoffe das die mit arduino nano umzusetzen ist.
Zu meiner Idee.
Eine Lichtschranke erfasst ein und aus. Sollte das ein oder das aus länger als 1 sekunde ( am besten einstellbar über poti) betätigt oder unbetätigt sein leuchtet eine Led auf. (Später soll ein Servo auslösen.)
Das ganze sollte sich dann so nach 5 sek. Resten.
Also ist das sozusagen eine überwachungs schaltung.
Hat jemand ideen ob das so geht. Vil. Ein tuturial ?
Mfg
Deine Idee ist grundsätzlich umsetzbar. Du solltest Dich allerdings zunächst mit ein paar Grundlagen beschäftigen - zum Beispiel damit, Deine Idee in Form eines Programmablaufplans zu formulieren.
Einfach mal alle Fehler die der Kompiler reklamiert abarbeien.
Aber am besten noch mal von vorne beginnen.
Ein "3-Zeiler-Sketch" mit einem Delay und einem Interupt ist für mich die Kombination von Weihwasser und Teufel.
noiasca:
Aber am besten noch mal von vorne beginnen.
Ein "3-Zeiler-Sketch" mit einem Delay und einem Interupt ist für mich die Kombination von Weihwasser und Teufel.
Jeder hat mal klein angefangen.. Ich finde gerade am Anfang ist minimalistisch und einfach das man es direkt versteht besser als sich an anderen Sachen aufzuhalten.
Versuch es mal damit:
int sensorPin = A0;
int sensorValue = 0;
int LEDpin = 13;
volatile unsigned long mycount = millis();
void setup() {
pinMode (LEDpin, OUTPUT);
pinMode (sensorPin, OUTPUT);
pinMode (2, INPUT);
//löse bei änderung von Pin2(INT0) die Funktion "MyonChange" aus
attachInterrupt(digitalPinToInterrupt(2), MyonChange , CHANGE);
}
void loop() {
int sensorVALUE = analogRead(sensorPin);
//wandle den wert 0-1024 nach 0-10000 um
int waitms = map(sensorVALUE, 0, 1024, 0, 10000);
Serial.println(sensorValue);
// wenn aktuelle millis minus letztes mycount über 2000ms ausführen
if (millis() - mycount >= waitms)
{
digitalWrite(LEDpin, HIGH);
delay(15000);
digitalWrite(LEDpin, LOW);
}
}
void MyonChange() {
//setze mycount bei änderung von Pin 2 auf aktuell fortlaufende Millis
mycount = millis();
}
CoasterForce:
Die Lichtschranke wird in Regelmässigen abständen betätigt. Ca. Alle 400ms geht sie an und nach 600ms geht Sie aus. Dieses wiederholt sich.
Jetzt wenn dieser rythmus unterbrochen wird für 2 sec. Dann soll eine Led leuchten. Wenn der rythmus wieder beginnt geht die led wieder aus.
Hoffentluch verständlicher.
So controller kam an und gleich mal ausprobiert. Verkabelt und den Sketch von schuppeste hochgeladen. Hat geklappt. Allerdings geht die LED an und auf dem Board leuchtet es grün und rot. Angeschlossen ist eigentlich alles richtig. So ganz verstehe ich in dem Script noch nicht wo er die 2000 ms herbekommen soll.
Ja für euch mag es einfach sein aber für mich totales neuland, will es ja schliesslich ja auch nicht gleich grillen
ich habe jetzt mal den sensor mit dem sketch überprüft.
void setup() {
Serial.begin(9600);
}
void loop() {
// read the input on analog pin 0:
int sensorValue = analogRead(A0);
// print out the value you read:
Serial.println(sensorValue);
delay(1);
}
dann in dem Script die 0, 1024, 0, 10000); auf 40, 950, 0, 10000); gesetzt siehe da es passiert nix
also keine rot nur die grüne led.
wenn ich statt 40 auf 1 setzte geht sie wieder an.
Also millis() gibt die Millisekunden des Systems seit einschalten aus, das heisst nach 10 Sekunden gibt millis() 10000 aus.. nach einer Stunde 3600000ms.. und so weiter.
mycount=millis() ist der Wert jetzt (letzte Änderung)
analogRead gibt einen Wert zwischen 0 und 1024 aus.. wenn man ein Poti gegen GND,5V und Mittelabgriff auf A0 setzt.
angenommen das Poti steht auf 1/4 dann sind das ca. 250.
map(0, 1024, 0, 10000); skaliert die 250 auf 2500 =2,5Sekunden in der Variable waitms.
Wenn die aktuellen Millisekunden des Systems - letzte mycount setzung größer waitms ist wird der Codeteil im IF ausgeführt.
So, zurück zum Sensor - was gibt der Sensor aus?
Hast Du den Arduino am PC/Laptop?
Dann kannst Du per Serial.print Dir die Werte des Sensor ausgeben lassen.
Denke, Dir fehlt ein PullUP/-DN Widerstand am Sensor, da Der nur in eine Richtung arbeiten kann - oder die dem Sensor zugehörige LED ist nicht angeschlossen/defekt und deshalb zeigt der Sensor keine Reaktion.
Led natürlich mit wiederstand diese Funktioniert ja auch weil Sie angeht.
Im Sketch kann ich z.b. die 9000 ändern und die LED geht nach bestimmter Zeit an. Sprich 3000 = 3sek. 9000 = 9sek.
Aber das soll Sie ja nicht, so lange am Sensor Werte verändern.
Verändern sich keine soll die Led nach bestimmter Zeit leuchten.