CAFE

한국직업능력교육원

[Arduino 실습 33] PWM Servo Motor, ADC VR, JOY 제어해 보기

작성자송명규|작성시간26.06.16|조회수22 목록 댓글 0

#define R_led  3

#define G_led  5

#define B_led  6

 

#include <value.h>

#include <My_Arduino_GPIO_Lib_V1_8.h>

#include <TM1637Display.h>

#include <Servo.h>

 

// TM1637

#define CLK   12

#define DIO   7

#define sm_pin  11

 

TM1637Display song(CLK, DIO);

Servo s_motor;

 

uint8_t rx_buf[20];

uint8_t rx_cnt = 0;

 

void serialEvent()

{

  int buf;

 

  buf = Serial.read();

  if(buf =='E')

   {

     fg -> rx_end_flag = 1;

     rx_cnt = 0;

   }

  else

   {

     rx_buf[rx_cnt] = buf;

     Serial.write(rx_buf[rx_cnt]); // 디버깅용

     rx_cnt++;    

   }

}

 

void setup() {

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

  pinMode(R_led, OUTPUT);

  pinMode(G_led, OUTPUT);

  pinMode(B_led, OUTPUT);

 

  pinMode(CLK, OUTPUT);

  pinMode(DIO, OUTPUT);

 

  song.setBrightness(0x07);  

 

  Serial.begin(115200);

  randomSeed(analogRead(A2));

 

  s_motor.attach(sm_pin);

 

  pinMode(A0, INPUT);

}

 

uint8_t pwm_r;

uint8_t pwm_g;

uint8_t pwm_b;

 

void loop() {

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

 

 // 실습6

 s_motor.write(map(analogRead(A0), 0, 1023, 0, 179));

 //song.showNumberDec(map(analogRead(A0), 0, 1023, 0, 179));

 //dev_printf("Joy-X= %d, Volt= %d, Joy-Y= %d Volt= %d\r\n", analogRead(A1), (5/1023) * analogRead(A1), analogRead(A2), (5/1023) * analogRead(A2));

 Serial.print("Joy-X= ");

 Serial.print(analogRead(A1));

 Serial.print(", Volt= ");

 Serial.print(0.0048875855 * analogRead(A1));

 s_motor.write(map(analogRead(A1), 0, 1023, 0, 179));

 song.showNumberDec(analogRead(A1));

 

 Serial.print(", Joy-Y= ");

 Serial.print(analogRead(A2));

 Serial.print(", Volt= ");

 Serial.println(0.0048875855 * analogRead(A2));

 




/*  

  // 실습 5 Servo Motor = 1도식이동

  for(int angle=0; angle<= 180; angle++)

  {

    s_motor.write(angle);

    song.showNumberDec(angle);

    delay(5);    

  }

 

  for(int angle=180; angle >= 0; angle--)

  {

    s_motor.write(angle);

    song.showNumberDec(angle);

    delay(5);    

  }

 // delay(1000);

*/

 

  // 실습 4 pwm

  // if(fg -> rx_end_flag == 1)

  // {

  //   fg -> rx_end_flag = 0;

 

  //   analogWrite(R_led, rx_buf[0]);

  //   analogWrite(G_led, rx_buf[1]);

  //   analogWrite(B_led, rx_buf[2]);

  // }



// 실습 3 PWM 난수출력

// analogWrite(R_led, random(0, 256));

// analogWrite(G_led, random(0, 256));

// analogWrite(B_led, random(0, 256));

// song.showNumberDec(random(0, 256));

// delay(1000);



// 실습 2 PWM 방식

// analogWrite(R_led, 255);

// analogWrite(G_led, 120);

// analogWrite(B_led, 30);



/*

  //GPIO 방식  

  ct -> cnt8 = (ct -> cnt8 > 9) ? 1 : ct -> cnt8 +1;

 

  switch((*ct).cnt8)

  {

   case 1: d_out(R_led, 1); break;

   case 2: d_out(G_led, 1); break;

   case 3: digitalWrite(B_led, 1); break;

   case 5: d_out(R_led, 1); d_out(G_led, 1), d_out(B_led, 0); break;

   case 6: d_out(R_led, 1); d_out(B_led, 1), d_out(G_led, 0);; break;

   case 7: d_out(G_led, 1); d_out(B_led, 1), d_out(R_led, 0);; break;

   case 8: digitalWrite(B_led, 1); d_out(R_led, 1);  d_out(G_led, 1); break;

   case 9: digitalWrite(B_led, 0); d_out(R_led, 0);  d_out(G_led, 0); break;

  }

  delay(500);

*/  

}

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼