Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int POTT = 0; // Инициализация переменной для хранения значений с потенциометра
- int SPEED = 0; // Инициализация переменной для хранения значений скорости
- #define PWM_PB0 0 // Инициализация ножки Микроконтроллера для левого P-канального транзистора
- #define PWM_PB1 1 // Инициализация ножки Микроконтроллера для правого P-канального транзистора
- #define D_PB2 2 // Инициализация ножки Микроконтроллера для левого N-канального транзистора
- #define D_PB3 3 // Инициализация ножки Микроконтроллера для правого N-канального транзистора
- #define POT_PB4 A2 // Инициализация ножки Микроконтроллера для считывания напряжения с потенциометра
- void setup() { // Настройка выходов микроконтроллера
- pinMode(PWM_PB0,OUTPUT); // Настройка пина микроконтроллера на выход(управление внешними устройствами)
- pinMode(PWM_PB1,OUTPUT); // Настройка пина микроконтроллера на выход(управление внешними устройствами)
- pinMode(D_PB2,OUTPUT); // Настройка пина микроконтроллера на выход(управление внешними устройствами)
- pinMode(D_PB3,OUTPUT); // Настройка пина микроконтроллера на выход(управление внешними устройствами)
- pinMode(POT_PB4,INPUT); // Настройка пина микроконтроллера на вход(считывание внешних сигналов)
- }
- void loop() { // Бесконечный цикл
- POTT = analogRead(POT_PB4); // Считывание напряжения с потенциометра (0...5Вольт) в переменную POTT (0..1023)
- if(POTT>480 && POTT<540){ // Остановка двигателя при нахождении потенциометра в середине
- digitalWrite(D_PB2,LOW); // Подача низкого сигнала на все базы транзисторов
- digitalWrite(D_PB3,LOW); // Подача низкого сигнала на все базы транзисторов
- digitalWrite(PWM_PB1,LOW); // Подача низкого сигнала на все базы транзисторов
- digitalWrite(PWM_PB0,LOW); // Подача низкого сигнала на все базы транзисторов
- }
- if(POTT>=0 && POTT<=480) { // Вращение влево при повороте потенциометра против часовой стрелки
- digitalWrite(D_PB2,HIGH); // Включение транзисторов по первой диагонали и выключение по другой.
- digitalWrite(D_PB3,LOW); // Включение транзисторов по первой диагонали и выключение по другой.
- digitalWrite(PWM_PB0,LOW); // Включение транзисторов по первой диагонали и выключение по другой.
- SPEED = map(POTT, 0, 480, 255, 0); // Приведение считанных значений с потенциометра в пределы скважности ШИМ (0..255) при помощи функции map.
- analogWrite(PWM_PB1,SPEED); // Передача Широтно-Импульсной-Модуляции на базу левого P-канального транзистора для изменения скорости
- }
- if(POTT>=540 && POTT<=1023) { // Вращение вправо при повороте потенциометра по часовой стрелки
- digitalWrite(D_PB3,HIGH); //Включение транзисторов по второй диагонали и выключение по другой.
- digitalWrite(D_PB2,LOW); //Включение транзисторов по второй диагонали и выключение по другой.
- digitalWrite(PWM_PB1,LOW); //Включение транзисторов по второй диагонали и выключение по другой.
- SPEED = map(POTT, 540, 1023, 0, 255); // Приведение считанных значений с потенциометра в пределы скважности ШИМ (0..255) при помощи функции map.
- analogWrite(PWM_PB0,SPEED); // Передача Широтно-Импульсной-Модуляции на базу правого P-канального транзистора для изменения скорости
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement