Pages: [1]   Go Down
Author Topic: Goede opbouw programma  (Read 1115 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ik was op zoek hoe ik het best een programma opbouw binnen de sketch.

Ik was een programma voor arduino aan het schrijven maar ik heb last van als ik bv een drukknop programmeer en later staat er in het programma bv een delay  dan werkt dit ook op de reactie tijd van de knop.
Ik heb al een heleboel plc geprogrammeerd en daar kan ik bepaalde stukken programma parralel naast elkaar laten werken.

Ik heb ook al zitten kijken  of ik dit eventueel op kan lossen met sub routine programmatjes maar ik weet niet of dit een goede oplossing is.

Kunne jullie mij hierbij ondersteunen of misschien een goede uitleg hoe ik dit het beste oplos.

Ik hoor het graag van jullie en alvast vriendelijk bedankt. smiley smiley smiley smiley
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 43
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je kan een interrupt aan die input-pin 'knopen'
Zoals hier:

Code:
const byte LED = 13;
const byte BUTTON = 2;

// Interrupt Service Routine (ISR)
void pinChange ()
{
  if (digitalRead (BUTTON) == HIGH)
    digitalWrite (LED, HIGH);
  else
    digitalWrite (LED, LOW);
}  // end of pinChange

void setup ()
{
  pinMode (LED, OUTPUT);  // so we can update the LED
  digitalWrite (BUTTON, HIGH);  // internal pull-up resistor
  attachInterrupt (0, pinChange, CHANGE);  // attach interrupt handler
}  // end of setup

void loop ()
{
  // loop doing nothing
}

Dit voorbeeld is afkomstig van deze website: http://www.gammon.com.au/forum/?id=11488
Een heel informatieve site met duidelijke uitleg (als je engels verstaat) gerund door Nick Gammon, een van de moderators hier.
Logged

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 386
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Even voor de duidelijkheid:

- Arduino kan geen multitasking, en kan dus enkel de dingen na elkaar uitvoeren (maar dan wel heel snel, aan 16 MHz)
- een Arduino uno heeft "slechts" 2 pins voor interrupts (onderbreken van het programma, om iets anders te doen en dan terug verder te doen)
- gebruik voor delay het principe van blinkwithoutdelay (zie de voorbeelden in arduino IDE)

dit zou je al aardig moeten helpen.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Heel erg bedankt voor jullie antwoorden.

Ik denk alleen dat er onder subroutines meer val dan ik dacht.

Ik bedoelde meer de subroutines door middel van functions zoals ze op deze pagina omschrijven.

http://www.arduino.cc/playground/Code/Function

Als ik mijn programma zo op bouw krijg ik dan een beter werking van mijn programma.

Alvast vriendleijk bedankt.

Logged

Forum Moderator
Hamme, Belgium
Offline Offline
Sr. Member
*****
Karma: 4
Posts: 386
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Als je zo werkt:

http://www.arduino.cc/playground/Code/Function

Zal je programma niet "beter" werken, maar je code zal wel overzichtelijker worden. En ... Als je hetzelfde stukje code meermaals nodig hebt, dan is dit een goede oplossing.

Je kan het zelfs nog overzichtelijker maken als je elke functie op een apart tablad zet. ( ja, je kan in Arduino IDE tabbladen maken)

Veel plezier
JO3RI
Logged


Pages: [1]   Go Up
Jump to: