Advertisement
skioe

Индивидуальное задание ПСВУ

Jun 2nd, 2021
1,245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.62 KB | None | 0 0
  1. #include <LiquidCrystal.h> // Подключаем библиотеки
  2. #include <Servo.h>
  3.  
  4. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  5. Servo servo;
  6.  
  7. int timer = 1; // Указываем все необходимые переменные
  8. int parts = 5;
  9. float turn = 1;
  10. int position = 0;
  11. int counter = 0;
  12. int data_rcvd = 0;
  13. bool is_working = true;
  14.  
  15.  
  16. void setup()
  17. {
  18.   Serial.begin(9600);
  19.   while (!Serial) // Ожидаем инициализации UART
  20.   {}
  21.  
  22.   servo.attach(13);
  23.   lcd.begin(16, 2);
  24.   menu();
  25.   lcd.print("Hey! Look at the");
  26.   lcd.setCursor(0,1);
  27.   lcd.print(" console!");
  28.   lcd.home();
  29. }
  30.  
  31. void loop()
  32. {
  33.   if(Serial.available())
  34.   {
  35.     data_rcvd = Serial.parseInt(); // Принимаем число
  36.     switch (data_rcvd)
  37.     {
  38.       case 0:
  39.       {
  40.         turn = 180/parts; // Рассчитываем кол-во градусов
  41.         servo.write(0);
  42.         lcd.clear();
  43.         lcd.print("Working!");
  44.         while (is_working == true)
  45.         {
  46.           delay(timer * 1000);
  47.           position += turn;
  48.           servo.write(position);
  49.           counter++;
  50.           if (counter >= parts)
  51.           {
  52.             lcd.clear();
  53.             lcd.print("Done! The bowl "); // Сообщение о конце работы
  54.             lcd.setCursor(0,1);
  55.             lcd.print(" must be empty!");
  56.             lcd.home();
  57.          
  58.             break;
  59.           }
  60.         }    
  61.         menu();
  62.         break;
  63.       }
  64.      
  65.       case 1:
  66.       {
  67.         is_working = true;
  68.         Serial.println("\nEnter time in seconds for mechanism to turn\n"); // Просим ввести таймер
  69.         while (is_working == true){
  70.           if(Serial.available())
  71.           {
  72.             data_rcvd = Serial.parseInt();
  73.             timer = data_rcvd;
  74.             break;
  75.           }
  76.         }
  77.         menu();
  78.         break;
  79.       }
  80.      
  81.       case 2:
  82.       {
  83.         is_working = true;
  84.         Serial.println("\nEnter parts of the mechanism\n"); // Просим ввести части механизма
  85.         while (is_working == true){
  86.           if(Serial.available())
  87.           {
  88.             data_rcvd = Serial.parseInt();
  89.             parts = data_rcvd;
  90.             break;
  91.           }
  92.         }
  93.         menu();
  94.         break;
  95.       }
  96.     }
  97.   }
  98. }
  99.  
  100. void menu(){ // Функция, отображающая меню
  101.   Serial.println("\nHello there!\nHere are available codes:\n");
  102.   Serial.println("0 - start\n1 - timer\n2 - parts\n");
  103.   Serial.print("Timer is ");
  104.   Serial.print(timer);
  105.   Serial.print(" and parts is ");
  106.   Serial.print(parts);
  107.   Serial.print("\n");
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement