beste leden
ik heb een klein project waar ik een fout in de code heb.
de ralaiys gaan direct schakelen zonder invloed van de schakelaar
// met de schakelbare uitgangen sturen we de cleaner
//
// met de button starten we de software
//
const int buttonPin = 2; // nummer waar de schakelaar zit
int (buttonState) = 0; // variable van de schakelaar
void setup()
{
pinMode(2, INPUT);
pinMode(8, OUTPUT); // relaiy 1 themparatuur//
pinMode(9, OUTPUT); // relaiy 2 stomen //
pinMode(10, OUTPUT); // relaiy 3 ventileren //
pinMode(11, OUTPUT); // relaiy 4 drogen //
}
void loop(){
buttonState = digitalRead(2);
if (buttonState == HIGH) { **
** digitalWrite(8, HIGH);
** }**
else { // niet starten:
** digitalWrite(8, LOW);**
** }**
digitalWrite(8, HIGH);// start relay //
digitalWrite(8, HIGH);// verwarming aan later de echte opwarm tijd vast stellen//
delay(500);
digitalWrite(8, LOW);// op themparatuur //
delay(50);
digitalWrite(9, HIGH);// stomen aan//
delay(500);
digitalWrite(9, LOW);// stomen uit //
delay(50);
digitalWrite(10, HIGH);// ventileren aan//
delay(500);
digitalWrite(10, LOW);// ventileren uit //
delay(50);
digitalWrite(11, HIGH); // drogen aan//
delay(500);
digitalWrite(11, LOW);// drogen uit //
}
Ik hoop dat iemand me even kan helpen
alvast bedankt
Enkel de code die hier staat
if (buttonState == HIGH) {
digitalWrite(8, HIGH);
}
else { // niet starten:
digitalWrite(8, LOW);
}
wordt al dan niet uitgevoerd, afhankelijk van de toestand van buttonState.
Alles wat erna volgt wordt iedere loop altijd uitgevoerd.
snap niet zo goed wat u bedoelt
Ik denk dat je basiskennis programmeren mist, misschien toch even proberen te begrijpen wat er in je sketch staat door zelf een beetje te zoeken/leren.
Hoi michel278.
Is dit een nieuwe vraag, of pak je je project uit juni 2015 weer op ?
In ieder geval ga je wel verder met hetzelfde probleem.
En je bent de [code] [/code]
tags inmiddels alweer vergeten.
De fout die je hier maakt, word heel veel gemaakt.
In dit geval levert het geen compilatiefouten op, maar er is wel een denkfout gemaakt.
Je programma doet precies wat je de compiler vertelt.
Maar het is wat anders als je zelf verwachtte.
Als je de link hierboven volgt, zie je mogelijk wat je {fout} gedaan hebt.
Ik weet het niet zeker, want ik heb de link niet gevolgd.
Waarom dat schreeuwende vet? Zoals MAS3 al aangegeven heeft, gebruik code tags als je code post
Type
** **[code]** **
Plak je code daarachter
Type
** **[/code]** **
daarachter
Je kunt je huidige post aanpassen.
void loop(){
buttonState = digitalRead(2);
if (buttonState == HIGH) {
digitalWrite(8, HIGH);
}
else { // niet starten:
digitalWrite(8, LOW);
}
...
...
}
Het gedeelte met de puntjes wordt altijd uitgevoerd, ongeacht de stand van de schakelaar. Dat is wat @ArdLab_Gent je vertelt.
Verder is er de vraag of je een pull-up (intern of extern) of pull-down (extern) weerstand gebruikt bij de knop. Indien niet, dan zweeft de ingang van de Arduino als de knop niet is ingedrukt en zal het ene moment hoog zijn en het volgende moment misschien weer hoog of misschien wel laag enzovoorts.
beste leden
erg bedankt voor de reacties
is inderdaat oud project wist toen de oplossing ( nu helaas niet meer )
ik heb inmidels 2 hersen beroertes gehad en ik ben het inzicht kwijd
ik moet voor een bekende van mij dit project nog een keer bouwen
ben door een hdd crase al mijn vorige files kwijd geraakt met veel moeite kan ik iets terug vinden maar dat werkt niet goed
ik weet inmidels dat het met de haakjes te maken heeft maar zie niet meer waar het fout gaat
dus zou iemand het voor me willen veranderen ?
jullie weten niet wat dat zou betekeken voor mij als ik dit weer af kan maken.
Probeer dit eens :
niet zeker van , maar lijkt toch logischer
const int buttonPin = 2; // nummer waar de schakelaar zit
int (buttonState) = 0; // variable van de schakelaar
void setup()
{
pinMode(2, INPUT);
pinMode(8, OUTPUT); // relaiy 1 themparatuur//
pinMode(9, OUTPUT); // relaiy 2 stomen //
pinMode(10, OUTPUT); // relaiy 3 ventileren //
pinMode(11, OUTPUT); // drogen //
}
void loop(){
buttonState = digitalRead(2);
if (buttonState == HIGH) {
digitalWrite(8, HIGH); // volgens mij staat hier 3x hetzelfde , dus 1x zal wel genoeg zijn
digitalWrite(8, HIGH);// start relay //
digitalWrite(8, HIGH);// verwarming aan later de echte opwarm tijd vast stellen//
delay(500);
digitalWrite(8, LOW);// op themparatuur //
delay(50);
digitalWrite(9, HIGH);// stomen aan//
delay(500);
digitalWrite(9, LOW);// stomen uit //
delay(50);
digitalWrite(10, HIGH);// ventileren aan//
delay(500);
digitalWrite(10, LOW);// ventileren uit //
delay(50);
digitalWrite(11, HIGH); // drogen aan//
delay(500);
digitalWrite(11, LOW);// drogen uit //
}
else
{ // niet starten:
digitalWrite(8, LOW);
}
}
Met de {haakjes} maak je als het ware een aparte sectie binnen je code.
Ik wilde eigenlijk zeggen dat je die sectie als 1 regel kunt lezen, maar das gewoon een verkeerde uitleg.
Je doet dat met die aparte sectie, bijvoorbeeld omdat je soms een stuk code wil uitvoeren, en soms ook weer niet.
Dat is dus code die je onder voorwaarden wil uitvoeren.
Je kunt testen of er aan die voorwaarden word voldaan, bijvoorbeeld met een if, maar ook met een else (dan is de voorwaarde dat er aan de eerdere voorwaarde niet werd voldaan).
En zo zijn er meer van die tests.
In jouw code komt wat hierboven staat voor, en dankzij het commentaar en jouw fout omschrijving wat je er bij hebt staan, weet ik dat je probleem hier mee te maken heeft.
Jouw omschrijving van het probleem is dit (Bewust in iets andere woorden gevat):
Ik test de stand van de schakelaar, maar de machine start het programma toch.
Overigens ziet je code er uit alsof je meerdere stukken aan elkaar hebt geplakt, maar dan met iets 3 dubbel, en iets anders op de verkeerde plaats.
Vadeveni heeft het met het voorstel hierboven vermoedelijk wel bij het rechte eind.
Maar verzaakt erbij te vertellen wat en waarom er daar veranderd is.
Dus à la probeer dat eens en zoek het verder maar uit.
Das jammer.
Sorry, uitleg was erbijgeschreven, maar blijkbaar weggevallen bij het plakken van de code.
bij het controleren van uw schakelaar (if) zet je enkel uitgang 8 hoog.
verder niets meer.
volgende stap in uw programma (else) werkt enkel als de schakelaar laag staat.
Bij het afsluiten van de accolade sluit ook deze stap af, en alles wat daarna komt heeft niets meer te zien met uw schakelaar, maar wordt bij elke loop van het programma uitgevoerd worden.
oke erg bedankt ben er uit denk ik
Vertel,vertel...
En help anderen het ook te begrijpen.