const int sensorPin = A0;
const int buttonPin = 2;
const int stepPin = 8;
const int dirPin = 9;
const int numReadings = 20; // Aantal metingen voor het gemiddelde
int setValue = 280; // ingestelde onderdruk in hPa
int marge = 10;
int margeGroot = 20;
int speed = 0;
int slowspeed = 20;
int ambient = 1013;
int drukSensor[numReadings]; // Array om de metingen op te slaan
int index = 0; // Huidige index in de array
int total = 0; // Totaal van alle metingen
int drukGem = 0; // Gemiddelde waarde
int mapDruk = 0;
int drukG = 0;
int sinus;
// float angle = 0;
// float angleinc = 0.05;
void setup() {
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
Serial.begin(9600);
for (int i = 0; i < numReadings; i++) {
drukSensor[i] = 0;
}
}
void loop() {
if (digitalRead(buttonPin) == HIGH) {
sinus = 300;
}
else {
sinus = 240;
}
int druk = map((analogRead(sensorPin)), 217, 1023, 600, 1000); // Lees de nieuwe sensorwaarde en voeg deze toe aan het totaal
int mapDruk = (ambient-druk);
total = total - drukSensor[index]; // Lees de sensorwaarde en trek de oudste meting van het totaal af
drukSensor[index] = mapDruk;
total = total + drukSensor[index];
index = (index + 1) % numReadings; // Verhoog de index voor de volgende meting
drukGem = total / numReadings; // Bereken het gemiddelde
// sinus = (50*sin(angle)+250);
Serial.print("sin: ");
Serial.print(sinus);
// angle += angleinc;
Serial.print("\t druk: ");
Serial.println(drukGem);
delay(50);
startProgramma(); // Begin het start programma.
}
//sdfsfdfsdd
void startProgramma() {
if (drukGem > (sinus + marge)){// laatse stukje lanzaam
if (drukGem > (sinus + margeGroot)){
speed = (slowspeed/2);
}
else {
speed = slowspeed;
}
digitalWrite(dirPin, HIGH); // Zet de richting naar linksom
generatePulses();
}
if (drukGem < (sinus - marge)){
if (drukGem < (sinus - margeGroot)){
speed = (slowspeed/2);
}
else {
speed = slowspeed;
}
digitalWrite(dirPin, LOW); // Zet de richting naar rechtsom
generatePulses();
}
// Serial.print("Drukgemiddeld:");
// Serial.println(drukGem); // Stuur de waarde via de seriële poort
}
void generatePulses() {
for (int j = 0; j < 5; j++) { // Genereer 5 stappen.
digitalWrite(stepPin, HIGH); // Zet de outputpin hoog
delay(speed); // (aanpassen naar behoefte)
digitalWrite(stepPin, LOW); // Zet de outputpin laag
delay(speed); // (aanpassen naar behoefte)
}
}