저비용으로 간단하게 어디에서든 가능한

arduino

아두이노 나노로 LED 여러개 제어

작성자
T
작성일
2022-11-14 05:12
조회
152


  • 결선도

PFdBUBCIGEqplL1BNs-R2PgvVxWqbCX0kc7gaOMzLKvZ5gYiRpv_8Y9pc6kvVhhu0ygHAKvQHPTgxYJ4-KLVk0JGLKUuwnbcEjBf1mmBNqw-mwxFl6qvvY_HDXi-tGfaRBewI19E5ZjJLr_32TIvINqMcvHyuuAS-P_CIBsAyVfzax67bHOyDZjcrXpUmg

  • 입출력

입력

출력

실습내용


LED

다양한 방식으로 연결된 LED가 켜짐


  • 준비물

준비물

수량

아두이노 (나노)

1

브레드보드

1

저항(220k)

12

LED

12

점퍼케이블

25


  • 코딩

int pwm_pins[] = {3, 5, 6, 9, 10, 11};

int binary_pins[] = {2, 4, 7, 8, 12, 13};

int pwm_intervals[] = {1500, 2500, 1900, 1000, 3000, 2000};

int binary_duration[] = {1100, 1300, 1150, 2000, 800, 4500};

long time_left_pwm[] = {0, 0, 0, 0, 0, 0};

long time_left_binary[] = {0, 0, 0, 0, 0, 0};

long pwm_time_steps[6];

int pwm_values[] = {0, 0, 0, 0, 0, 0};

int pwm_offset[] = {1, 1, 1, 1, 1, 1};

boolean binary_high[] = {true, true, true, true, true, true};

long last_time = 0;

long time_elapsed = 0;

 

void setup() {

  for (int i = 0; i < 6; i++) {

    pinMode(pwm_pins[i], OUTPUT);

    pinMode(binary_pins[i], OUTPUT);

    pwm_time_steps[i] = int(pwm_intervals[i] / 255);

    time_left_pwm[i] = pwm_time_steps[i];

  }

  last_time = millis();

}

 

void loop() {

  time_elapsed = millis() - last_time;

  last_time = millis();

 

  for (int i = 0; i < 6; i++) {

    digitalWrite(binary_pins[i], binary_high[i]);

    time_left_binary[i] = time_left_binary[i] - time_elapsed;

    if (time_left_binary[i] <= 0) {

      binary_high[i] = !binary_high[i];

      time_left_binary[i] = binary_duration[i];

    }

  }

 

  for (int i = 0; i < 6; i++) {

    analogWrite(pwm_pins[i], pwm_values[i]);

    time_left_pwm[i] = time_left_pwm[i] - time_elapsed;

    if (time_left_pwm[i] < 0) {

      pwm_values[i] = pwm_values[i] + pwm_offset[i];

      time_left_pwm[i] = pwm_time_steps[i];

    }

    if (pwm_values[i] <= 0 || pwm_values[i] >= 255) {

      pwm_offset[i] = pwm_offset[i] * (-1);

    }

  }

}

 

전체 0

©2021 (주)지능디자인. ALL RIGHTS RESERVED.