2021年1月4日 星期一

final

processing

 import processing.serial.*;////


Serial myPort;////


int count=1800;


PImage candy;


PImage monster;


PImage bg;


PImage die;


PImage heart;


float [] candyX=new float[10];




float [] candyY=new float[10];


float monsterX=235, monsterY=450;


int score=150;


int h=0;




void setup() {





  size(513, 615);




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




  for (int i=0; i<10; i++) {


    candyX[i] = random(70, 295);


    candyY[i] = -i*100;

  }


  candy = loadImage("candy.png");///三角椎


  monster = loadImage("monster.png");


  bg = loadImage("bg.jpg");


  die =loadImage("die.png");

}


float vx=0;


//float vy=0;


void draw() {




  if (h==0) {


    image(bg, 0, 0, 513, 615);


    //background(255);


    //monsterX=mouseX-47;




    while (myPort.available()>=1)




    {


      int x = myPort.read();


      ///int y = myPort.read();


      //int sw = myPort.read();


      vx= (x-128)/32;


      // vy=(y-128)/32;


      println(vx);


      //monsterY=y;

    }


    monsterX += vx;


    // monsterY += vy;





    for (int i=0; i<7; i++) {


      image(candy, candyX[i], candyY[i], 60, 60);


      candyY[i]+=2;


      if (candyY[i]>615)


      {


        candyY[i]=-300;  //-183


        candyX[i]=random(70, 295);///三角錐重生

      }


      if (candyY[i]+60>monsterY) {


        if (monsterX<candyX[i]+58 && candyX[i]<monsterX+48) //2cm


        {///車碰到三角錐


          score+=10;


          candyY[i]=-150;

        }

      }

    }

    if (count<0) {

      background(0, 0, 0);

      h=1;

    } else {


      count--;

    }

    textSize(50);

    fill(25, 25, 250, 250);

    text("Time: "+int(count/60), 250, 50);


    textSize(50);


    text(score, 50, 100);

  }


  if (count<0 || score<1000)


  {


    h=1;


    image(die, -35, 100, 600, 350);

  }

}

void keyPressed() {


  count=1800;


  if (keyCode == ENTER)


  {


    h=0;


    score=150;

  }

}

WEEK1515151515

 WEEK15

今天教的是PVector的使用

有點像憤怒鳥彈弓的概念

最後結合搖桿使搖桿可以控制球的方向

processing

(1)

PVector user;//宣告,setup()及draw()都看的到

PVector Y, v=null;//彈弓,v飛行速度

void setup()

{

  size(600,400);

  user = new PVector(100, 300);

  Y = new PVector(100, 300);

}

void draw()

{

  background(255);

  line( user.x, user.y, Y.x, Y.y);

  textSize(40);

  fill(255,0,0); text("Y", Y.x, Y.y);

  fill(255); ellipse(user.x, user.y,20,20);

  if(v!=null)user.add(v);

}

void mouseDragged()

{

  user.x=mouseX;

  user.y=mouseY;

}

void mouseReleased()

{

  PVector diff = PVector.sub(Y, user);

  v = diff.div(10);

}


(2)

import processing.serial.*;

Serial myPort;

void setup()

{

  size(256,256);

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

}

int ballX=0, ballY=0;

void draw()

{

  if( myPort.available() >=3 )

  {

    int x = myPort.read();

    int y = myPort.read();

    int sw = myPort.read();

    ballX = x;

    ballY = y;

  }

  ellipse( ballX, ballY, 10,10);

}


(3)

import processing.serial.*;

Serial myPort;

PVector user;

PVector Y, v=null;

void setup()

{

  size(600,400);

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

  user = new PVector(100, 300);

  Y = new PVector(100, 300);

}

void draw()

{

  background(255);

  if( myPort.available() >=3 )

  {

    int x = myPort.read();

    int y = myPort.read();

    int sw = myPort.read();

    user.x = 100+x-128;

    user.y = 300+y-128;

  }

  textSize(40);

  fill(255,0,0); text("Y", Y.x, Y.y);

  fill(255); ellipse(user.x, user.y,20,20);

  if(v!=null)

  {

    user.add(v);

    v.y+= 0.98;

  }

}


Arduino

(1)

void setup() 

{

  pinMode(2, INPUT_PULLUP);

  Serial.begin(9600);

}


void loop()

{

  int x = analogRead(A0);

  int y = analogRead(A1);

  int sw = digitalRead(2);


  Serial.write(x);

  Serial.write('+');

  Serial.write(y);

  Serial.write('+');

  Serial.write(sw);

  Serial.write(' ');

  delay(20);

}


(2)

void setup() 

{

  pinMode(2, INPUT_PULLUP);

  Serial.begin(9600);

}


void loop()

{

  int x = analogRead(A0);

  int y = analogRead(A1);

  int sw = digitalRead(2);


  Serial.write(x/4);

  Serial.write(y/4);

  Serial.write(sw);

  delay(20);

}

week01

開始學習程式碼

*setup*

size(寬,高);視窗的大小

*draw*

line(x1,y1,x2,y2); 線
rect(x,y,寬,高); 方形  中心點為左上角
ellipse(x,y,寬,高); 圓形  中心點為中心

*color*

background(#RGB);   背景
stroke(#RGB);   線框
fill(#RGB);   填色
or (R,G,B);

WEEK1414141414

 WEEK14

今天做的是可以利用旋鈕控制聲音頻率的實驗  左接GND;中接A0;右接5V

可以在processing裡用格子看到變化

processing


import processing.serial.*;
Serial myPort;
void setup()
{
  size(765,100);
  myPort = new Serial(this, "COM5", 9600);
}
int level=0;
void draw()
{
  background(255);
  fill(255,0,0);
  rect(0,0, level*3, 100);
  if( myPort.available()>0 )
  {
    int now = myPort.read();
    level = now;
  }
}

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);
}

WEEK1313131313

 WEEK13


今天做的是joystick按下會發出聲音,然後用0跟1判斷按跟沒按,最後按下joystickcl會改變顏色
一樣是利用arduino搭配processing

processing

import processing.serial.*;
Serial myPort;
void setup()
{
  size(300,200);
  myPort = new Serial(this, "COM5",9600);
}
int button=0;
void draw()
{
  if( myPort.available() > 0)
  {
    int now = myPort.read();
    println("現在你得的其實是:"+now);
    if( now == '1') button;
    else butten=0;
  }
  if(button=1) background(255,0,0);
  else background(255);
}


arduino

void setup() {
  Serial.begin(9600);
  pinMode(2,INPUT_PULLUP);
  pinMode(8,OUTPUT);
}
int state=0;
void loop()
{
  if(dugutalRead(1)==LOW && state==0)
  {
    state=1;
    Serial.write("1");
  }
  if(dugutalRead(2)==HIGH && state==1)
  {
    state=0;
    Serial.write("0");
  }
  delay(100);
}

WEEK1212121212

 WEEK12


利用arduino連上processing 
就可以配合makeruno搭配鍵盤打節奏了

processing

import processing.serial.*;
Serial myPort;
void set()
{
  size(200,200);
  myPort = new Serial(this, "COM5", 9600);
}
void draw()
{

}
void keyPressed()
{
  if(key=='1') myPort.write("1");
  if(key=='2') myPort.write("2");
  if(key=='3') myPort.write("3");
  if(key=='4') myPort.write("4");
  if(key=='5') myPort.write("5");
  if(key=='6') myPort.write("6");
  if(key=='7') myPort.write("7");
}
void mousePressed()
{
  myPort.write("0");
}


Arduino

#define Do 523
#define Re 587
#define Mi 659
#define Fa 698
#define So 784
#define La 880
#define Ti 988
void setup()
{
  Serial.begin(9600);
  pinMode(2, INPUT_PULLUP);
  pinMode(8, OUTPUT);
  tone(8,Do);//不給長度,一直發音
  delay(100);//等1秒
  tone(8,Mi);//換另一個聲音
  delay(100);
  noTone(8);//靜音
}
void loop()
{
  while( Serial.available() > 0)
  {
    int now= Serial.read();
    if( now=='1') tone(8, Do);  
    if( now=='2') tone(8, Re);  
    if( now=='3') tone(8, Mi);
    if( now=='4') tone(8, Fa);
    if( now=='5') tone(8, So);
    if( now=='6') tone(8, La);
    if( now=='7') tone(8, Ti);
    if( now=='0') noTone(8);
  }  
}

𝔍𝔒𝔗𝔇-week17

 今日進度:

1.修改最後航空公司的顯示錯誤

2.成果展示

今日成果: