Advertisement
Guest User

Untitled

a guest
Oct 18th, 2022
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LowPower.h>
  2.  
  3. //define pin
  4. #define  PWM_pin  10   // PWM jel képzés
  5. #define  ON1_pin  3    // DigitalON 1 Sebesseg
  6. #define  ON2_pin  4    // DigitalON 2 Sebesseg
  7. #define  ON3_pin  5    // DigitalON 3 Sebesseg
  8. #define  Relay_pin 8  // Relé pin
  9.  
  10. //define konstans
  11. int basePWM = 0;
  12. int targetPWM = 0;
  13. int currentSpeed = 0;
  14. int sleepState = 0;
  15.  
  16. //sebesség (0-255), 50% -> 80% -> 100%
  17. int PWMspeed0 = 0;
  18. int PWMspeed1 = 128;
  19. int PWMspeed2 = 200;
  20. int PWMspeed3 = 255;
  21.  
  22. void setup() {
  23.   // set pin type
  24.    pinMode (Relay_pin, OUTPUT);
  25.    pinMode (ON1_pin, INPUT_PULLUP);
  26.    pinMode (ON2_pin, INPUT_PULLUP);
  27.    pinMode (ON3_pin, INPUT_PULLUP);  
  28.    pinMode (PWM_pin, OUTPUT);
  29.  
  30. // Start serial
  31.    Serial.begin (9600);
  32.  
  33. // elso inditasnal a rele ki lesz kapcsolva
  34.    digitalWrite(Relay_pin, HIGH);
  35.  
  36. // Alvo allapot kikapcsol
  37.    sleepState = 0;
  38.  
  39.    currentSpeed = 0;
  40. }
  41.  
  42.  
  43. void wakeUp()
  44. {
  45.     // Just a handler for the pin interrupt.
  46. }
  47.  
  48. void loop() {
  49. //par dolog alvashoz  
  50.   sleepState = 0;
  51.   attachInterrupt(0, ON1_pin, HIGH);
  52.  
  53.  
  54. //nem akarjuk minden ciklusban kapcsolni a relét ezért megjegyezzük a sebességet
  55. //és csak akkor kapcsoljuk ha eltérő
  56.  
  57. //függvények a relé kapcsolására és a PWM szint beállítására attol függően melyik PIN magas
  58.  
  59. if ((digitalRead(ON1_pin)== LOW) && (currentSpeed != 1)) {
  60.   currentSpeed = 1;
  61.   digitalWrite(Relay_pin, LOW);
  62.   targetPWM = PWMspeed1;
  63. } else if ((digitalRead(ON2_pin)== LOW) && (currentSpeed != 2)){
  64.   currentSpeed = 2;
  65.   digitalWrite(Relay_pin, LOW);
  66.   targetPWM = PWMspeed2;  
  67. } else if ((digitalRead(ON3_pin)== LOW) && (currentSpeed != 3)){
  68.   currentSpeed = 3;
  69.   digitalWrite(Relay_pin, LOW);
  70.   targetPWM = PWMspeed3;  
  71. } else if ((digitalRead(ON1_pin)== HIGH) && (digitalRead(ON2_pin)== HIGH) && (digitalRead(ON3_pin)== HIGH) && (currentSpeed != 0)){
  72.   currentSpeed = 0;
  73.   digitalWrite(Relay_pin, HIGH);
  74.   targetPWM = PWMspeed0;  
  75. }
  76.  
  77. if (currentSpeed == 1) {
  78.   Serial.println("Pin 3 ON, Speed 50%");
  79. } else if (currentSpeed == 2) {
  80.   Serial.println("Pin 4 ON, Speed 80%");
  81. } else if (currentSpeed == 3) {
  82.   Serial.println("Pin 5 ON, Speed 100%");
  83. } else if (currentSpeed == 0) {
  84.   Serial.println("All Pin OFF, Speed 0%");
  85. }
  86.  
  87. //Funkcio a motor felpörgetésére vagy lepörgetésére
  88. if ((basePWM != targetPWM) && (basePWM < targetPWM) && (currentSpeed != 0)){
  89.   for (int i = basePWM; i <= targetPWM; i++) {
  90.     analogWrite(PWM_pin, i);
  91.     delay(2);
  92. }
  93. basePWM == targetPWM;
  94. } else if ((basePWM != targetPWM) && (basePWM > targetPWM) && (currentSpeed != 0)){
  95.     for (int i = basePWM; i >= targetPWM; i--) {
  96.     analogWrite(PWM_pin, i);
  97.     delay(2);
  98. }
  99. basePWM == targetPWM;
  100. }
  101.  
  102. //Elszamolunk 5ig, és ha nem változik semmi alvoba rakjuk az arduino-t.
  103. //Ha alszik interrupt segitsegevel felebreszthetjuk a pin 3-on (elso sebesseg)
  104. //amig 5ig szamol nem tudjuk ujra elinditani a porszivot
  105. //if ((currentSpeed == 0) && (sleepState == 0)) {
  106. //    for (int i = 1; i <= 5; i++) {
  107. //    delay(100);
  108. //}
  109. //sleepState = 1;
  110. //Serial.println("Sleep mode...");
  111. //LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  112. //}
  113. //
  114. ////nem aludtunk el
  115. //detachInterrupt(0);
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement