Skip to content

Instantly share code, notes, and snippets.

@nmatsui
Created May 7, 2012 09:05
Show Gist options
  • Save nmatsui/2626826 to your computer and use it in GitHub Desktop.
Save nmatsui/2626826 to your computer and use it in GitHub Desktop.
arduinoのソース
#define R_PIN 8
#define G_PIN 3
#define B_PIN 2
#define F_R_PIN 11
#define F_G_PIN 9
#define F_B_PIN 10
#define F_C_PIN 12
#define F_R_TH 180
#define F_G_TH 230
#define F_B_TH 180
const int R_MASK = 1;
const int G_MASK = 2;
const int B_MASK = 4;
const int F_R_MASK = 16;
const int F_G_MASK = 32;
const int F_B_MASK = 64;
int recv;
int toggleLED(int pin, int mask);
int toggleFullLED(int pin, int mask, int th);
void setup() {
Serial.begin(9600);
pinMode(R_PIN, OUTPUT);
pinMode(G_PIN, OUTPUT);
pinMode(B_PIN, OUTPUT);
pinMode(F_C_PIN, OUTPUT);
digitalWrite(R_PIN, LOW);
digitalWrite(G_PIN, LOW);
digitalWrite(B_PIN, LOW);
digitalWrite(F_C_PIN, HIGH);
Serial.println("arduino setup");
}
void loop() {
if (Serial.available() > 0) {
recv = Serial.read();
Serial.print("recv:");Serial.println(recv);
Serial.println((toggleLED(R_PIN, R_MASK))? " RED ON" : " RED OFF");
Serial.println((toggleLED(G_PIN, G_MASK))? " GREEN ON" : " GREEN OFF");
Serial.println((toggleLED(B_PIN, B_MASK))? " BLUE ON" : " BLUE OFF");
Serial.println((toggleFullLED(F_R_PIN, F_R_MASK, F_R_TH))? " FULL(R) ON" : " FULL(R) OFF");
Serial.println((toggleFullLED(F_G_PIN, F_G_MASK, F_G_TH))? " FULL(G) ON" : " FULL(G) OFF");
Serial.println((toggleFullLED(F_B_PIN, F_B_MASK, F_B_TH))? " FULL(B) ON" : " FULL(B) OFF");
}
}
int toggleLED(int pin, int mask) {
Serial.print(" pin:");Serial.print(pin);
Serial.print(" mask:");Serial.print(mask);
Serial.print(" recv&mask:");Serial.print(recv&mask);
if ((recv & mask) == mask) {
digitalWrite(pin, HIGH);
return 1;
} else {
digitalWrite(pin, LOW);
return 0;
}
}
int toggleFullLED(int pin, int mask, int th) {
Serial.print(" pin:");Serial.print(pin);
Serial.print(" mask:");Serial.print(mask);
Serial.print(" th:");Serial.print(th);
Serial.print(" recv&mask:");Serial.print(recv&mask);
if ((recv & mask) == mask) {
analogWrite(pin, th);
return 1;
} else {
analogWrite(pin, 255);
return 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment