Skip to content

Instantly share code, notes, and snippets.

@ameyer
Created June 26, 2009 06:29
Show Gist options
  • Save ameyer/136335 to your computer and use it in GitHub Desktop.
Save ameyer/136335 to your computer and use it in GitHub Desktop.
Arduino code to do light dimmer stuffs
#define lampPin 6
#define adjustPin 0
#define touchPin 1
//LEDs
int g1 = 8;
int g2 = 9;
int w1 = 10;
int w2 = 11;
int r1 = 12;
int r2 = 13;
int turnOffInt = 500;
int shiftInt = 175;
unsigned long timeofShift;
unsigned long downTime;
unsigned long upTime;
int lastState;
int shift;
int turnedOff = 0;
int lampbrightness;
int lastReading;
void setup() {
Serial.begin(9600);
pinMode (lampPin, OUTPUT);
pinMode (g1, OUTPUT);
pinMode (g2, OUTPUT);
pinMode (w1, OUTPUT);
pinMode (w2, OUTPUT);
pinMode (r1, OUTPUT);
pinMode (r2, OUTPUT);
initLED();
}
void loop() {
if(getTouchState() == 1){
if(millis() - downTime > shiftInt){
if(shift == 0){
fadeUp();
}
else{
fadeDown();
}
}
}
if(getTouchState() == 0){
if(millis() - timeofShift > turnOffInt){ // kill lingering shifts
shift = 0;
}
}
lightLED(lampbrightness);
}
void shiftCheck(){
if(upTime - downTime > 0 && upTime - downTime < shiftInt){
if(shift == 1){
turnOff();
shift = 0;
}
else{
Serial.println("shift");
timeofShift = millis();
shift = 1;
}
}
else{
shift = 0;
}
}
int getTouchState(){
int touchReading = analogRead(touchPin);
int state = 0;
//Serial.println(touchReading);
if(touchReading > 1000){
state = 0;
if(lastState !=0){
lastState = 0;
upTime = millis();
//Serial.println(upTime);
shiftCheck();
Serial.println("up");
}
}
else if(touchReading < 100){
state = 1;
if(lastState !=1){
lastState = 1;
downTime = millis();
//Serial.println(downTime);
Serial.println("down");
}
}
return state;
}
int getAdjustment(){
int adjustment = analogRead(adjustPin);
//Serial.println(touchReading);
adjustment = map(adjustment, 0, 480, 0, 250);
//Serial.println(adjustment);
return adjustment;
}
void fadeUp(){
lampbrightness = lampbrightness + 5;
lampbrightness = constrain(lampbrightness, 0, 255);
analogWrite(lampPin, lampbrightness);
delay(getAdjustment());
}
void fadeDown(){
lampbrightness = lampbrightness - 5;
lampbrightness = constrain(lampbrightness, 0, 255);
analogWrite(lampPin, lampbrightness);
delay(getAdjustment());
}
void turnOff(){
Serial.println("off");
lampbrightness = 0;
analogWrite(lampPin, lampbrightness);
delay(500);
}
void initLED(){
digitalWrite(g1, HIGH);
delay(100);
allOff();
digitalWrite(g2, HIGH);
delay(100);
allOff();
digitalWrite(w1, HIGH);
delay(100);
allOff();
digitalWrite(w2, HIGH);
delay(100);
allOff();
digitalWrite(r1, HIGH);
delay(100);
allOff();
digitalWrite(r2, HIGH);
delay(100);
allOff();
digitalWrite(g1, HIGH);
digitalWrite(g2, HIGH);
digitalWrite(w1, HIGH);
digitalWrite(w2, HIGH);
digitalWrite(r1, HIGH);
digitalWrite(r2, HIGH);
delay(500);
allOff();
}
void allOff(){
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(w1, LOW);
digitalWrite(w2, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
}
void lightLED(int lampbrightness){
if(lampbrightness < 10){
digitalWrite(g1, LOW);
digitalWrite(g2, LOW);
digitalWrite(w1, LOW);
digitalWrite(w2, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
}
else if(lampbrightness < 50){
digitalWrite(g1, HIGH);
digitalWrite(g2, LOW);
digitalWrite(w1, LOW);
digitalWrite(w2, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
}
else if(lampbrightness < 90){
digitalWrite(g1, HIGH);
digitalWrite(g2, HIGH);
digitalWrite(w1, LOW);
digitalWrite(w2, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
}
else if(lampbrightness < 130){
digitalWrite(g1, HIGH);
digitalWrite(g2, HIGH);
digitalWrite(w1, HIGH);
digitalWrite(w2, LOW);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
}
else if(lampbrightness < 170){
digitalWrite(g1, HIGH);
digitalWrite(g2, HIGH);
digitalWrite(w1, HIGH);
digitalWrite(w2, HIGH);
digitalWrite(r1, LOW);
digitalWrite(r2, LOW);
}
else if(lampbrightness < 200){
digitalWrite(g1, HIGH);
digitalWrite(g2, HIGH);
digitalWrite(w1, HIGH);
digitalWrite(w2, HIGH);
digitalWrite(r1, HIGH);
digitalWrite(r2, LOW);
}
else if(lampbrightness < 230){
digitalWrite(g1, HIGH);
digitalWrite(g2, HIGH);
digitalWrite(w1, HIGH);
digitalWrite(w2, HIGH);
digitalWrite(r1, HIGH);
digitalWrite(r2, HIGH);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment