首页 > 代码库 > [PCS] Hw.2 led & Stack
[PCS] Hw.2 led & Stack
一、状态机代码:
#define ledR (12) #define ledG (11) #define ledBrd (13) #define sw1 (2) #define SW_ON (0) #define SW_OFF (1) #define LED_ON (1) #define LED_OFF (0) #define interval (500) // Generally, you should use "unsigned long" for variables that hold time // The value will quickly become too large for an int to store unsigned long previousMillis = 0; // will store last time LED was updated //现在状态 unsigned char swState; //过去状态 unsigned char swPrevState; unsigned char ledState; unsigned char ledBlinkState; // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. pinMode(ledBrd, OUTPUT); pinMode(ledR, OUTPUT); pinMode(ledG, OUTPUT); pinMode(ledB, OUTPUT); pinMode(sw1, INPUT); ledAllOff(); digitalWrite(ledBrd,LOW); delay(100); swState=swPrevState=digitalRead(sw1); ledState=LED_OFF; ledBlinkState=LOW; } void ledAllOff() { digitalWrite(ledR,HIGH); digitalWrite(ledG,HIGH); digitalWrite(ledB,HIGH); } // the loop function runs over and over again forever void loop() { swState=digitalRead(sw1); if(swState ==SW_ON && swPrevState==SW_OFF) { if(ledState == LED_ON) { ledState = LED_OFF; } else { ledState = LED_ON; } } swPrevState = swState; if(ledState == LED_ON) { //blink(); blinkWithoutDelay(); } else { ledAllOff(); } } void blink() { digitalWrite(ledBrd, HIGH); // turn the LED on (HIGH is the voltage level) digitalWrite(ledB,LOW); delay(500); // wait for a second digitalWrite(ledBrd, LOW); // turn the LED off by making the voltage LOW digitalWrite(ledB,HIGH); delay(500); // wait for a second } void blinkWithoutDelay() { unsigned long currentMillis = millis(); if(currentMillis - previousMillis >= interval) { // save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (ledBlinkState == LOW) { ledBlinkState = HIGH; } else { ledBlinkState = LOW; } // set the LED with the ledState of the variable: digitalWrite(ledBrd, ledBlinkState); // turn the LED on (HIGH is the voltage level) digitalWrite(ledB,ledBlinkState); } }
二、调查和比较 Linux\ Windows\ Mac 系统间堆栈的不同:
[PCS] Hw.2 led & Stack
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。