2016年1月4日 星期一

期末射擊遊戲

processing

import processing.serial.*;

Serial myPort;  // Create object from Serial class
int val;      // Data received from the serial port

void setup() 
{
  size(200, 200);
  String portName = Serial.list()[0];
  myPort = new Serial(this, "COM3", 9600);
}

void draw()
{
  if ( myPort.available() > 0) {  // If data is available,
    val = myPort.read();         // read it and store it in val
  }
  println(char (val));
  background(255);             // Set background to white
  if (val == 'A')              // If the serial value is 0,
    fill(255,0,0);                   // set fill to black
  else if(val == 'B')
    fill(0,255,0);
  else fill(0,0,255);
     
  
  rect(50, 50, 100, 100);
}


arduino


void setup() {
  // put your setup code here, to run once:
  pinMode(8, OUTPUT);      //壞人1
  pinMode(9, OUTPUT);      //壞人2

  pinMode(7, INPUT_PULLUP); //按鈕
  pinMode(10, OUTPUT);     //接收器
  pinMode(11, OUTPUT);     //接收器
  pinMode(2, OUTPUT);     //得分燈泡

  

 Serial.begin(9600);
}
int lightOn=8;
int last=0;

void loop() {
  // put your main code here, to run repeatedly:
 // Serial.print(lightOn);
   if(millis()/1000-last>1){
    digitalWrite(lightOn,LOW);
    lightOn=int(random(8,10));
    last=millis()/1000;
    digitalWrite(lightOn,HIGH);
  }
  else digitalWrite(lightOn,HIGH);


    int trigger=digitalRead(7);//LOW to trigger SHOOT
  if(trigger==LOW){
    digitalWrite(11,HIGH);
    digitalWrite(10,HIGH);
    digitalWrite(2,HIGH);
  }  else{
    digitalWrite(11, LOW);
    digitalWrite(10, LOW);
    digitalWrite(2, LOW);
  }
  
  int IRvalue1=analogRead(A1);
  int IRvalue2=analogRead(A2);
  //Serial.println(IRvalue1);
  if(IRvalue1>900 && lightOn==9) Serial.write('A');//Serial.println("GotIt");
  else if(IRvalue2>900  && lightOn==8 ) Serial.write('B');//Serial.println("GotIt");
  else Serial.write('C');
  


  delay(100);


}

沒有留言:

張貼留言