#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);
*/
}