信息物理系统实践(串口监视、输入输出实验)

任务1-0
void setup() {
  Serial.begin(115200);

}

void loop() {
  Serial.println("XXXXXXXXXX XXX");
  delay(1000);

}
任务1-1
#define led 0


void setup() {
  pinMode(led, OUTPUT);

}

void loop() {
  digitalWrite(led, HIGH); 
  delay(2000); 
  digitalWrite(led, LOW);  
  delay(1500); 
}
任务1-2

#define led LED_BUILTIN
#define btn 15


void setup() {
  pinMode(led, OUTPUT);
  pinMode(btn, INPUT);
  Serial.begin(115200);
}

void loop() {
  if(digitalRead(btn) == LOW){
    Serial.println("按钮:抬起\n");
    Serial.println("灯:熄灭\n");
    digitalWrite(led, HIGH); 
  }else{
    digitalWrite(led, LOW); 
    Serial.println("按钮:按下\n");
    Serial.println("灯:亮\n");
  }
  delay(200);
}
任务1-3
//灯
#define y_led 12
#define r_led 13
#define g_led 14
//按钮
#define y_btn 15
#define r_btn 4
#define g_btn 5


void setup() {
  pinMode(y_led, OUTPUT);
  pinMode(r_led, OUTPUT);
  pinMode(g_led, OUTPUT);

  pinMode(y_btn, INPUT);
  pinMode(r_btn, INPUT);
  pinMode(g_btn, INPUT);

  Serial.begin(115200);
}
int y_btn_released = 0;
int r_btn_released = 0;
int g_btn_released = 0;

void loop() {

  y_btn_released = digitalRead(y_btn);
  r_btn_released = digitalRead(r_btn);
  g_btn_released = digitalRead(g_btn);

  if(y_btn_released == 1){
    digitalWrite(y_led, HIGH);
    Serial.println("黄灯亮\n");
  }else{
    digitalWrite(y_led, LOW);
  }

  if(r_btn_released == 1){
    digitalWrite(r_led, HIGH);
    Serial.println("红灯亮\n");
  }else{
    digitalWrite(r_led, LOW);
  }

  if(g_btn_released == 1){
    digitalWrite(g_led, HIGH);
    Serial.println("绿灯亮\n");
  }else{
    digitalWrite(g_led, LOW);
  }

  delay(200);
}
任务1-4
//灯
#define y_led 4
#define r_led 5
#define g_led 14
//按钮
#define begin_btn 16
#define stop_btn 13



void setup() {
  pinMode(y_led, OUTPUT);
  pinMode(r_led, OUTPUT);
  pinMode(g_led, OUTPUT);

  pinMode(begin_btn, INPUT);
  pinMode(stop_btn, INPUT_PULLUP);

  //attachInterrupt(digitalPinToInterrupt(stop_btn), fun_stop, CHANGE);

  Serial.begin(115200);
}
int begin_btn_released = 0;
int stop_btn_released = 0;
int run = 1;//0停止,1运行
int a = 1;
int b=0;
void loop() {
  begin_btn_released = digitalRead(begin_btn);
  stop_btn_released = digitalRead(stop_btn);

  if(begin_btn_released == 1){
    run = 1;
  }
  if(stop_btn_released == 1){
    run = 0;
  }
  while(run){

    digitalWrite(r_led, HIGH);
    Serial.println("红灯亮");
    dd();
    if(run == 0){
      break;
    }
    digitalWrite(r_led, LOW);


    digitalWrite(y_led, HIGH);
    Serial.println("黄灯闪烁");
    while(b<5){
      ddy();
      if(run == 0){
      break;
    }
      digitalWrite(y_led, LOW);
      ddy();
      if(run == 0){
      break;
      }
      digitalWrite(y_led, HIGH);
      b++;
    }
    b=0;
    if(run == 0){
      break;
    }
    digitalWrite(y_led, LOW);


    digitalWrite(g_led, HIGH);
    Serial.println("绿灯亮");
    dd();
    if(run == 0){
      break;
    }
    digitalWrite(g_led, LOW);
  }
}
void dd(){
   while (a<3000) {
      stop_btn_released = digitalRead(stop_btn);
      if(stop_btn_released == 1){
        run = 0;
        digitalWrite(r_led, LOW);
        digitalWrite(y_led, LOW);
        digitalWrite(g_led, LOW);
        Serial.println("熄灭");
        break;
      }
      a++;
      delay(1);
    }
    a = 0;
}
void ddy(){
  while (a<300) {
      stop_btn_released = digitalRead(stop_btn);
      if(stop_btn_released == 1){
        run = 0;
        digitalWrite(r_led, LOW);
        digitalWrite(y_led, LOW);
        digitalWrite(g_led, LOW);
        Serial.println("熄灭");
        break;
      }
      a++;
      delay(1);
    }
    a = 0;
}
任务1-5
void setup() {
  Serial.begin(115200);
  pinMode(A0, INPUT);

}
 
void loop() {
  Serial.println(analogRead(A0));
}
任务1-6
#define led 4
#define btn 13
 
void setup() {
  Serial.begin(115200);
  pinMode(btn, INPUT);
  pinMode(led, OUTPUT);


}
int a=0;
int b=0;
int btn_relesed;
void loop() {
  btn_relesed = digitalRead(btn);
  while(btn_relesed){
    while(a<1024){
    analogWrite(led, a);
    a++;
    btn_relesed = digitalRead(btn);
    if(btn_relesed == 0){
      analogWrite(led, 0);
      break;
    }
    delay(1);
    Serial.println(a);
    }
    if(btn_relesed == 0)
    {
      break;
    }
    while(a>0){
      analogWrite(led, a);
      a--;
      delay(1);
      Serial.println(a);
    }
  }
    
}
任务1-7
任务1-8
#include <Adafruit_NeoPixel.h>

#define light_level 155//4个led的亮度
#define pin 13
#define num 4
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(num, pin, NEO_GRB + NEO_KHZ800);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pixels.begin();

}


int i = 0;

//void set_4_led(uint8_t r,uint8_t g,uint8_t b,uint8_t level=light_level);//???????????声明不对?????????
void set_4_led(uint8_t r,uint8_t g,uint8_t b,uint8_t level = light_level){
  //设置灯的亮度;
  pixels.setBrightness(level);
  for(i=0;i<num;i++){
    pixels.setPixelColor(i,r,g,b);
  }
  pixels.show();
}

void loop() {
  // put your main code here, to run repeatedly:
  set_4_led(255,0,0);
  delay(2000);
  set_4_led(0,255,0);
  delay(2000);
  set_4_led(0,0,255);
  delay(2000);

}
任务1-9
#include <Adafruit_NeoPixel.h>

#define light_level 55//4个led的亮度
#define pin 13
#define num 4
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(num, pin, NEO_GRB + NEO_KHZ800);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pixels.begin();

}


int i = 0;

//void set_4_led(uint8_t r,uint8_t g,uint8_t b,uint8_t level=light_level);//???????????声明不对?????????
void set_4_led(uint8_t r,uint8_t g,uint8_t b,uint8_t level = light_level){
  //设置灯的亮度;
  
  pixels.setBrightness(level);
  pixels.setPixelColor(i,r,g,b);
  pixels.show();
  i++;
  
}

void loop() {
  // put your main code here, to run repeatedly:
  set_4_led(255,0,0);
  i = i>3?0:i;
  set_4_led(0,255,0);
  i = i>3?0:i;
  set_4_led(0,0,255);
  i = i>3?0:i;
  set_4_led(255,255,255);
  i = i>3?0:i;
  delay(500);
  i++;
  i = i>3?0:i;
}
任务1-10
#include <Adafruit_NeoPixel.h>

#define light_level 55//4个led的亮度
#define pin 13//灯引脚
#define num 4
#define btn_stop 12//停止按钮引脚
#define btn_begin 14//开始按钮引脚
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(num, pin, NEO_GRB + NEO_KHZ800);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pixels.begin();

}


int i = 0;
int begin_relese = 0;
int stop_relese = 0;
int a = 0;
int running = 1;
int temp = 0;
int set_b = 255;
int set_g = 0;
int set_r = 0;
//void set_4_led(uint8_t r,uint8_t g,uint8_t b,uint8_t level=light_level);//???????????声明不对?????????
void set_4_led(uint8_t k,uint8_t r,uint8_t g,uint8_t b,uint8_t level = light_level){
  //设置灯的亮度;
  pixels.setBrightness(level);
  //设置灯的颜色和灯的位置
  pixels.setPixelColor(k,r,g,b);
  pixels.show();
}

void delay_1(int time){
  while(a<time){
    stop_relese = digitalRead(btn_stop);
    if(stop_relese == 1){
      set_4_led(0,0,0,0);
      set_4_led(1,0,0,0);
      set_4_led(2,0,0,0);
      set_4_led(3,0,0,0);
      running = 0;
      a = 0;
      return;
    }
    delay(1);
    a++;
  }
  a=0;
}

void set_color(int i_num){
  if(i_num == 3){
    temp = set_r;
    set_r = set_b;
    set_b = set_g;
    set_g = temp;
  }
  set_4_led(i_num,set_r,set_g,set_b);
}
void loop() {
  begin_relese = digitalRead(btn_begin);
  running = begin_relese == 1?1:0;
  while(running){
    set_4_led(3,0,0,0);
    set_color(0);

    delay_1(500);
    if(running == 0) break;
    set_4_led(0,0,0,0);
    set_color(1);

    delay_1(500);
    if(running == 0) break;
    set_4_led(1,0,0,0);
    set_color(2);

    delay_1(500);
    if(running == 0) break;
    set_4_led(2,0,0,0);
    set_color(3);

    delay_1(500);
    if(running == 0) break;
  }
}

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值