Go Down

Topic: Blink Without Delay: de sketch die je beter eerst eens goed bekijkt. (Read 12489 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

MAS3

Deze thread gaat over blink without delay.
Niet over een modelspoor toepassing of over arrays.

Wat hier nu gebeurt heet hijacking a thread, oftewel een onderwerp kidnappen.
Dat is zelden zo bedoeld door degene die dat doet, maar wel zeer ongewenst en ongepast.

Want nu sneeuwt het originele onderwerp onder door allerlei dingen die er helemaal niets mee te maken hebben.
Dus graag je modelspoor ontwikkelingen in een ander onderwerp oppakken en het hier clean houden.
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

Go Up