tijd instellen

algemene C code
Berichten: 7
Geregistreerd: 15 Jul 2019, 13:17

tijd instellen

Berichtdoor guido » 15 Jul 2019, 14:16

Ik ben een nieuwe gebruiker van Arduino, heb dus geen ervaring.

Ik wilde een ledje 5sec latenbranden als ik even op een knopje druk.
Waarom werkt deze code niet?
cpp code
int knop = 2; // knop aan pin 2
int led = 13; // led aan pin 13
int toestandknop = 0; // variabele voor het lezen van de knop

void setup() {
pinMode(led, OUTPUT); // ledpin is output
pinMode(knop, INPUT); // knop is input
}

void loop() {
toestandknop = digitalRead(knop); // toestandknop is de waarde van knop
if (toestandknop == HIGH) { // controleer of de knop ingedrukt is
digitalWrite(led, HIGH); // indien ingedrukt: led aan
delay(5000);
} else
{
digitalWrite(led, LOW); // anders: led uit
}
}

Advertisement

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

Re: tijd instellen

Berichtdoor shooter » 15 Jul 2019, 14:42

Allereerst hoe kun je kijken of iets HIGH is, als het een integer is.
dus verander de HIGH eens naar 1
en als je dus een Serial.print ertussenzet kun je zien wat er gebeurt.
Verder lijkt je programma goed.
zet wel de naam van pinnen in de naam zoals pinKnop dan vergis je niet zo veel.
paul deelen
shooter@home.nl

Berichten: 7
Geregistreerd: 15 Jul 2019, 13:17

Re: tijd instellen

Berichtdoor guido » 16 Jul 2019, 08:39

shooter schreef:Allereerst hoe kun je kijken of iets HIGH is, als het een integer is.
dus verander de HIGH eens naar 1
en als je dus een Serial.print ertussenzet kun je zien wat er gebeurt.
Verder lijkt je programma goed.
zet wel de naam van pinnen in de naam zoals pinKnop dan vergis je niet zo veel.


Bedankt voor uw reactie maar toch blijft het ledje geen 5seconden branden.
Ik dacht dat die delay 5000 dat zou doen maar blijkbaar is dat toch verkeerd.

Gebruikers-avatar
Berichten: 5039
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: tijd instellen

Berichtdoor nicoverduin » 16 Jul 2019, 09:10

Hoe is die knop geschakeld? Schakel je naar GND of naar 5V?
En als je naar GND schakelt, dan moet je testen op LOW. Daarnaast moet er een weerstandje van 4K7 --10K naar de VCC gezet worden. Anders zweeft je ingang van de knop
Als je naar VCC schakelt, dan moet je testen op HIGH en moet de weerstand van de datapin naar GND gaan.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 15 Jul 2019, 13:17

Re: tijd instellen

Berichtdoor guido » 16 Jul 2019, 13:37

nicoverduin schreef:Hoe is die knop geschakeld? Schakel je naar GND of naar 5V?
En als je naar GND schakelt, dan moet je testen op LOW. Daarnaast moet er een weerstandje van 4K7 --10K naar de VCC gezet worden. Anders zweeft je ingang van de knop
Als je naar VCC schakelt, dan moet je testen op HIGH en moet de weerstand van de datapin naar GND gaan.


Ik heb een draadje van de 5V naar de drukknop.
Aan de andere kant van de drukknop heb ik een draadje pin 2 en dan een weerstand van 10Kohm naar de min.

Als ik op het knopje druk brand het ledje zolang ik het knopje ingedruk houd.
Als ik loslaat gaat het ledje onmiddelijk uit terwijl ik het eigenlijk nog 5sec wilde laten branden.

Gebruikers-avatar
Berichten: 5039
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: tijd instellen

Berichtdoor nicoverduin » 16 Jul 2019, 14:34

Bij mij ff getest met een verschil: bij mijn bordje is AAN de knop naar GND trekken. En de sketch werkt als een tierelier.
cpp code
int knop = 2; // knop aan pin 2
int led = 13; // led aan pin 13
int toestandknop = 0; // variabele voor het lezen van de knop

void setup() {
pinMode(led, OUTPUT); // ledpin is output
pinMode(knop, INPUT); // knop is input
}

void loop() {
toestandknop = digitalRead(knop); // toestandknop is de waarde van knop
if (toestandknop == LOW) { // controleer of de knop ingedrukt is
digitalWrite(led, HIGH); // indien ingedrukt: led aan
delay(5000);
} else {
digitalWrite(led, LOW); // anders: led uit
}
}


Heb je de pin 2 wel goed aangesloten op de juiste plek? pin D2 (dus de derde pin)?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 15 Jul 2019, 13:17

Re: tijd instellen

Berichtdoor guido » 16 Jul 2019, 17:37

nicoverduin schreef:Bij mij ff getest met een verschil: bij mijn bordje is AAN de knop naar GND trekken. En de sketch werkt als een tierelier.
cpp code
int knop = 2; // knop aan pin 2
int led = 13; // led aan pin 13
int toestandknop = 0; // variabele voor het lezen van de knop

void setup() {
pinMode(led, OUTPUT); // ledpin is output
pinMode(knop, INPUT); // knop is input
}

void loop() {
toestandknop = digitalRead(knop); // toestandknop is de waarde van knop
if (toestandknop == LOW) { // controleer of de knop ingedrukt is
digitalWrite(led, HIGH); // indien ingedrukt: led aan
delay(5000);
} else {
digitalWrite(led, LOW); // anders: led uit
}
}


Heb je de pin 2 wel goed aangesloten op de juiste plek? pin D2 (dus de derde pin)?


Ik snap er niets van, bij mij blijft die led geen 5sec aan, ik heb de aansluiting anders geprobeerd en ook de code aangepast.

void loop() {
toestandknop = digitalRead(knop); // toestandknop is de waarde van knop
if (toestandknop == LOW) { // controleer of de knop ingedrukt is
digitalWrite(led, HIGH); // indien ingedrukt: led aan
delay(5000);
} else {
digitalWrite(led, LOW); // anders: led uit
}
}[/code2]

Dit is mijn aansluiting: Hier zou een bijlage moeten staan.

Gebruikers-avatar
Berichten: 467
Geregistreerd: 15 Nov 2015, 11:54

Re: tijd instellen

Berichtdoor Gij Kieken » 16 Jul 2019, 18:28

Als je dan toch van LOW & HIGH houd maak dan van regel 3 eens
bool toestandknop = LOW; // variabele voor het lezen van de knop
Code: Alles selecteren
int knop = 2; // knop aan pin 2
int led = 13; // led aan pin 13
bool toestandknop = LOW; // variabele voor het lezen van de knop
 
void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT); // ledpin is output
  pinMode(knop,  INPUT_PULLUP); // knop is input
}
 
void loop() {
  toestandknop = digitalRead(knop); // toestandknop is de waarde van knop
  if (toestandknop == LOW) { // controleer of de knop ingedrukt is
    digitalWrite(led, HIGH); // indien ingedrukt: led aan
    Serial.println (toestandknop);
    delay(5000);
  } else {
    digitalWrite(led, LOW); // anders: led uit
    Serial.println (toestandknop);
    delay(2000);  // Wacht een beetje anders loopt de serial monitor direct vol
  }
}

Berichten: 7
Geregistreerd: 15 Jul 2019, 13:17

Re: tijd instellen

Berichtdoor guido » 17 Jul 2019, 08:54

Iedereen hier bedankt voor de hulp.
Ik heb vandaag alles van mijn oefenbordje verwijderd en alles opnieuw opgebouwd maar op een andere plaats.
De code heb ik gelaten zoals ik ze de eerste keer gemaakt heb.
En nu werkt de schakeling prima.

Ik vraag mij af of er misschien een foutje zit in mijn oefenbord, misschien een verbinding niet goed?

Ik kocht als beginner mijn volledig pakket bij Banggood, is dat misschien een slecht idee om dat daar te kopen?

Enfin, nu werkt de schakeling prima.

Berichten: 7
Geregistreerd: 15 Jul 2019, 13:17

Re: tijd instellen

Berichtdoor guido » 17 Jul 2019, 08:58

Gij Kieken schreef:Als je dan toch van LOW & HIGH houd maak dan van regel 3 eens
bool toestandknop = LOW; // variabele voor het lezen van de knop
Code: Alles selecteren
int knop = 2; // knop aan pin 2
int led = 13; // led aan pin 13
bool toestandknop = LOW; // variabele voor het lezen van de knop
 
void setup() {
  Serial.begin(9600);
  pinMode(led, OUTPUT); // ledpin is output
  pinMode(knop,  INPUT_PULLUP); // knop is input
}
 
void loop() {
  toestandknop = digitalRead(knop); // toestandknop is de waarde van knop
  if (toestandknop == LOW) { // controleer of de knop ingedrukt is
    digitalWrite(led, HIGH); // indien ingedrukt: led aan
    Serial.println (toestandknop);
    delay(5000);
  } else {
    digitalWrite(led, LOW); // anders: led uit
    Serial.println (toestandknop);
    delay(2000);  // Wacht een beetje anders loopt de serial monitor direct vol
  }
}


Ik heb uw code ook geprobeerd en deze werkt ook prima na het heropbouwen van mijn opstelling op een andere plaats op mijn bordje.
Leuk om het ook eens op een andere manier te doen.

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten