regelkring
6 berichten
• Pagina 1 van 1
regelkring
Ik ben een beginner mbt programmeren. Ik heb een regelkring opgezet waarbij via 2 potmeters analoge waardes (op A0 en A1)worden gegenereerd. Via 2 uitgangen moet er een motortje aangestuurd worden tot de analoge waardes weer in evenwicht zijn (met een kleine neutrale zone). Nu een simulatie dmv 2 leds (pin 12 en 13)
Als val2 groter is dan val1 werkt het systeem prima. Ledje gaat aan en blijft aan tot de waardes weer in balans zijn. Echter, als Val1 groter is dan knippert het bijbehorende ledje slechts. Via de seriele monitor zie ik dat de betreffende uitgang uitgezet wordt zodra de if instructie is uitgevoerd, terwijl de toestand van de analoge waardes ongewijzigd blijft. Kan iemand me verklaren hoe dit komt?
De sketch:
cpp code
Als val2 groter is dan val1 werkt het systeem prima. Ledje gaat aan en blijft aan tot de waardes weer in balans zijn. Echter, als Val1 groter is dan knippert het bijbehorende ledje slechts. Via de seriele monitor zie ik dat de betreffende uitgang uitgezet wordt zodra de if instructie is uitgevoerd, terwijl de toestand van de analoge waardes ongewijzigd blijft. Kan iemand me verklaren hoe dit komt?
De sketch:
cpp code
//regelkring p1
const int led1=13;// sluiten
const int led2=12;// openen
int val1=0;
int val2=0;
void setup()
{
Serial.begin(9600);
pinMode(led1,OUTPUT);// sluiten
pinMode(led2,OUTPUT);// openen
}
void loop(){
val1 =analogRead(0); //gewenste positie
val2 =analogRead(1); // gerealiseerde positie
Serial.println("gewenste positie=");
Serial.println(val1);
Serial.println("gerealiseerde positie=");Serial.println (val2);
delay(2000);
if (val2 < val1-2){
digitalWrite(led2, HIGH);//raam gaat open
digitalWrite(led1,LOW);
Serial.println("openen");
delay(1 );
}
else {
digitalWrite(led2,LOW);
digitalWrite(led1,LOW);
}
if (val2 > val1+2){
digitalWrite(led2,LOW);
digitalWrite(led1, HIGH); //raam gaat dicht, werkt ok
Serial.println("sluiten");
}
else {
digitalWrite(led2,LOW);
digitalWrite (led1,LOW);
}
}
Advertisement
Re: regelkring
Zelfs al voldoet de conditie val2 < val1-2 toch wordt daarna gecheckt of val2 > val1+2 en omdat aan deze voorwaarde niet voldaan is (want val1 is groter dan val2) zet je de ledpinnen weer laag.
Daardoor licht led1 maar even op.
Het tweede else statement is er te veel aan.
Deze laatse regels verwijderen en het zal wel werken:
Daardoor licht led1 maar even op.
Het tweede else statement is er te veel aan.
Deze laatse regels verwijderen en het zal wel werken:
- Code: Alles selecteren
else {
digitalWrite(led2,LOW);
digitalWrite (led1,LOW);
}
Arduinows!
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Why do computer programmers confuse Halloween with Christmas? Because Oct 31 = Dec 25
I got 01100011 problems but a bit ain't 00000001
Re: regelkring
e lopen even door je programma:
de eerste if werkt prima, stel dat val2 < val1+2 dan is de eerste if waar dus dat gaat prima, zo te zien.
dan nu de tweede IF
die is dus niet waar!!!! dus wordt de else uitgevoerd en dat is je fout.
leuk he.
te laat, dus het wordt gourmetten.
trouwens vindt ik dat de eerste else ook weg moet.
de eerste if werkt prima, stel dat val2 < val1+2 dan is de eerste if waar dus dat gaat prima, zo te zien.
dan nu de tweede IF
die is dus niet waar!!!! dus wordt de else uitgevoerd en dat is je fout.
leuk he.
te laat, dus het wordt gourmetten.
trouwens vindt ik dat de eerste else ook weg moet.
paul deelen
shooter@home.nl
shooter@home.nl
Re: regelkring
je moet nog wel even vertellen wat er moet gebeuren als de val1==val2 ofwel dicht in de buurt.
zoek maar eens naar het voorbeeld knob.
zoek maar eens naar het voorbeeld knob.
paul deelen
shooter@home.nl
shooter@home.nl
Re: regelkring
Hartelijk dank voor jullie heldere respons. Logisch dat het bij mij niet goed werkte.
Inderdaad moet ik ook nog een zekere neutrale zone inbouwen. Waar vind ik het voorbeeld met ''de knob''?
Inderdaad moet ik ook nog een zekere neutrale zone inbouwen. Waar vind ik het voorbeeld met ''de knob''?
6 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 23 gasten