2013年4月10日 星期三

Arduino + process


//Arduino 程式
int sensorPin=0;
int val=0;

void setup()
{
Serial.begin(9600);
}

void loop()
{
val=analogRead(sensorPin)/4;
Serial.write(val); //老版本会用Serial.print(val,BYTE),现在已经不支持BYTE了。
delay(100);
}






/*Arduino控制器相连的电位计手把向一个方向拧动

Processing花布上的螺旋线不断放大,
电位计手把向反方向拧动,螺旋线不断缩小。*/
import processing.serial.*;//导入serial通信库
Serial duankou;//创建对象duankou
float data;//变量存储Arduino传来数据
float a;//螺旋线半径增量
void setup()
{
  //设定通讯端口为COM3,波特率为9600
  String arduinoPort = Serial.list()[1];//憒?[0]銝?嚗停?兞1]
  duankou = new Serial(this, arduinoPort, 9600);
  
 // duankou = new Serial(this,"COM7",9600);
  size(600,600);//定义花布大小
   noStroke();
  smooth();
  fill(0,255,0);//定义螺旋线的填充色为绿色
}
void draw()
{  
  background(0);
  //当processing接受到Arduino传来的字节
  if(duankou.available()>0)
  {
    //把Arduino传来的字节存入变量data
    data=duankou.read();
    //把Arduino传来的字节显示在控制台中
    println(data);
    //把电位计的类比值大小,正比转换成螺旋线半径增量大小
    a=map(data,0,255,0.04,0.2);
  }
  float radius = 1.0;//螺旋线初始点半径
  //螺旋线转动角度范围0到360*8
  //螺旋线每转动2度,半径就增加一个增量
  //通过for结构,产生螺旋线效果
  for (int deg = 0; deg < 360*8; deg += 2) {
    float angle = radians(deg);
    float x = 300 + (cos(angle) * radius);
    float y = 300 + (sin(angle) * radius);
    //螺旋线上每个点都是一个绿色实心圆
    ellipse(x, y, 6, 6);
    //螺旋半径每转动2度增加一次
    radius = radius + a;
    }
}

沒有留言:

張貼留言

習題解答 (5/6)

  第五章 習題解答 一、 錯誤偵測技術 1. 何謂循環冗餘檢查法 (CRC)? 是一種根據傳輸資料產生簡短固定位數校驗碼的演算法。發送端將資料除以一個特定的多項式,得到的「餘數」即為 CRC 碼並隨資料發送;接收端以同樣多項式除之,若餘數為 0 則代表資料傳輸正確。 2. 何...