1

私のプロジェクトは、光と圧力の 2 つのセンサーを備えたロボット Arduino フラワーを作成することです。このセンサーは、これら 2 つのセンサーの値に応じて開閉し、同時に、それらの値に応じて処理を通じてさまざまなビデオを再生します。

Arduinoのアナログセンサーからの値を処理するのにも苦労しています。これは私がこれまでに持っているものです:

アルドゥイーノ

#include <Servo.h> 

Servo myservo;
int pressure = 0;
int light = 1;
int pre;
int val;

void setup()
{
    Serial.begin(9600);
    myservo.attach(2);
}

void loop() {
    pre = analogRead(pressure);
    pre = map(pre, 918, 1023, 255, 0);

    val = analogRead(light);
    val = map(val, 0, 255, 0, 127);
    Serial.print(val, DEC);
    /*if (val>50) {
        Serial.print(1);
    }
    else {
        Serial.print(0);
    }*/

    myservo.write(val);
}

処理

import processing.video.*;
import processing.serial.*; //arduino
Serial myPort;  // Create object from Serial class
int val;


Movie movie;

void setup() {
  String portName = Serial.list()[0];
  myPort = new Serial(this, portName, 9600);
  size(640, 360);
  background(0);
  movie = new Movie(this, "transit.mov");
  movie.loop();

}

void movieEvent(Movie m) {
  m.read();
}

void draw() {
  val = myPort.read();
  println(val);
  //if (movie.available() == true) {
  //  movie.read(); 
  //}
  image(movie, 0, 0, width, height);
  if (val==49) {
    movie.jump(1);
  }
}

今のところ、ビデオを光センサーに反応させようとしているだけですが、できていません。処理中の読み取り値から得られるのは 48 だけです。モーターはセンサーに正常に反応します。

4

1 に答える 1

0

このような単純なProcessingスケッチからどのような出力が得られますか?どのような出力を期待しますか?

import processing.serial.*;

Serial myPort;  // The serial port

void setup() {
  // List all the available serial ports
  println(Serial.list());
  // Open the port you are using at the rate you want:
  myPort = new Serial(this, Serial.list()[0], 9600);
}

void draw() {
  while (myPort.available() > 0) {
    int inByte = myPort.read();
    println(inByte);
  }
}

また、Arduinoコードでマップ関数がpre = map(pre, 918, 1023, 255, 0);下限と上限としてそれぞれ250と0を使用しているのはなぜですか?それは逆に思えます。読まない方がpre = map(pre, 918, 1023, 0, 255);いいですか?

于 2012-12-19T18:31:56.877 に答える