Uitschakelvertraging

Projecten die niet passen in bovenstaande onderwerpen
Berichten: 3
Geregistreerd: 03 Feb 2019, 16:42

Uitschakelvertraging

Berichtdoor ElskeM » 03 Feb 2019, 17:09

Hoi,

Ik probeer nu om een uitschakelvertraging te maken.
Als je de knop indrukt moet het lampje aan gaan, en als je hem loslaat moet het lampje nog 10 seconden blijven branden en daarna uitgaan.

Op internet, youtube en het forum heb ik wel onderwerpen gevonden waar ik verder mee ben gekomen, maar het lukt nog steeds niet, hij gaat uit als je de knop los laat.

Dit is mijn sketch op dit moment:

const int buttonPin = 11;
const int ledPin = 5;
int buttonState = 0;
unsigned long previousMillis = 0;
const long interval = 10000;
long startTime;
long stopTime;

void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}

void loop() {
unsigned long currentMillis = millis();
buttonState = digitalRead(buttonPin);

if(buttonState ==HIGH) {
digitalWrite(ledPin, HIGH;

if (buttonState == LOW) {
startTime;
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
stopTime;
digitalWrite(ledPin, LOW);
}
}
} else {
digitalWrite(ledPin, LOW);
}
}



Waarschijnlijk werkt het niet omdat startTime en stopTime niet goed ingesteld zijn, het idee was dat startTime ervoor zorgt dat hij het aantal miliseconden (millis) gaat tellen en dat hij bij stopTime stopt met het tellen. Ik heb het ook geprobeerd zonder dit systeem maar dan blijft hij doortellen en wacht hij een paar seconden voordat hij uitgaat, in plaats van tien.


Alvast bedankt!

Advertisement

Gebruikers-avatar
Berichten: 210
Geregistreerd: 03 Sep 2013, 10:03
Woonplaats: Katwijk ZH

Re: Uitschakelvertraging

Berichtdoor baco1978 » 04 Feb 2019, 13:06

Zoals het nu staat test je in princiepe alleen maar op de status van je druktoets

dat gebeurd met deze regel : if(buttonState ==HIGH) {

zodra je de druktoets loslaat is alles wat hierbinnen valt niet relevant.

dat is ook de reden waarom de rest van je code niet werkt.

ik heb verder nog niet gekeken of de rest van je code ook klopt, dat is aan jezelf om dit uit te zoeken, loop je ergens op vast, dan kan je altijd weer vragen stellen.


verder staat er in je code nog startTime en stopTime.
leuk dat je dit vermeld, maar daar gebeurd verder ook weinig mee.

succes!
Met vriendelijke groet Arjan

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

Re: Uitschakelvertraging

Berichtdoor Koepel » 04 Feb 2019, 15:34

Ik vraag me af welke voorbeelden je hebt bekeken :?

Probeer deze eens: https://github.com/Koepel/Fun_with_millis/blob/master/millis_single_delay.ino.
Wel nog jouw "const int ledPin = 5 ;" toevoegen en daar de sketch voor aanpassen.
Heb je de knop tussen 5V en pin 11 ? Dat voorbeeld heeft de knop aan GND en pin 2. Het is gemakkelijker om de knop aan de GND te leggen, dan om die voorbeeld-sketch te wijzigen.

Als dat werkt, dan kun je voor de lol eens deze proberen: https://github.com/Koepel/Fun_with_millis/blob/master/millis_and_finite_state_machine.ino.
Je hebt dan de seriële monitor nodig. Dan kun je een led aan- en uitzetten, soms met lang ingedrukt houden en de led laten knipperen.

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

Re: Uitschakelvertraging

Berichtdoor shooter » 05 Feb 2019, 00:56

er staan wat tikfouen in je programma.
dus als de knop uit is dan moet je de huidige tijd milli() opslaan in starttijd
en je zet het ledje twee keer uit de laatste moet weg.
maak eens een schema.
paul deelen
shooter@home.nl

Berichten: 3
Geregistreerd: 03 Feb 2019, 16:42

Re: Uitschakelvertraging

Berichtdoor ElskeM » 05 Feb 2019, 18:10

Hoi,

Ik heb het geprobeerd met de link, ik heb het overgenomen maar LED_BUILTIN vervangen voor ledPin en de knop verplaatst naar ground en pin 2.

Alleen blijft het lampje steeds branden. Wat doe ik verkeerd?

Berichten: 163
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: Uitschakelvertraging

Berichtdoor FPCUser » 05 Feb 2019, 23:36

Je programma iets aangepast:

cpp code
/*
* Uitschakelvertraging
*/

/* constanten */
const byte buttonPin = 11;
const byte ledPin = 5;
const unsigned long interval = 10000;

/* variabelen */
unsigned long timerState = 0;
unsigned int buttonState = 0;

void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}

void loop() {
buttonState = digitalRead(buttonPin);

if (buttonState == 0) {
if (timerState == 0) {
} else {
if ((millis() - timerState) > interval) {
digitalWrite(ledPin, LOW);
} else {
digitalWrite(ledPin, HIGH);
}
}
} else {
timerState = millis();
}
}

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

Re: Uitschakelvertraging

Berichtdoor Koepel » 06 Feb 2019, 00:30

Mijn voorbeeld ( https://github.com/Koepel/Fun_with_millis/blob/master/millis_single_delay.ino ) heb ik aangepast, zodat het eenvoudiger is om de pin van de led te wijzigen.

Het voorbeeld van FPCUser gebruikt de waarde van millis() en de led gaat pas aan als de knop is losgelaten. Mijn voorbeeld is een soort van single shot timer in software. Kijk eens of je die voorbeelden begrijpt, en kies de sketch die je het gemakkelijkst vind. Kun je uitleggen wat er gebeurt in die sketch? De variabelen zoals "const byte" of "const int" of "unsigned long", dat kun je gewoon zo gebruiken. Het gaat er om dat je de structuur van de code ziet en begrijpt wat er gebeurt.

Als iets niet werkt, dan kun je de hele sketch weer laten zien.

Berichten: 163
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: Uitschakelvertraging

Berichtdoor FPCUser » 06 Feb 2019, 10:58

Koepel schreef:
en de led gaat pas aan als de knop is losgelaten.

Dat is vreemd. Ik heb het programma nogmaals getest en het ledje gaat toch echt aan als ik de ingangspin hoog maak.
En... blijft nog 10 sec branden nadat hij weer laag is.
Wellicht dat ik een ander type Arduino gebruik, hier een Uno rev 3.

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

Re: Uitschakelvertraging

Berichtdoor Koepel » 07 Feb 2019, 00:23

Volgens mij gebruik je het denderen van het signaal om de led aan te zetten.
Maar wat ik me eigenlijk afvraag: "Waar is de poëtische schoonheid van je sketch" ? ;)

Berichten: 3
Geregistreerd: 03 Feb 2019, 16:42

Re: Uitschakelvertraging

Berichtdoor ElskeM » 11 Feb 2019, 21:41

Hoi,

Bedankt iedereen :D! Het werkt nu allemaal!
Nogmaals bedankt voor iedereen die heeft tips heeft gegeven waarmee ik verder ben gekomen!

Terug naar Overige projecten

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 18 gasten