Created
October 13, 2020 15:13
-
-
Save dewomser/1fd11c2362b1062225b5a3a0f083d556 to your computer and use it in GitHub Desktop.
Parametrierbarer 2-Punktregler mit Hysterese. Test mit Arduino duemill… und Feuchtefühler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Analog input, analog output, serial output | |
2 Punktregler mit Hysterese | |
*/ | |
// These constants won't change. They're used to give names | |
// to the pins used: | |
const int analogInPin = A0; // Analog input pin that the poti is attached to | |
const int digitalOutPin = 9; // Digital output pin that the buzzer is attached to | |
int sensorValue = 0; // value read from the pot | |
int outputValue = 0; // value output to the PWM (analog out) | |
String inputString = ""; // a String to hold incoming data | |
bool stringComplete = false; // whether the string is complete | |
String isdauer = "0"; | |
int hysterese = 5; | |
void setup() { | |
// initialize serial communications at 9600 bps: | |
Serial.begin(9600); | |
pinMode (analogOutPin, OUTPUT); | |
inputString.reserve(200); | |
} | |
void loop() { | |
// read the analog in value: | |
sensorValue = analogRead(analogInPin); | |
// map it to the range of the analog out: | |
outputValue = map(sensorValue, 0, 1023, 0, 255); | |
// change the analog out v if (outputValue < inputString ) | |
if ( outputValue < isdauer.toInt() ) { | |
digitalWrite(analogOutPin, HIGH); | |
} | |
else if ( outputValue > isdauer.toInt() + hysterese ) { | |
digitalWrite(digitalOutPin, LOW); | |
} | |
// else { | |
// digitalWrite(analogOutPin, LOW); } | |
// print the results to the serial monitor: | |
Serial.print("sensor = " ); | |
Serial.print(sensorValue); | |
Serial.print("\t output = "); | |
Serial.println(outputValue); | |
// wait 2 milliseconds before the next loop | |
// for the analog-to-digital converter to settle | |
// after the last reading | |
// print the string when a newline arrives: | |
if (stringComplete) { | |
Serial.println(inputString); | |
isdauer = inputString; | |
// clear the string: | |
inputString = ""; | |
stringComplete = false; | |
} | |
delay(1000); | |
} | |
/* | |
SerialEvent occurs whenever a new data comes in the hardware serial RX. This | |
routine is run between each time loop() runs, so using delay inside loop can | |
delay response. Multiple bytes of data may be available. | |
*/ | |
void serialEvent() { | |
while (Serial.available()) { | |
// get the new byte: | |
char inChar = (char)Serial.read(); | |
// add it to the inputString: | |
inputString += inChar; | |
// if the incoming character is a newline, set a flag so the main loop can | |
// do something about it: | |
if (inChar == '\n') { | |
stringComplete = true; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Neu ist die Hysterese default Wert 5