v03_AnalogBrightnessLoopBtnState.ino
int LED = 9;
int BUTTON = 7;
int val=0;
int old_val=0;
int state=0;
int brightness=128; //明るさ
unsigned long startTime=0; //いつ初めたか?
int i=0;
void setup(){
pinMode(LED,OUTPUT); //LEDが出力である
pinMode(BUTTON,INPUT); //BUTTONが入力である
}
void loop() {
val = digitalRead(BUTTON);
//変化があるか?
if((val==HIGH)&&(old_val==LOW)){
state=1-state;
startTime=millis();
delay(10);
}
//ボタンが押し続けられているか?
if((val==HIGH)&&(old_val==HIGH)){
//500ms以上押されているか?
if(state==1 && (millis()-startTime)>500){
brightness++;
delay(10);
if(brightness > 255){
brightness=0;
}
}
}
old_val=val;
if(state==1){
analogWrite(LED, brightness);
}else{
analogWrite(LED, 0);
}
}