Hallo
ich habe Eine Frage zum Unterem Sketch "BLINK SKETCH"
Es geht darum wenn der Pin 13 HIGH ist soll Pin 12 auch HIGH sein
umgegehrt soll wenn Pin 13 auf Low schaltet Pin 12 mit Delay 2000 auch LOW werden.
Wie müß ich den Sketch verändern?
if abfrage???
bitte um hilfe !!!
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
umgegehrt soll wenn Pin 13 auf Low schaltet Pin 12 mit Delay 2000 auch LOW werden.
Für mich ist das Problem nicht die Programmierung, sondern die Funktionsbeschreibung.
Wenn Pin 13 auf HIGH geht, soll auch Pin12 auf HIGH: >> Das kriegst du auch allein hin.
Wenn Pin 13 auf Low schaltet, soll bin 12 erstmal HIGH bleiben für weitere 2 sec. >> OK
Soll Pin 13 wie bisher nach 1 Sekunde wieder HIGH werden ?
Wenn Pin 13 also das zweite Mal LOW wird, soll Pin 12 auch LOW werden ?
Und soll danach ( nach einer weiteren Sekunde ) alles wieder von vorne los gehen ?
Oder soll Pin 12 insgesamt halb so schnell binken wie Pin 13 ?
Wie lang ist also der gesamte Zyklus ? Und wann passiert was ? >> Das kriegst du auch allein hin.
eigentlich geht es nur den Code
wie sich der Wert Digitalen Ausgangs (PIN 13), in Abhängigkeit,
zum ansteuern eines zweiten digitalen Pin (PIN12) verwenden läst
die zeiten sind eigendlich momentan noch uninteressant,
void loop() {
digitalWrite(ledPin, HIGH); // sek 0
digitalWrite(testPin, HIGH); // beide an
delay(1000); //
digitalWrite(ledPin, LOW); // sek 1: Eine aus, die andere bleibt an ( 2 sek länger, also insgesamt 3 sek )
delay (1000);
digitalWrite(ledPin, HIGH); // sek 2: Led 1 blinkt im Sekundentakt
delay(1000);
digitalWrite(ledPin, LOW); // sek 3:
digitalWrite(testPin, LOW); //beide aus
delay(1000); // für 1 sek
}
Wenn das zu einfach war, schau dir andere Beispiele und die Referenz an, es gibt noch viel zu lernen.
z.B. Dass zeitgesteuerte Programme mit delay() zu realisieren eigentlich nur was für ganz blutige Anfänger ist ...
Hi,
erstmal vielen Dank für deine Arbeit.
ja das mit den Beispielen mache ich, meine ist Frage noch nicht ganz beantwortet, ich habe es wohl nicht gut erklärt, entschuldige bitte. Ich hoffe jetzt ist es besser zu verstehen.
Denn Pin 12 soll automatisch (in Abhängigkeit ) mit geschaltet werden, wenn Pin 13 HIGH ist.
es soll in diesen Seketch eingebunden werden.
Soll eine Themperatur Steuerung werden, mit zwei zu schaltenden Bauteilen (Pin 13(led) und Pin 12(led))
!!!!!!!! doch die LED an Pin 12 testpin leuchtet nicht mit..... !!!! wo ist der Fehler?????
#include <math.h>
int SensorPin = 0; // Für den Senoreingang wird Analog 0 gewählt
float sensorWert = 0; // Variable, die den Sensor Wert annimmt
float u1 =0; // Spannung u1 am Spannungsteiler
float u2 = 0; // Spannung u2 am Spannungsteiler
float i = 0; // Strom in A
float Rntc = 0; // Widerstand des Thermistors zum Zeitpunkt der Messung
float T = 0; // Variable für gemessene Temperatur
float B = 4540; // Wert aus Datenblatt des Thermistors
float Tn = 298.16; // Nenntemperatur in K
float R25 = 12.83; // Nennwiderstand in Ohm bei Nenntemperatur (aus Datenblatt)
const int analogPin = A0; // pin that the sensor is attached to
const int ledPin = 13; // pin that the LED is attached to
const int threshold = 9; // an arbitrary threshold level that's in the range of the analog input
const int testPin = 12;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(testPin, OUTPUT);
Serial.begin (9600); // Temperatur kann im "Serial Monitor" abgelesen werden
}
void loop()
{
sensorWert = analogRead(SensorPin); // Wert am Sensor wird gelesen
u2 = (sensorWert * 5)/1024; // Spannung am Sensor wird berechnet
u1 = 5-u2; // Spannung am Vorwiderstand wird berechnet
i = u1/1000; // Strom wird berechnet
Rntc = u2/i; // Widerstand des Thermistors zum Zeitpunkt der Messung
T = (B*Tn)/(B-(log(Rntc/R25)*Tn)); // Berechnung der Temperatur
T = T-273.15; // Umrechnung von K in °C
Serial.print ("Temperatur am PWT = ");
Serial.print (T);
Serial.println (" C");
delay (800); // Temperatur wird alle 2 sec. gemessen
int analogValue = analogRead(analogPin);
// if the analog value is high enough, turn on the LED:
if (analogValue > threshold) {
digitalWrite(ledPin, HIGH);
digitalWrite(testPin, HIGH);
}
else
digitalWrite(ledPin,LOW);
digitalWrite(testPin,LOW);
Serial.println(analogValue);
delay(800); // delay in between reads for stability
}
Serial.println(analogValue);
delay(800); // delay in between reads for stability
He, he, von Hand einrücken hilft nicht
{ geschweifte Klammer vergessen }
digitalWrite(testPin,LOW); wird immer ausgeführt, da siehst du nicht, dass testPin zwei Zeilen vorher mal kurz eingeschaltet war.
Strg-T macht automatische Einrückungen, und hier im Forum sieht Code in den # Code tags auch besser aus.