Guest User

Untitled

a guest
Jan 22nd, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.14 KB | None | 0 0
  1. #include <pt.h>
  2.  
  3. static struct pt pt1, pt2;
  4. int rlpin = 6;
  5. int ledpin = 7;
  6. int pinstate[10] = {0, 0, 0 , 0, 0, 0, 0, 0, 0, 0};
  7. unsigned long chrono[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  8. int count = 0;
  9. void setup() // exucute au lancement du programme
  10. {
  11.   pinMode(ledpin, OUTPUT); // Init
  12.   pinMode(rlpin, OUTPUT);
  13.   pinMode(btpin, INPUT);
  14.   PT_INIT(&pt1);
  15.   PT_INIT(&pt2);
  16.   //digitalWrite(ledpin, pinstate[ledpin]);
  17.  
  18. }
  19.  
  20. int timer_expired(int n, int timeout){
  21.     return (millis() - chrono[n]) >= ( timeout * 1000);
  22. }
  23.  
  24. void timer_set(int n){
  25.     chrono[n] = millis(); // millis() renvoit l'uptime en ms.
  26. }
  27.  
  28. void toggle(int pin)
  29. {
  30.     pinstate[pin] ^= 1;  
  31.     digitalWrite(pin, pinstate[pin]);
  32. }
  33.  
  34. PT_THREAD(onoff(struct pt *pt, int pin, int delay1, int delay2))
  35. {
  36.     PT_BEGIN(pt);
  37.     while(1)
  38.     {
  39.         PT_WAIT_UNTIL(pt, pinstate[pin] == 0 && timer_expired(pin, delay2)); // pin utilisé comme ident pr chrono[]
  40.         toggle(pin);
  41.         timer_set(1);
  42.         PT_WAIT_UNTIL(pt, pinstate[pin] == 1 && timer_expired(pin, delay1));
  43.         toggle(pin);
  44.         timer_set(1);
  45.     }
  46.     PT_END(pt);
  47. }
  48.  
  49. void loop() // boucle while (1)
  50. {
  51.     onoff(&pt1, rlpin, 3, 5);
  52. }
Add Comment
Please, Sign In to add comment