loop vast

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 10
Geregistreerd: 05 Sep 2021, 23:49

loop vast

Berichtdoor hobby.bob » 03 Mei 2022, 10:40

goede morgen.
ik ben Willem een oudere jongere die een beetje aan spelen/knutselen is met arduino.
ik loop vast/blijf hangen staar mij blind ik weet het niet.
heb onderstaand programma gemaakt en werkt zoals ik voor ogen heb, behalve het laatste stukje.
wie kan/wil mij uit brand helpen.

// ===== pin benamingen ======
int ledPin = 13; // inbedrijf
int ledPins = 2; // storing
int onbutton = 11; // aan
int offbutton = 12; // uit
int offbutton1 = 3; // pressostaat
int offvalue1 = 0; // pressostaat
int onvalue = 0;
int offvalue = 0;

void setup()
{
//======= invoer en uitvoer =====
pinMode(ledPin,OUTPUT); // in bedrijf, groeneled
pinMode(ledPins,OUTPUT); // storing, rode led
pinMode(offbutton1,INPUT);
pinMode(onbutton,INPUT);
pinMode(offbutton,INPUT);
}

void loop()
{
//======== led aan =======
onvalue = digitalRead(onbutton);
if(onvalue == LOW)
{
delay(10); // contactdender

if(onvalue == LOW);
digitalWrite(ledPin,HIGH); // led aan
}
//======== led uit =========
offvalue = digitalRead(offbutton);
if(offbutton == LOW);
{
delay (10); // contactdender

if (offvalue == LOW)
digitalWrite(ledPin,LOW ); // led uit
}
//===== pressostaat groene led uit rode led aan =======
offvalue1 = digitalRead(offbutton1);
if(offbutton1 == LOW);
{
delay (10); // contactdender

if (offvalue1 == LOW)
digitalWrite(ledPin,LOW ); // groene led uit
}
offvalue1 = digitalRead(offbutton1);
if(offbutton1 == LOW);

delay (10); // contactdender

if (offvalue1 == LOW)
digitalWrite(ledPins,HIGH); // rode led aan
{
//=== blokkeren led/aan/knop tot dat resetknop is ingedrukt ====
offvalue1 = digitalRead,ledPin);
if(ledPin == LOW);
digitalWrite(ledPin,HIGH);

}
}

Advertisement

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: loop vast

Berichtdoor Frits1956 » 03 Mei 2022, 17:33

Het is mij mogelijk niet duidelijk wat je wil dat er moet gebeuren met "het laatste stukje"
Wat had je verwacht dat er zou gebeuren...
Wat ik wel zie is dat er een syntax fout in staat.
Regel 59 offvalue1 = digitalRead, ledPin); moet zijn offvalue1 = (digitalRead, ledPin);

Overigens: In een loop is er geen laatste stukje omdat na het laatste statement gelijk weer wordt begonnen aan het eerste statement wellicht dat je dat over het hoofd hebt gezien?

Berichten: 10
Geregistreerd: 05 Sep 2021, 23:49

Re: loop vast

Berichtdoor hobby.bob » 03 Mei 2022, 18:08

zal proberen te verklaren,
tot aan /-=== blokkeren led/aan/knop tot dat resetknop is ingedrukt ==== werkt zoals ik het hebben wil.
op het moment offbutton1 wordt ingedrukt gaat de groene led uit rode led gaat aan., storing indicatie .
opdat moment mag groene led niet meer actief worden. totdat die gereset wordt.

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: loop vast

Berichtdoor Frits1956 » 03 Mei 2022, 18:44

Ik was het bericht nog aan het wijzigen maar dat werd geblokkeerd Dus hier maar de aanpassing:

Je declareert ledPin als een output. Het programma (de programmeur) bepaalt dus de waarde. Dan hoef je niet de waarde te lezen dus regel 59 kan in z'n geheel vervallen. Het is een goed gebruik bij de setup na de declaratie de gedeclareerde pinnen een waarde mee te geven zodat je het uitgangspunt kent.

Berichten: 68
Geregistreerd: 04 Sep 2021, 08:31

Re: loop vast

Berichtdoor RobGood » 04 Mei 2022, 07:59

Willem, Ja ik zie meerdere syntax dingetjes...verder beste nooit delays te gebruiken.
Schakelaars drukknoppen scannen dwz om de zoveel microseconden efkens testen. Dus een timertje maken.
Die inputs moeten wel een polariteit krijgen dus een pullup weerstandje van een 10k of de ingebakken pullups gebruiken.
Misschien even vermelden hoe het zou moeten werken, dat is me niet duidelijk...
Rob

Berichten: 10
Geregistreerd: 05 Sep 2021, 23:49

Re: loop vast

Berichtdoor hobby.bob » 04 Mei 2022, 12:07

//////Misschien even vermelden hoe het zou moeten werken, dat is me niet duidelijk...
Zal het nog keer proberen te vertellen, heb 2 drukknoppen 1 om led aan te zetten en de ander om uit te zetten.
de 3 drukknop, als deze wordt ingedrukt moet de aan en uit knop worden geblokkerd en 2e led rood moet gaan branden.

Berichten: 10
Geregistreerd: 05 Sep 2021, 23:49

Re: loop vast

Berichtdoor hobby.bob » 04 Mei 2022, 12:08

//////Misschien even vermelden hoe het zou moeten werken, dat is me niet duidelijk...
Zal het nog keer proberen te vertellen, heb 2 drukknoppen 1 om led aan te zetten en de ander om uit te zetten.
de 3 drukknop, als deze wordt ingedrukt moet de aan en uit knop worden geblokkerd en 2e led rood moet gaan branden.

maak gebruik van externe pullup weerstand.

Berichten: 180
Geregistreerd: 26 Aug 2015, 11:57

Re: loop vast

Berichtdoor Frits1956 » 04 Mei 2022, 17:13

Kan het zijn dat je met
Code: Alles selecteren
 //=== blokkeren led/aan/knop tot dat resetknop is ingedrukt ====
offvalue1 = digitalRead,ledPin);
if(ledPin == LOW);
digitalWrite(ledPin,HIGH);


eigenlijk bedoelt dat het een oneindige loop moet zijn waar je alleen met reset uitkomt?

Berichten: 10
Geregistreerd: 05 Sep 2021, 23:49

Re: loop vast

Berichtdoor hobby.bob » 05 Mei 2022, 10:32

zoals ik in het begin vertelde ben ik een oudere jongere die beetje aan het spelen is met arduino,
dus moet nog al de termen die gebruikt worden eiegen maken.
als met oneindige loop bedoelt dat het programma werkt zoals ik heb omschreven zeg ik ja dat is het.
voor reset bruik ik reset knop op mijn arduino bordje.

Berichten: 68
Geregistreerd: 04 Sep 2021, 08:31

Re: loop vast

Berichtdoor RobGood » 05 Mei 2022, 11:10

Duidelijk...maak eerst een beschrijving van de werking, en vul steeds meer de code in...

als voorbeeld:

Maak een timertje ipv al die delays.
unigned long scanButtons;
bool cancel; //is knop 3 ingedrukt, actief true:led2 brand. led1 uit, knoppen 1 en 2 doen niks false: led2 uit led1 volgt knop1,2
bool oldbutton1; bool oldbutton2; bool oldbutton3;

loop{

if(millis()-scanButtons > 20){ //dit wordt iedere 20ms gedaan
scanButtons=millis();

//test buttons
//vergelijk geteste buttons met de vorige test "old buttons' 1, 2 en 3
// als veranderd.... kijk of button nu ingedrukt is....
//als ingedrukt, doe wat de knop moet doen bij indrukken
//knop1 als cancel=uit led 1 aanzetten
//knop2 led 1 uit zetten
//knop3 verwissel de waarde van cancel aan>uit uit>aan

//als cancel is aan dan led1 uit en led 2 aan, als cancel = uit beide leds uit (of oude stand van knop1 en 2 uit geheugen vissen)

//sla de geteste waardes van de knoppen op in old buttons 1~3
}

}

opmerkingen, zo worden alle gebeurtenissen uitgevoerd in een 20ms cyclus. Voor leds snel zat sneller zien we toch niet maar............ als je een tijd kritisch proces achter die noodknop hebt zitten zoals een noodstop.... moet je wat anders verzinnen knop3 dan bv op een interrupt zetten zodat dit proces direct wordt uitgevoerd als de knop wordt gedrukt...
Succes...

Volgende

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 10 gasten