Goede opbouw programma

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. :slight_smile: :slight_smile: :slight_smile: :slight_smile:

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

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.

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.

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.

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