Guest User

Untitled

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