If statement

Arduino specifieke Software
Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

If statement

Berichtdoor DeDraak » 23 Aug 2019, 10:03

Wie kan mij vertellen wat ik hier verkeerd doe?

Ik stuur een fan aan via analog write en dat gaat goed. De Output waarde heb ik op mijn display maar die waarde is erg zenuwachtig. Nu hoef ik die waarde ook niet exact in beeld te hebben dus wil ik dit in stappen van 10% doen. Dus als mijn Output tussen 20% en 30% is dan wil ik 20% in mijn display zien.

Wie kan mij op weg helpen want onderstaand is dus niet goed.

Code: Alles selecteren
int val = Output;
  val = map (val, 0, 255, 0, 100);
  int aansturing;

  if (Output >0 && Output < 40) {
    aansturing = 0;
  }
  if (Output >40 && Output < 50) {
    aansturing = 40;
  }
  if (Output >50 && Output < 60) {
    aansturing = 50;
  }
  if (Output >60 && Output < 70) {
    aansturing = 60;
  }
  if (Output >70 && Output < 80) {
    aansturing = 70;
  }
  if (Output >80 && Output < 90) {
    aansturing = 80;
  }
  if (Output >90 && Output < 99) {
    aansturing = 90;
  }
  if (Output >99) {
    aansturing = 100;
  }

Advertisement

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

Re: If statement

Berichtdoor Koepel » 23 Aug 2019, 12:45

Door die waar om te zetten raak je oorspronkelijke waarde kwijt. Als je er later iets mee wilt berekenen, dan heb je misschien toch weer de oorspronkelijke waarde nodig.
Wat als de waarde varieert tussen 49 en 51, dan varieert de uitkomst tussen 40 en 50. Volgens mij schiet je er niets mee op.

Het lijkt me beter om het anders te doen. Je hebt teveel variatie, dan lijkt het me beter om een filter in code te maken, zodat er een stabiele waarde ontstaat.

Wat is 'Output' ?
Je zet die om naar 'val' van 0 ... 100, en vervolgens gebruik je toch weer 'Output'.

De if-statements kun je natuurlijk zo doen, dat is prima. Er is een "zeef"-methode voor.
Stel je hebt stenen van verschillende grootte en die wil je sorteren met verschillende zeven onder elkaar.
De grove zeef is bovenaan voor de grote keien.
De fijne zeef is onderaan, alleen het kleine gruis valt overal doorheen.

Dat als if-statement ziet er zo uit:
cpp code
int percentage = 30;  // 0...100
int aansturing;

if( percentage <= 40) // grote keien
{
aansturing = 0;
}
else if( percentage <= 50) // iets kleinere keien
{
aansturing = 40;
}
else if( percentage <= 60)
{
aansturing = 50;
}
else if( percentage <= 70)
{
aansturing = 60;
}
else if( percentage <= 80)
{
aansturing = 70;
}
else if( percentage <= 90)
{
aansturing = 80;
}
else if( percentage < 100)
{
aansturing = 90;
}
else // het percentage is gelijk aan of hoger dan 100
{
aansturing = 100;
}


P.S.: Een hele sketch die we kunnen uitproberen is leuker voor ons ;)

Berichten: 247
Geregistreerd: 03 Okt 2015, 13:39

Re: If statement

Berichtdoor DeDraak » 23 Aug 2019, 14:11

De Output is de aansturing van de fan.
Deze wordt aangestuurd door middel van een temperatuursensor.
De Map gebruik ik om de 0-255 aansturing om te zetten naar procenten in het display.

Ik wil het "aangezicht" wat rustiger maken door alleen tientallen te gebruiken. Dat hij gaat switchen bij 49 en 51 maakt me eigenlijk niks uit.

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

Re: If statement

Berichtdoor shooter » 25 Aug 2019, 11:28

je antwoord is % teken het is de remainder.
dan heb je ook niet al die if statements nodig.
y=x-(x%10)
word veel gebruikt om cijfers op een display te zetten,
je knt ook een timer gebruiken om elke seconde een nieuwe waarde te laten zien dan heb je altijd de exacte waarde, En ja het is allemaal niet zo precies (zelfs dure instrumenten hebben hier last van en middelen etc.
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: ilipavudekejo en 15 gasten