Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Definicje zmiennych:
  2. const int IRpin = A0;                                
  3. int wypelnienie = 0;
  4. int zmiana = 5;
  5.                    
  6. //Definicje pinów, stany początkowe:
  7. void setup() {
  8.   pinMode(6, OUTPUT);                                        //Pin 6 jako wyjście                  : przekaźnik do elektrozaworu
  9.   pinMode(7, INPUT_PULLUP);                                  //Pin 7 jako wejście z podciągnięciem : czujnik obecności
  10.   pinMode(8, OUTPUT);                                        //Pin 8 jako wyjście                  : sterowanie silnikiem
  11.   pinMode(10, OUTPUT);                                       //Pin 10 jako wyjście                 : PWM dioda
  12.   digitalWrite(8, HIGH);                                     // Wysoka wartość początkowa dla pinu 8  
  13.   digitalWrite(6, HIGH);                                     // Wysoka wartość początkowa dla pinu 6
  14.   }
  15.  
  16. //Główna pętla programu:
  17. void loop() {
  18.   analogWrite(10, wypelnienie);                             //Na początku pętli przypisujemy wartość wypełnienia impulsu dla sterowania diody
  19. float volts = analogRead(IRpin)* 0.0048828125;              //Obliczenia związane z wyskalowaniem wartości analogowej wysyłanej przez sensor na cm
  20. float distance=32*pow(volts,-1.10);                         //Obliczenia zwiazane z wyskalowaniem wartości analogowej wysyłanej przez sensor na cm
  21.  
  22. if (digitalRead(7) == HIGH) {                               // Jeśli czujnik zbliżeniowy nie widzi elementu  
  23.  
  24.    digitalWrite(8, HIGH);                                   // Załączamy silnik
  25.  
  26. //Sterowanie diodą:
  27. if (wypelnienie < 255) {                                    // Jeśli zmienna wypełnienie jest mniejsze od 100%
  28.     wypelnienie = wypelnienie + zmiana;                     // Zwiększamy zmienną wypełnienie o wartość stałej zmiana
  29. }
  30. else {
  31.     wypelnienie = 0;                                        //Jeśli wypełnienie jest większe od 100%, to wracamy na początek
  32. }
  33.     delay(50);                                              //Opóźnienie, aby była widoczna zmiana natężenia światła diody
  34. }
  35. else{                                                       // Jeśli czujnik zbliżeniowy widzi element
  36.     analogWrite(10, 0);                                     // Przypisz wartość wyjścia 10 na 0 - wyłączamy diodę
  37.     digitalWrite(8, LOW);                                   // Wyłącz silnik
  38. if (distance < 20)                                          // Jeśli dystans jest miniejszczy od 20cm
  39.     {
  40.     delay(3000);                                            // Poczekaj 3 s
  41.     digitalWrite(8, HIGH);                                  // Załącz silnik
  42.     delay(2000);                                            // Poczekaj 2 s - czekamy aż element zjedzie z czujnika
  43.     }
  44. else                                                        // Jeśli dystans jest większy od 20 cm
  45. {
  46.     delay(3000);                                            // Poczekaj 3s
  47.     digitalWrite(6, LOW);                                   // Załącz cewkę elektrozaworu
  48.     delay(3000);                                            // Poczekaj na wysów siłownika (3s)
  49.     digitalWrite(6, HIGH);                                  // Wyłącz cewkę elektrozaworu
  50.     delay(3000);                                            // Poczekaj na schowanie siłownika
  51.     digitalWrite(8, HIGH);                                  // Załącz silnik
  52.     delay(2000);                                            // Poczekaj 2s - czekamy aż element zjedzie z czujnika
  53. }
  54. }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement