- #include <TimerOne.h>
- volatile int i=1 ;
- volatile int state=LOW ;
- void setup() {
- pinMode(5, OUTPUT);
- pinMode(6, OUTPUT);
- attachInterrupt(0,light,LOW);
- Timer1.initialize(1000000); //單位微秒,中斷時(shí)間為1秒
- Timer1.attachInterrupt( timerIsr ); //開啟定時(shí)中斷,中斷時(shí)執(zhí)行timerIsr函數(shù)
- }
- void loop() {
-
- }
- void light()
- {i=-i;//按鈕切換哪個(gè)燈執(zhí)行timerIsr函數(shù)
- switch(i){
- case -1:
- digitalWrite(5, LOW);
- timerIsr();
- break;
- case 1:
- digitalWrite(6, LOW);
- timerIsr();
- break;
- default:
- digitalWrite(5,LOW);
- digitalWrite(6, LOW);
- break;
- }
- }
- void timerIsr()//對(duì)某個(gè)燈執(zhí)行閃爍
- {
- state = ! state;
- if(i==1)
- {
- digitalWrite(5, state);
- }
- Else
- {
- digitalWrite(6, state);
- }
-
- }
復(fù)制代碼
- const int greenPin = 5;
- const int bluePin = 6;
- const int redPin = 7;//定義針腳
- void setup() {
- Serial.begin(9600);
- pinMode(greenPin, OUTPUT);
- pinMode(bluePin, OUTPUT);
- pinMode(redPin, OUTPUT);
- }
- void loop() {
- while (Serial.available() > 0) {
- int green = Serial.parseInt();
- int blue = Serial.parseInt();
- int red = Serial.parseInt();
- Serial.println(green);
- Serial.println(blue);
- Serial.println(red);
- int g = 4 + green;
- int b = 4 + blue;
- int r = 4 + red;
- digitalWrite(g,HIGH); //依次點(diǎn)亮的燈的號(hào)碼
- delay(2000);
- digitalWrite(g,LOW);
- digitalWrite(b,HIGH);
- delay(2000);
- digitalWrite(b,LOW);
- digitalWrite(r,HIGH);
- delay(2000);
- digitalWrite(r,LOW);
- }
- }
復(fù)制代碼
|