Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LowPower.h>
- //define pin
- #define PWM_pin 10 // PWM jel képzés
- #define ON1_pin 3 // DigitalON 1 Sebesseg
- #define ON2_pin 4 // DigitalON 2 Sebesseg
- #define ON3_pin 5 // DigitalON 3 Sebesseg
- #define Relay_pin 8 // Relé pin
- //define konstans
- int basePWM = 0;
- int targetPWM = 0;
- int currentSpeed = 0;
- int sleepState = 0;
- //sebesség (0-255), 50% -> 80% -> 100%
- int PWMspeed0 = 0;
- int PWMspeed1 = 128;
- int PWMspeed2 = 200;
- int PWMspeed3 = 255;
- void setup() {
- // set pin type
- pinMode (Relay_pin, OUTPUT);
- pinMode (ON1_pin, INPUT_PULLUP);
- pinMode (ON2_pin, INPUT_PULLUP);
- pinMode (ON3_pin, INPUT_PULLUP);
- pinMode (PWM_pin, OUTPUT);
- // Start serial
- Serial.begin (9600);
- // elso inditasnal a rele ki lesz kapcsolva
- digitalWrite(Relay_pin, HIGH);
- // Alvo allapot kikapcsol
- sleepState = 0;
- currentSpeed = 0;
- }
- void wakeUp()
- {
- // Just a handler for the pin interrupt.
- }
- void loop() {
- //par dolog alvashoz
- sleepState = 0;
- attachInterrupt(0, ON1_pin, HIGH);
- //nem akarjuk minden ciklusban kapcsolni a relét ezért megjegyezzük a sebességet
- //és csak akkor kapcsoljuk ha eltérő
- //függvények a relé kapcsolására és a PWM szint beállítására attol függően melyik PIN magas
- if ((digitalRead(ON1_pin)== LOW) && (currentSpeed != 1)) {
- currentSpeed = 1;
- digitalWrite(Relay_pin, LOW);
- targetPWM = PWMspeed1;
- } else if ((digitalRead(ON2_pin)== LOW) && (currentSpeed != 2)){
- currentSpeed = 2;
- digitalWrite(Relay_pin, LOW);
- targetPWM = PWMspeed2;
- } else if ((digitalRead(ON3_pin)== LOW) && (currentSpeed != 3)){
- currentSpeed = 3;
- digitalWrite(Relay_pin, LOW);
- targetPWM = PWMspeed3;
- } else if ((digitalRead(ON1_pin)== HIGH) && (digitalRead(ON2_pin)== HIGH) && (digitalRead(ON3_pin)== HIGH) && (currentSpeed != 0)){
- currentSpeed = 0;
- digitalWrite(Relay_pin, HIGH);
- targetPWM = PWMspeed0;
- }
- if (currentSpeed == 1) {
- Serial.println("Pin 3 ON, Speed 50%");
- } else if (currentSpeed == 2) {
- Serial.println("Pin 4 ON, Speed 80%");
- } else if (currentSpeed == 3) {
- Serial.println("Pin 5 ON, Speed 100%");
- } else if (currentSpeed == 0) {
- Serial.println("All Pin OFF, Speed 0%");
- }
- //Funkcio a motor felpörgetésére vagy lepörgetésére
- if ((basePWM != targetPWM) && (basePWM < targetPWM) && (currentSpeed != 0)){
- for (int i = basePWM; i <= targetPWM; i++) {
- analogWrite(PWM_pin, i);
- delay(2);
- }
- basePWM == targetPWM;
- } else if ((basePWM != targetPWM) && (basePWM > targetPWM) && (currentSpeed != 0)){
- for (int i = basePWM; i >= targetPWM; i--) {
- analogWrite(PWM_pin, i);
- delay(2);
- }
- basePWM == targetPWM;
- }
- //Elszamolunk 5ig, és ha nem változik semmi alvoba rakjuk az arduino-t.
- //Ha alszik interrupt segitsegevel felebreszthetjuk a pin 3-on (elso sebesseg)
- //amig 5ig szamol nem tudjuk ujra elinditani a porszivot
- //if ((currentSpeed == 0) && (sleepState == 0)) {
- // for (int i = 1; i <= 5; i++) {
- // delay(100);
- //}
- //sleepState = 1;
- //Serial.println("Sleep mode...");
- //LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
- //}
- //
- ////nem aludtunk el
- //detachInterrupt(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement