2021年1月18日 星期一

week14_鄭皓文

 

       這星期要學習的是通過搖桿進行更多的操作,然後還新發了一個可變電阻下來,不過我該怎麽説呢畢竟是免費的東西但運行的時候放出的氣味讓我一度以爲我操作不當把它燒了(那種氣味和顯卡短路的時候挺像的),先從最簡單的通過搖桿控制聲音頻率開始,下面放程式碼:

void setup()

{

  pinMode(13,OUTPUT);

  pinMode(8,OUTPUT);

}

 

void loop()

{

  int now = analogRead(A0);

  tone(8,now);

}

其實不只是搖桿,感覺只要是非綫性電阻就能這麽搞了

      

其實就是通過信號的不同控制某一區域的電流造成音階變化,所以相同的效果也可以運用在板載LED上面,通過下面這個程式就可以控制UNOLED的閃爍變化程度:

void setup() {

  for(int i=2;i<=13;i++){

    pinMode(i,OUTPUT);

  }

}

void loop() {

  int now =analogRead(A0);

  int level =now/(512/13);

  for(int i=2;i<=13;i++){

    if(i<level)digitalWrite(i,HIGH);

    else digitalWrite(i,LOW);

  }

}

所以如果有LED燈條的話接上去就可以作爲RGB控制器了

 

同理,我們也可以讓他顯示搖桿在不同的位置時產生的不同字母符號等等,代碼如下:

void setup() {

  for(int i=2;i<=13;i++){

    pinMode(i,OUTPUT);

  }

  Serial.begin(9600);

}

 

void loop() {

  int now=analogRead(A0);

  int leve1 = now/(1024/13);

  for(int i=2;i<=13;i++){

      if(i<leve1) digitalWrite(i,HIGH);

      else digitalWrite(i,LOW);

    }

    Serial.write(('A'+leve1));

    delay(100);

}

可以顯示A-N,有點類似於數據坐標系

      

       既然我們可以寫出這麽多的功能,那我們肯定可以寫一些有趣的東西,例如通過遙感給血條加血(簡直是開挂啊),但是製作這個功能的時候因爲會用到圖像顯示,所以又要麻煩Processing再跑出來一次,代碼如下:

首先是Arduino的:

void setup() {

  for(int i=2;i<=13;i++){

    pinMode(i,OUTPUT);

  }

  Serial.begin(9600);

}

 

void loop() {

  int now = analogRead(A0);

  int level = now/4;

  for(int i=2;i<=13;i++){

    if(i<level) digitalWrite(i,HIGH);

    else digitalWrite(i,LOW);

  }

  Serial.write(level);

  delay(20);

}



然後是Processing那邊的:

import processing.serial.*;

Serial myPort;

void setup(){

  size(700,100);

  myPort = new Serial(this,"COM3",9600);

}

int level = 0;

void draw(){

  background(255);

  fill(0,50,200);

  rect(0,0,level*3,100);

  if(myPort.available()>0){

    int now = myPort.read();

    level = now;

  }

}

這功能真的NB,要是玩格鬥游戲的時候可以這麽搞就好了

   

沒有留言:

張貼留言