Try this:
- // Toggle Switch 压放式开关 – by [email][email protected][/email]
- // 开关接 Pin 8, LED 灯接 Pin 9
- int sPin = 8; // 只可以读取 0 LOW or 1 HIGH
- int ledPin = 9; // 改 13 即为内建的黄灯
- int sVal = 0; // 读取传感器得到的值 sensorValue
- int oldVal;
- int bounce = 168; // 去抖动, 间隔时间大约 0.168 秒; 自己调整 !
- long prevTime = 0; // previous time we read
- int light = LOW; // 关灯 light = 0;
- void setup() {
- pinMode(sPin, INPUT); // 读取开关
- pinMode(ledPin, OUTPUT);
- pinMode(13, OUTPUT); digitalWrite(13, 0); // 关掉 pin 13的 LED
- digitalWrite(ledPin, light); // 关掉 LED
- Serial.begin(9600);
- oldVal = digitalRead(sPin); // 0 ~ 1
- prevTime = millis( ); // 读取执行到现在的时间
- }
- void onOff( ); // toggle 开关灯; 先宣告等下再写内容
- void loop( ) {
- sVal = digitalRead(sPin); // 0 ~ 1
- if(sVal == oldVal) return;
- if(millis( ) - prevTime < bounce) return;
- oldVal = sVal;
- if(sVal) { // 不是 0 LOW
- onOff( );
- prevTime = millis( );
- }
- delay(18); // up to you :-)
- Serial.println(sVal);
- }
- void onOff( ) {
- light = ! light; // 或 light = 1 - light;
- digitalWrite(ledPin, light); // 开或关
- }
复制代码
|