#define SW1 10
#define SW2 11
#define LED1 5
#define LED2 4
#define LED3 3
#define LED4 2
#define ROT A0
#define LED_R 7
#define LED_G 8
#define LED_B 9
void setup() {
pinMode(SW1, INPUT_PULLUP);
Serial.begin(9600); // 시리얼 통신 사용
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
//pinMode(LED3, OUTPUT);
//pinMode(LED4, OUTPUT);
analogReference(DEFAULT);
Serial.println("Start!");
}
void loop() {
unsigned long ct;
static unsigned long pt = 0, pt50 = -1;
static int pls = -1, ps1 = HIGH, ps2 = HIGH, c1 = 0;
int cs1, cs2;
static int p_b = 0, p_r = 0, p_g = 0;
ct = millis() / 10;
if(ct != pt) {
pt = ct;
cs1 = digitalRead(SW1);
if(cs1 != ps1) {
if(cs1 == LOW) {
c1 += 10;
if (c1 > 255) c1 = 255;
analogWrite(LED4, c1);
Serial.print(c1);
Serial.println(" SW1 on");
}
else Serial.println(" SW1 off");
ps1 = cs1;
}
cs2 = digitalRead(SW2);
if (cs2 !=ps2){
if(cs2 == LOW){
c1 -= 10;
if (c1 < 0) c1 = 0;
analogWrite(LED4, c1);
Serial.print(c1);
Serial.println(" SW2 on");
}
else Serial.println(" SW2 off");
ps2 = cs2;
}
}
ct = millis() %750;
if (ct <=500){
digitalWrite(LED2, HIGH);
}
else digitalWrite(LED2, LOW);
if(ct != pt50) {
int dv, deg, dsum, i;
float v;
static int sv = -1;
pt50 = ct;
for(i = 0, dsum = 0;i < 20;i++) {
dsum += analogRead(A0);
delayMicroseconds(10);
}
dv = dsum / 20;
v = dv / 1023. * 5.0;
deg = dv / 1023. * 360.;
if(dv != sv) {
sv = dv;
analogWrite(LED3, dv / 4);
Serial.print(dv);
Serial.print(" ");
Serial.print(deg);
Serial.print(" ");
Serial.println(v);
}
}
if(Serial.available() > 0) {
int n1, n2;
n1 = Serial.parseInt();
n2 = Serial.parseInt();
if(Serial.read() == '\n') {
Serial.print(n1);
Serial.print(' ');
Serial.println(n2);
if(n1 == 1 && n2 >=0 && n2 <= 255) {
p_r = n2;
analogWrite(LED_R, p_r);
}
else if (n1 == 2 && n2 >=0 && n2 <= 255) {
p_g = n2;
analogWrite(LED_G, p_g);
}
else if (n1 == 3 && n2 >=0 && n2 <= 255) {
p_b = n2;
analogWrite(LED_B, p_b);
}
else Serial.println("input error!");
}
}
}