Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.97 KB | None | 0 0
  1. int POTT = 0; // Инициализация переменной для хранения значений с потенциометра
  2. int SPEED = 0; // Инициализация переменной для хранения значений скорости
  3. #define PWM_PB0 0 // Инициализация ножки Микроконтроллера для левого P-канального транзистора
  4. #define PWM_PB1 1 // Инициализация ножки Микроконтроллера для правого P-канального транзистора
  5. #define D_PB2 2 // Инициализация ножки Микроконтроллера для левого N-канального транзистора
  6. #define D_PB3 3 // Инициализация ножки Микроконтроллера для правого N-канального транзистора
  7. #define POT_PB4 A2 // Инициализация ножки Микроконтроллера для считывания напряжения с потенциометра
  8.  
  9.  
  10. void setup() { // Настройка выходов микроконтроллера
  11.  
  12.  pinMode(PWM_PB0,OUTPUT); // Настройка пина микроконтроллера на выход(управление внешними устройствами)
  13.  pinMode(PWM_PB1,OUTPUT); // Настройка пина микроконтроллера на выход(управление внешними устройствами)
  14.  pinMode(D_PB2,OUTPUT); // Настройка пина микроконтроллера на выход(управление внешними устройствами)
  15.  pinMode(D_PB3,OUTPUT); // Настройка пина микроконтроллера на выход(управление внешними устройствами)
  16.  pinMode(POT_PB4,INPUT); // Настройка пина микроконтроллера на вход(считывание внешних сигналов)
  17.  
  18. }
  19.  
  20. void loop() { // Бесконечный цикл
  21.  
  22.     POTT = analogRead(POT_PB4); // Считывание напряжения с потенциометра (0...5Вольт) в переменную POTT (0..1023)
  23.    
  24.      if(POTT>480 && POTT<540){ // Остановка двигателя при нахождении потенциометра в середине
  25.     digitalWrite(D_PB2,LOW); // Подача низкого сигнала на все базы транзисторов
  26.     digitalWrite(D_PB3,LOW); // Подача низкого сигнала на все базы транзисторов
  27.     digitalWrite(PWM_PB1,LOW); // Подача низкого сигнала на все базы транзисторов
  28.     digitalWrite(PWM_PB0,LOW); // Подача низкого сигнала на все базы транзисторов
  29.       }
  30.      
  31.      if(POTT>=0 && POTT<=480) { // Вращение влево при повороте потенциометра против часовой стрелки
  32.     digitalWrite(D_PB2,HIGH); // Включение транзисторов по первой диагонали и выключение по другой.
  33.     digitalWrite(D_PB3,LOW); // Включение транзисторов по первой диагонали и выключение по другой.
  34.     digitalWrite(PWM_PB0,LOW); // Включение транзисторов по первой диагонали и выключение по другой.
  35.    
  36.     SPEED = map(POTT, 0, 480, 255, 0); // Приведение считанных значений с потенциометра в пределы скважности ШИМ (0..255) при помощи функции map.
  37.     analogWrite(PWM_PB1,SPEED); // Передача Широтно-Импульсной-Модуляции на базу левого P-канального транзистора для изменения скорости
  38.     }
  39.  
  40.       if(POTT>=540 && POTT<=1023) { // Вращение вправо при повороте потенциометра по часовой стрелки
  41.     digitalWrite(D_PB3,HIGH); //Включение транзисторов по второй диагонали и выключение по другой.
  42.     digitalWrite(D_PB2,LOW); //Включение транзисторов по второй диагонали и выключение по другой.
  43.     digitalWrite(PWM_PB1,LOW); //Включение транзисторов по второй диагонали и выключение по другой.
  44.    
  45.     SPEED = map(POTT, 540, 1023, 0, 255); // Приведение считанных значений с потенциометра в пределы скважности ШИМ (0..255) при помощи функции map.
  46.     analogWrite(PWM_PB0,SPEED); // Передача Широтно-Импульсной-Модуляции на базу правого P-канального транзистора для изменения скорости
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement