Advertisement
Guest User

Roleta

a guest
Jan 19th, 2019
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.22 KB | None | 0 0
  1. #define BLYNK_PRINT Serial
  2. #define pin_nadajnik D2  //Definicja pinu, do którego podłączamy nadajnik (pin TRIG)
  3. #define pin_odbiornik D3 //Definicja pinu, do którego podłączamy odbiornik (pin ECHO)
  4.  
  5. #include <ESP8266WiFi.h>
  6. #include <BlynkSimpleEsp8266.h>
  7.  
  8. char auth[] = "fc67244c210f4c4880084b80772b59c1";
  9. char ssid[] = "v30Lukasz";
  10. char pass[] = "qwerty123";
  11. int rozwijanie, zwijanie, cel, odleglosc; //Zmienna przechowująca odległość
  12. long czas_impulsu = 0;  //Zmienna przechowująca czas trwania impulsu na pinie ECHO
  13.  
  14. uint8_t wire1 = D8;
  15. uint8_t wire2 = D7;
  16. uint8_t wire3 = D6;
  17. uint8_t wire4 = D5;
  18.  
  19. const uint16_t _delay = 2; /* delay in between two steps. minimum delay more the rotational speed */
  20.  
  21. WidgetLCD lcd(V1);
  22.  
  23. BLYNK_WRITE(V4)
  24. {
  25.   cel = param.asInt();
  26. }
  27.  
  28. BLYNK_WRITE(V5)
  29. {
  30.   rozwijanie = param.asInt();
  31. }
  32.  
  33. BLYNK_WRITE(V6)
  34. {
  35.   zwijanie = param.asInt();
  36. }
  37.  
  38. void sequence(bool a, bool b, bool c, bool d) { /* four step sequence to stepper motor */
  39.   digitalWrite(wire1, a);
  40.   digitalWrite(wire2, b);
  41.   digitalWrite(wire3, c);
  42.   digitalWrite(wire4, d);
  43.   delay(_delay);
  44. }
  45. void setup()
  46. {
  47.   pinMode(wire1, OUTPUT); /* set four wires as output */
  48.   pinMode(wire2, OUTPUT);
  49.   pinMode(wire3, OUTPUT);
  50.   pinMode(wire4, OUTPUT);
  51.   // Debug console
  52.   Serial.begin(9600);
  53.   pinMode(pin_nadajnik, OUTPUT);
  54.   pinMode(pin_odbiornik, INPUT);
  55.   Blynk.begin(auth, ssid, pass);
  56.   liczOdleglosc();
  57.   lcd.clear();
  58.   lcd.print(0, 0, "D Z I E N");
  59.   lcd.print(0, 1, "D O B R Y :)");
  60. }
  61. void liczOdleglosc() {
  62.   digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
  63.   delayMicroseconds(10); //Czas trwania 10us
  64.   digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
  65.   czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
  66.   odleglosc = czas_impulsu / 58; //Wyznaczenie odległości w cm
  67.   Serial.println(odleglosc);
  68. }
  69. void loop() {
  70.  
  71.   if (rozwijanie == 1 && odleglosc > 2 && ((12 - cel) < odleglosc))
  72.   {
  73.     lcd.clear();
  74.     lcd.print(0, 0, "ROZWIJANIE");
  75.     zwijanie = 0;
  76.     Blynk.virtualWrite(V6, zwijanie);
  77.     while (odleglosc > (12 - cel))
  78.     {
  79.       liczOdleglosc();
  80.       Serial.println(rozwijanie);
  81.       sequence(HIGH, HIGH, HIGH, LOW);
  82.       sequence(HIGH, HIGH, LOW, HIGH);
  83.       sequence(HIGH, LOW, HIGH, HIGH);
  84.       sequence(LOW, HIGH, HIGH, HIGH);
  85.     }
  86.     lcd.clear();
  87.     if (odleglosc == 2) {
  88.       lcd.print(0, 0, "ROLETA");
  89.       lcd.print(0, 1, "ROZWINIETA");
  90.     } else
  91.     {
  92.       String x = String("ROZWINIETA W ") + cel*10 + "%";
  93.       lcd.print(0, 0, "ROLETA");
  94.       lcd.print(0, 1, x);
  95.     }
  96.     sequence(LOW, LOW, LOW, LOW);
  97.   }
  98.   if (zwijanie == 1 && odleglosc < 12) {
  99.     lcd.clear();
  100.     lcd.print(0, 0, "ZWIJANIE");
  101.     rozwijanie = 0;
  102.     Blynk.virtualWrite(V5, rozwijanie);
  103.     while (odleglosc < 12)
  104.     {
  105.       liczOdleglosc();
  106.       Serial.println(zwijanie);
  107.       sequence(LOW, HIGH, HIGH, HIGH);
  108.       sequence(HIGH, LOW, HIGH, HIGH);
  109.       sequence(HIGH, HIGH, LOW, HIGH);
  110.       sequence(HIGH, HIGH, HIGH, LOW);
  111.     }
  112.     lcd.clear();
  113.     lcd.print(0, 0, "ROLETA");
  114.     lcd.print(0, 1, "ZWINIETA");
  115.     sequence(LOW, LOW, LOW, LOW);
  116.   }
  117.   Blynk.run();
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement