Управление электродвигателем.

Слава325
Offline
Зарегистрирован: 06.04.2018

Здравствуйте, управляю электродвигателем с помощью энкодера и ШИМ создав переменную.Выяснилось что двигатель комфортно работает от 140 до 255.Ограничить переменную удалось,но хотелось бы при отсчете вниз после 140 чтобы  был 0.Какие бывают приемы программирования ,сам сделать не смог.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

if(val<140)val=0;

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Другой вопрос - Если меньше 140 двигатель работает «не комфортно», то зачем ноль??!!

Опять отвечаем на часть вопроса, где, возможно, «не нужно есть яблоко».

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А если конденсатор поставить? Может "комфортно" заработает от 110, а то и от 90?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Слава325 пишет:

сам сделать не смог.

Пытался?

Слава325
Offline
Зарегистрирован: 06.04.2018

Спасибо тем кто откликнулься.Да пыталься и не один раз все равно ничего не получается.я использоваал библиотеку для энкодера alexgyver  и по всей видимости не до конца ее понимаю.Глянте пожалуйста

#include <Wire.h>              //библиотека протокола i2c
#include <LiquidCrystal_I2C.h> 
#include <EncButton.h>         //библиотека энкодера

LiquidCrystal_I2C lcd(0x27, 16, 2);

int MotorPin = 5;// пин для управления эл.двигателя массажера
int val = 0;// переменная выхода шим


EncButton<EB_TICK, 2, 3, 4> enc;// энкодер с кнопкой <A, B, KEY>

void setup() {
    pinMode(MotorPin, OUTPUT);
    Wire.begin();
    delay(10);
    lcd.init();
    lcd.backlight();
    lcd.setCursor(0, 0);        
  }

void loop() {
  analogWrite(MotorPin, val);//шим
  lcd.setCursor(7,0);
  lcd.print(val);
  
  
  enc.tick();//метод библиотеки для энкодера
  if (enc.isRight()) {
    val += 5;
    Serial.println(val);
  }
  if (enc.isLeft()) {
    val -= 5;
    Serial.println(val);
  }
  if (enc.isRightH()) {
    val += 10;
    Serial.println(val);
  }
  if (enc.isLeftH()) {
    val -= 10;
    Serial.println(val);
    
    
  }
    if(val<100){lcd. print(" ");}//устанавливаем пробелы иначе на экране остануться нули
    if(val<10){lcd. print(" ");}
    val = constrain(val, 140, 255);//ограничиваем переменную
    if(val<141){val=0;}
    

     
  }

 

b707
Offline
Зарегистрирован: 26.05.2017

Слава325 пишет:

я использоваал библиотеку для энкодера alexgyver

библиотеки от alexgyver обьясняют на форуме имени alexgyver

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Библиотеки гивера в виду их кривости на данном форуме обычно не обсуждаются.
На форум их создателя обращайся.