Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [code]
- // -- -- Abschaltautomatik -- --
- // Anselm Hintermann
- // November 2020
- // Version 2.1
- // Arduino Nano
- // -- Einstellungen --
- //Nachlaufzeiten in Millisekunden
- unsigned long NachlaufSaugerMaschine1 = 3000;
- unsigned long NachlaufSaugerMaschine2 = 3000;
- unsigned long NachlaufSaugerMaschine3 = 3000;
- unsigned long NachlaufSaugerMaschine4 = 3000;
- unsigned long NachlaufSaugerMaschine5 = 3000;
- unsigned long NachlaufVKlappeMaschine1 = 3000;
- unsigned long NachlaufVKlappeMaschine2 = 3000;
- unsigned long NachlaufVKlappeMaschine3 = 3000;
- unsigned long NachlaufVKlappeMaschine4 = 3000;
- unsigned long NachlaufVKlappeMaschine5 = 3000;
- unsigned long NachlaufSaugerMKlappe1 = 10;
- unsigned long NachlaufSaugerMKlappe2 = 10;
- unsigned long NachlaufSaugerMKlappe3 = 10;
- unsigned long NachlaufSaugerMKlappe4 = 10;
- unsigned long NachlaufSaugerMKlappe5 = 10;
- //Schwelle kein absoluter Wert
- unsigned long EinschaltSchwelleMaschine1 = 550;
- unsigned long EinschaltSchwelleMaschine2 = 550;
- unsigned long EinschaltSchwelleMaschine3 = 550;
- unsigned long EinschaltSchwelleMaschine4 = 550;
- unsigned long EinschaltSchwelleMaschine5 = 550;
- //Wie oft wird der Stromsensor ausgelesen, je kleiner desto schneller aber ungenauer
- unsigned long printPeriod = 100;
- // -- Pinbelegung --
- // -- Eingänge --
- int SSensor1 = A0;
- int SSensor2 = A1;
- int SSensor3 = A2;
- int SSensor4 = A3;
- int SSensor5 = A4;
- int SKlappe1 = 2;
- int SKlappe2 = 3;
- int SKlappe3 = 4;
- int SKlappe4 = 5;
- int SKlappe5 = 6;
- // -- Ausgänge --
- int Ventil1 = 7;
- int Ventil2 = 8;
- int Ventil3 = 9;
- int Ventil4 = 10;
- int Ventil5 = 11;
- int Sauger = 12;
- // -- Rechenvariablen --
- unsigned long SSensor1Value;
- unsigned long SSensor2Value;
- unsigned long SSensor3Value;
- unsigned long SSensor4Value;
- unsigned long SSensor5Value;
- unsigned long SSensor1MaxValue;
- unsigned long SSensor2MaxValue;
- unsigned long SSensor3MaxValue;
- unsigned long SSensor4MaxValue;
- unsigned long SSensor5MaxValue;
- unsigned long SSensor1Current;
- unsigned long SSensor2Current;
- unsigned long SSensor3Current;
- unsigned long SSensor4Current;
- unsigned long SSensor5Current;
- unsigned long previousMillis;
- unsigned long AusschaltZeitSauger = millis() - 1;
- unsigned long SchliessZeitVKlappe1 = millis() - 1;
- unsigned long SchliessZeitVKlappe2 = millis() - 1;
- unsigned long SchliessZeitVKlappe3 = millis() - 1;
- unsigned long SchliessZeitVKlappe4 = millis() - 1;
- unsigned long SchliessZeitVKlappe5 = millis() - 1;
- // -- Setup --
- void setup() {
- // -- PinMode Definition --
- pinMode(SSensor1, INPUT);
- pinMode(SSensor2, INPUT);
- pinMode(SSensor3, INPUT);
- pinMode(SSensor4, INPUT);
- pinMode(SSensor5, INPUT);
- pinMode(SKlappe1, INPUT);
- pinMode(SKlappe2, INPUT);
- pinMode(SKlappe3, INPUT);
- pinMode(SKlappe4, INPUT);
- pinMode(SKlappe5, INPUT);
- pinMode(Ventil1, OUTPUT);
- pinMode(Ventil2, OUTPUT);
- pinMode(Ventil3, OUTPUT);
- pinMode(Ventil4, OUTPUT);
- pinMode(Ventil5, OUTPUT);
- pinMode(Sauger, OUTPUT);
- Serial.begin(9600);
- }
- // -- Loop --
- void loop() {
- // -- Stromsensoren abfragen und auswerten --
- while (previousMillis + printPeriod > millis()) //MaxValue ermitteln
- {
- SSensor1Value = analogRead(SSensor1);
- SSensor2Value = analogRead(SSensor2);
- SSensor3Value = analogRead(SSensor3);
- SSensor4Value = analogRead(SSensor4);
- SSensor5Value = analogRead(SSensor5);
- if (SSensor1MaxValue < SSensor1Value)
- {
- SSensor1MaxValue = SSensor1Value;
- }
- if (SSensor2MaxValue < SSensor2Value)
- {
- SSensor2MaxValue = SSensor2Value;
- }
- if (SSensor3MaxValue < SSensor3Value)
- {
- SSensor3MaxValue = SSensor3Value;
- }
- if (SSensor4MaxValue < SSensor4Value)
- {
- SSensor4MaxValue = SSensor4Value;
- }
- if (SSensor5MaxValue < SSensor5Value)
- {
- SSensor5MaxValue = SSensor5Value;
- }
- }
- // -- MaxValue Nullen
- SSensor1Current = SSensor1MaxValue;
- SSensor1MaxValue = 0;
- SSensor2Current = SSensor2MaxValue;
- SSensor2MaxValue = 0;
- SSensor3Current = SSensor3MaxValue;
- SSensor3MaxValue = 0;
- SSensor4Current = SSensor4MaxValue;
- SSensor4MaxValue = 0;
- SSensor5Current = SSensor5MaxValue;
- SSensor5MaxValue = 0;
- previousMillis = millis();
- // -- Ausschaltzeiten Maschinen festlegen --
- if (EinschaltSchwelleMaschine1 <= SSensor1Current )
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMaschine1;
- SchliessZeitVKlappe1 = millis() + NachlaufVKlappeMaschine1;
- Serial.print(" Bed. Masch1 erf. ");
- }
- if (SSensor1Current > EinschaltSchwelleMaschine2)
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMaschine2;
- SchliessZeitVKlappe2 = millis() + NachlaufVKlappeMaschine2;
- }
- if (SSensor1Current > EinschaltSchwelleMaschine3)
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMaschine3;
- SchliessZeitVKlappe3 = millis() + NachlaufVKlappeMaschine3;
- }
- if (SSensor1Current > EinschaltSchwelleMaschine4)
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMaschine4;
- SchliessZeitVKlappe4 = millis() + NachlaufVKlappeMaschine4;
- }
- if (SSensor1Current > EinschaltSchwelleMaschine5)
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMaschine5;
- SchliessZeitVKlappe5 = millis() + NachlaufVKlappeMaschine5;
- }
- // -- Ausschaltzeiten manuelle Klappen festlegen --
- if (digitalRead(SKlappe1) == 1 )
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe1;
- }
- if (digitalRead(SKlappe2) == 1 )
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe2;
- }
- if (digitalRead(SKlappe3) == 1 )
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe3;
- }
- if (digitalRead(SKlappe4) == 1 )
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe4;
- }
- if (digitalRead(SKlappe5) == 1 )
- {
- AusschaltZeitSauger = millis() + NachlaufSaugerMKlappe5;
- }
- // -- Sauger ansteuern --
- if (AusschaltZeitSauger >= millis() )
- {
- digitalWrite(Sauger, HIGH);
- Serial.println("Sauger EIN ");
- }
- else {
- digitalWrite(Sauger, LOW);
- Serial.println("Sauger AUS ");
- }
- // -- Pneumatikklappen ansteuern --
- if (SchliessZeitVKlappe1 >= millis())
- {
- digitalWrite(SKlappe1, HIGH);
- }
- else {
- digitalWrite(SKlappe1, LOW);
- }
- if (SchliessZeitVKlappe2 >= millis())
- {
- digitalWrite(SKlappe2, HIGH);
- }
- else {
- digitalWrite(SKlappe2, LOW);
- }
- if (SchliessZeitVKlappe3 >= millis())
- {
- digitalWrite(SKlappe3, HIGH);
- }
- else {
- digitalWrite(SKlappe3, LOW);
- }
- if (SchliessZeitVKlappe4 >= millis())
- {
- digitalWrite(SKlappe4, HIGH);
- }
- else {
- digitalWrite(SKlappe4, LOW);
- }
- if (SchliessZeitVKlappe5 >= millis())
- {
- digitalWrite(SKlappe5, HIGH);
- }
- else {
- digitalWrite(SKlappe5, LOW);
- }
- // -- Serieller Monitor --
- Serial.print(" ZeitSaugerAus ");
- Serial.print(AusschaltZeitSauger);
- Serial.print(" Millis: ");
- Serial.print(millis());
- Serial.print(" Current: ");
- Serial.print(SSensor1Current);
- // -- Ende Loop --
- }
- [/code]
Advertisement
Add Comment
Please, Sign In to add comment