Плавная подача dc напряжения

Asmartex
Offline
Зарегистрирован: 31.10.2013

Добрый день. Пытаюсь собрать устройство плавной подачи напряжения на arduino с использованием шим выхода + возможность регулировки потенциометром. Не удается сделать плавный прирост до значения потенциометра. Происходит резкое включение. Подскажите в чем ошибка?

Вот код

int brightness = 0;
int fadeAmount = 1;    
int pin = A5;
int value;

void setup()  {
  delay (3000);
  pinMode(9, OUTPUT);
  Serial.begin(9600);
}
 
void loop()  {
  Serial.println(brightness);
  analogWrite(9, brightness);   
  
  value = analogRead(pin);
  value /=4;
   
   brightness = brightness + fadeAmount;
   if (brightness = value) {
    fadeAmount = 0 ;
  } 
}    

 

maksim
Offline
Зарегистрирован: 12.02.2012

Задержку в loop добавьте.

Asmartex
Offline
Зарегистрирован: 31.10.2013
int brightness = 0;
int fadeAmount = 1;    
int pin = A5;
int value;
int pass;

void setup()  {
  delay (3000);
  pinMode(9, OUTPUT);
  Serial.begin(9600);
}
 
void loop()  {
  Serial.println(brightness);
  analogWrite(9, brightness);   

  value = analogRead(pin);
  value /=4;
  
   brightness = brightness + fadeAmount;
   if (brightness = value) {
    fadeAmount = 0 ;
  } 
  delay(50);
}

не помогло, плавного нарастания все равно нет

step962
Offline
Зарегистрирован: 23.05.2011

Почитайте об операторах = и ==. После этого приглядитесь к строке 21.

Asmartex
Offline
Зарегистрирован: 31.10.2013

step962,Спасибо за помощь!

Значение растет до значения потенциометра и остонавливается. Как теперь добавить прерывание, чтобы уже после начала вращения потенциометра , управление переходило на него.  Вот код

int brightness = 0;
int fadeAmount = 1;   
int pin = A2;
int value;
byte intPin = 0;
byte NPNpin = 9;

void setup()  {
  delay (3000);
  attachInterrupt(0, resist, LOW);
  pinMode(NPNpin, OUTPUT);
  Serial.begin(9600);
}

void resist()
{
value = analogRead(pin);
value /=4;
analogWrite(NPNpin, value);  
  delay(50);
}

void loop()  {
  Serial.println(brightness);
  analogWrite(NPNpin, brightness);  
 
  value = analogRead(pin);
  value /=4;
   
   brightness = brightness + fadeAmount;
   if (brightness == value) {
    fadeAmount = 0 ;
     } 
   delay(50);
}

 Но так управление сразу переходит к потенциометру.