TEMPS I ALEATORIETAT

🔹 Temps i pauses

  • ⏱️ delay(ms) 

    • Pausa l’execució del programa durant els mil·lisegons indicats.

    • És fàcil d’utilitzar però bloqueja l’execució, és a dir, no es fa cap altra tasca durant el retard.

    • S’utilitza en projectes senzills on no cal fer moltes coses alhora.

💡 Exemple en codi:

  • ⏱️ millis() 

    • Retorna el temps (en mil·lisegons) que fa que ha començat el programa.

    • Permet fer temporitzacions sense bloquejar l’execució.

    • Ideal per fer multitasking o controlar esdeveniments independents.

💡 Exemple en codi:

🔑 Claus per entendre-ho:

  • unsigned long és un tipus de variable de C++ que pot guardar nombres molt grans (de 0 fins a més de 4.000.000.000).
    S'utilitza perquè millis() retorna nombres que creixen constantment des que el programa s'executa, i al cap d’hores o dies pot arribar a valors molt grans. Si fos un int, podria donar errors per desbordament (overflow).

  • El codi comprova el temps sense aturar el programa. Encara que no hi ha cap delay(), el LED canvia cada segon. Mentrestant, podríem fer altres tasques dins el mateix loop().


🔹 Aleatorietat

Arduino també permet generar nombres aleatoris, útils per exemples creatius, jocs, o variabilitats:

  • randomSeed() → inicialitza la generació de nombres pseudoaleatoris a partir d’una “llavor” (seed). Si la llavor és sempre igual, la seqüència de nombres també serà sempre la mateixa. Per això es recomana utilitzar, per exemple, la lectura d’un pin analògic sense connexió (analogRead(A0)), que acostuma a donar valors que varien una mica cada vegada.

  • random(min,max) → genera un nombre aleatori entre min (inclusive) i max (exclusive).però segueix un patró matemàtic, genera un nombre pseudoaleatori.

💡 Exemple en codi:

Heu completat el 35% de la lliçó.
35%