Điện tử vuotlen.com

Arduino Chiết áp (Potentiometer)

Arduino Chiết áp (Potentiometer)

Biến trở có bản chất là một bộ chuyển đổi điện cơ vì nó hoạt động bằng cách trượt một tiếp điểm trên một phần tử điện trở. Khi biến trở được sử dụng như một bộ chia bằng cách sử dụng 3 cực thì nó được gọi là một chiết áp. Khi chỉ có hai cực, nó hoạt động như một điện trở biến đổi và được gọi là biến trở.

Khi thay đổi độ sáng của LED phải dùng chân Analog có tín hiệu tuần tự, còn Digital chỉ có tín hiệu số (nhị phân).

Dùng các chân có hỗ trợ xung PWD.

1. LED tự sáng và tự tắt:

Protetus:

Arduino IDE:

int LED = 3;

int dosang = 0;

int muctang = 5;

 

void setup() {

  // put your setup code here, to run once:

  pinMode(LED, OUTPUT);

  Serial.begin(9600);

}

 

void loop() {

  // put your main code here, to run repeatedly:

  analogWrite(LED, dosang);

 

  dosang = dosang + muctang;

  if(dosang == 0 || dosang == 255) muctang  = -muctang;

  Serial.println(dosang);

  delay(100);

}

2. Dùng chiết áp để thay đổi sáng tối LED:

Proteus:

Arduino IDE:

int LED = 3;

int bientro =  A0;

void setup() {

  // put your setup code here, to run once:

  pinMode(LED, OUTPUT);

  Serial.begin(9600);

}

 

void loop() {

  // put your main code here, to run repeatedly:

  int mucsang = map(analogRead(bientro), 0, 1023, 0, 255);

  analogWrite(LED, mucsang);

  Serial.println(mucsang);

  delay(100);

}

3. Dùng button tăng giảm sáng tối LED:

Proteus:

Arduino IDE:

int LED = 3;

int nuttang = 4;

int nutgiam = 5;

int dosang = 0;

 

void setup() {

  // put your setup code here, to run once:

  pinMode(LED, OUTPUT);

  pinMode(nuttang, INPUT);

  pinMode(nutgiam, INPUT);

  Serial.begin(9600);

}

 

void ktranutnhan(){

  int nut1 = digitalRead(nuttang);

  int nut2 = digitalRead(nutgiam);

  if(nut1 == HIGH){

    dosang = dosang +5;

    if(dosang >= 255) dosang = 255;

  }

 

   if(nut2 == HIGH){

    dosang = dosang -5;

    if(dosang <= 0) dosang = 0;

  }

 

}

 

void loop() {

  // put your main code here, to run repeatedly:

  ktranutnhan();

  analogWrite(LED, dosang);

  Serial.println(dosang);

  delay(100);

}