Go Down

Topic: Blink Without Delay: de sketch die je beter eerst eens goed bekijkt. (Read 13121 times) previous topic - next topic

MAS3

Ik heb vragen gekregen over "BlinkWithoutDelay", wat dat betekent en waarom ik het daar telkens over heb.

Ik heb het daar zelfs over in elke post op het Arduino forum, want heb het deel van mijn handtekening (sign off) gemaakt.
Dat heb ik gedaan omdat het een heel goede manier is om tijdafhankelijke handelingen te doen, zonder alle andere handelingen te stoppen.
Want dat is wat de delay() functie doet.
Het zet vrijwel alles wat je Arduino doet stil, op de hartslag en het adem halen (bij wijze van spreken) na.

Arduino gaat vooral over leren, en daarom worden er met de Arduino IDE veel voorbeelden meegeleverd.
Om een start te maken met het leren, word er delay() toegepast.
Want bij je eerste stapjes ben je geholpen met niet al te complexe code.
Maar als je wat verder geraakt, zal de code ook al vanzelf complexer worden, en dan is 1 van de eerste hindernissen de delay() functie.
Met het voorbeeld BlinkWithoutDelay, word je een alternatief aangereikt zonder delay().
Het is vrijwel altijd beter (dus er zijn uitzonderingen) om delay() niet te gebruiken.
Alle uitleg daarover is eigenlijk al te vinden in dat voorbeeld, maar dat voorbeeld is zoals bij alle meegeleverde voorbeelden die ik heb gezien wel in het Engels.
Ik raad iedereen aan om eens die BlinkWithoutDelay sketch te bekijken.

En ermee te spelen.
Want van alleen kijken zul je weinig opsteken.
Speel er mee door wat dingen te veranderen in die sketch, en kijk wat dat voor resultaat heeft.
Dat geldt voor alle voorbeelden, want die zijn daar juist voor gemaakt.
Dan pas ben je echt aan het leren.

Je vindt die sketch in je Nederlandstalige IDE hier:
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

septillion

Of dit de juiste plaats is mag de eigenaar van dit draadje over beslissen. Maar voor de toekomst als je code plaatst is het handig dit gewoon als .ino te doen (het bestandsformaat van de Arduino IDE) ipv .txt. Opent het vanzelf in de Arduino IDE (of andere editor van de persoon) met syntax highlighting etc.

Mag ik je nog een paar tips geven?
  • Druk eens op Ctrl+T in de IDE. Zit er beter uit of niet?
  • Niet alles is een int. Je gooit nu bakken vol geheugen weg. En een Arduino is geen i7 met 64GB RAM ;)
  • Niet alle varabelen hoeven global te zijn. Bijvoorbeeld 'x' of 'memanalogxx' gebruik je maar lokaal. Grappige is zelfs, de global variabele 'x' gebruik je nooit omdat je al een lokale variabele aan maakt ;)
  • Zoek eens op hoe arrays werken. Ze zijn echt niet zo lastig
  • Zoek eens op hoe arrays werken. Ze zijn echt niet zo lastig
  • Zoek eens op hoe arrays werken. Ze zijn echt niet zo lastig
  • Zoek eens op hoe arrays werken. Ze zijn echt niet zo lastig
  • Bovenstaande is grappig als je arrays begrijpt ;)

Code: [Select]
procenta = ((analogRead(A0) - 26) / 10);
  • Hiermee maak je natuurlijk geen procenten. Dat is iets lezen, een stukje weggooien en door 10 delen. Beetje "ik geef jou 13 appels voor 10 personen, je geeft iedereen een appel en gooit er 3 weg".
    Echt naar procenten:

Code: [Select]
procenta = map(analogRead(A0), 0, 1024, 0, 101); //ja, 101 is correct!
  • Probeer overal je variabelen voor pinnen etc te gebruiken. De compiler kan al die variabelen echt niet boeien, maar ze zijn bedacht als tool voor jou. Daarmee wordt je code direct leesbaar zonder dat je extra commentaar moet toevoegen of moet zoeken.
  • Belangrijk daarbij is alleen wel dat je ook super duidelijke variabelen namen kiest en niet valt voor de "zo kort mogelijk" valkuil. Ipv 'Aki1' bijvoorbeeld 'Aki1EnablePin' (nog even vergetende over arrays).
  • Maak functies voor (bijna dezelfde) taken die je vaker uitvoert.


Ik denk dat als je bovenstaande in acht zou nemen de code een heel stuk leesbaarder wordt en je nog geen 200 regels overhoudt. :)
Use fricking code tags!!!!
I want x => I would like x, I need help => I would like help, Need fast => Go and pay someone to do the job...

NEW Library to make fading leds a piece of cake
https://github.com/septillion-git/FadeLed

Go Up