2 potentiometers, 1 waarde

Geef hier suggesties voor extra onderwerpen of andere dingen die je graag gewijzigd zou willen zien
Berichten: 10
Geregistreerd: 01 Mei 2019, 09:24

2 potentiometers, 1 waarde

Berichtdoor kurveekyl@telenet.be » 27 Apr 2020, 08:49

Hallo, ik probeer een sproeisysteem te maken waarvan je de delay tussen het sproeien (max 15 minuten) en hoelang hij sproeit (max 5 seconden) verandert met elk een potentiometer, maar dit lijkt niet te werken. De ene potentiometer zit in Analog Pin 2 en de andere in Analog Pin 3. Maar als ik de waarden lees van beide deze potentiometers is dit hetzelfde. De 2 waardes worden dus gelezen van altijd de ene potentiometer, terwijl dit volgens mijn code niet zo is. Ik heb ook al geprobeerd de poorten te verwisselen en zelf toen bleven beide waardes van dezelfde potentiometer gelezen worden. Ik heb ook al geprobeerd de potentiometer waar geen waardes van worden gelezen te vervangen, veranderde ook niks. Ook heb ik geprobeerd een delay van 100milliseconden te brengen tussen het lezen van de 2 waarden.


Code: Alles selecteren
int out;
float timer = 300000.0f;
int interval = 3;
unsigned long previousMillis = 0;

int val = 0;
int intVal = 0;

float prevCalc;

void setup() {

  pinMode(A2, INPUT);
  pinMode(A3, INPUT);
 
  Serial.begin(9600);
  prevCalc = float(round(analogRead(A2)/1023.0f*15));
}

void loop() {

    val = analogRead(A3);
    intVal = analogRead(A2);
   
    float calc = float(round(val/1023.0f*15));
    if (calc != prevCalc) {
      timer = float(calc*60.0f*1000.0f);
      prevCalc = calc;
    }

    /*float intCalc = float(round(intVal/));
    if (calc != prevCalc) {
      timer = float(calc*60.0f*1000.0f);
      prevCalc = calc;
    }*/
    Serial.println(intVal);
 
    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis > timer){
      Serial.println("Aan");
      delay(interval);
      Serial.println("Uit");
      previousMillis = currentMillis;
    }
    //Serial.println(currentMillis - previousMillis);
}

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: 2 potentiometers, 1 waarde

Berichtdoor Koepel » 27 Apr 2020, 09:21

Hallo, ik stel voor om opnieuw te beginnen en begin dan eerst met de potmeters.

Voor 'analogRead()' is geen pinMode nodig. Kijk maar naar het voorbeeld: https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/.

Code: Alles selecteren
const int sproeitijdPin = A2;
const int tussentijdPin = A3;

int vorige_sproeitijd;
int vorige_tussentijd;

void setup()
{
  Serial.begin( 9600);
  Serial.println( "De sketch is gestart");

  // zet de "vorige_..." waarden op de huidige stand van de potmeters
  int vorige_sproeitijd = analogRead( sproeitijdPin);
  int vorige_tussentijd = analogRead( tussentijdPin);
}

void loop()
{
  int sproeitijd = analogRead( sproeitijdPin);
  int tussentijd = analogRead( tussentijdPin);

  if( vorige_sproeitijd != sproeitijd)
  {
    Serial.println( "De sproeitijd is gewijzigd");
    vorige_sproeitijd = sproeitijd;
  }

  if( vorige_tussentijd != tussentijd)
  {
    Serial.println( "De tussentijd is gewijzigd");
    vorige_tussentijd = tussentijd;
  }

  delay( 200);     // vertraag de sketch
}


Als je dit hebt, dan kun je kijken of dit deel werkt. De analogRead() geeft een waarde van 0 ... 1023 terug. Dat is waarschijnlijk te gevoelig en bevat misschien ook nog wat ruis. Je zou kunnen kijken of het verschil meer dan 5 is, of je kunt in software een filter maken.

P.S.: Als je in België woont, mag je de "je" als "u" lezen ;)

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 2 potentiometers, 1 waarde

Berichtdoor shooter » 27 Apr 2020, 09:49

zoals koepel aangeeft kun je beter de variabele namen aanpassen, en zeker maken dat je de goede hebt. bijvoorbeeld calc is bij beide hetzelfde
ik zag ook nog een delay en dat moet je oplossen met dezelfde soort timer (dus je krijgt een startsproeitijd en een sproeitijd
en ook nog een startpauzetijd en pauzetijd.
op 1 plek zet je dan currenttimer steeds up to date
zoek het eerst eens even in seria.print analogread(a2)
en zelfde voor a3 dan weet je zeker dat het in de software zit.
paul deelen
shooter@home.nl

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: 2 potentiometers, 1 waarde

Berichtdoor shooter » 27 Apr 2020, 09:51

overigens wel heel netjes dat je timers gebruikt ipv delays want die veranderen niet als je eraan draait.
en bij tijden eraan denken dat je waardes netjes verandert telkens als je de analogread opvraagt.
paul deelen
shooter@home.nl

Terug naar Forum suggesties

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten