距離センサ(Arduino) x openFrameworks
テスト制作物
距離センサを用い,近いほど円が小さくなるプロジェクト.
実行環境
- maxOS Sierra 10.12.6
- openFrameworks 0.9.8
- Arduino 1.8.5
基盤のセットアップ
距離センサはシャープ測距モジュール GP2Y0A21YKを使用します.
画像のように左から5V(赤),GND(黒),A0(黄)に距離センサの配線を繋げます.
これでもよくわかんないよって方はデータシートをみてください
->http://akizukidenshi.com/download/ds/sharp/gp2y0a21yk_e.pdf
Arduinoのセットアップ
*注意:ボードに書き込む際などはシリアルポートの選択ミスが内容にしてください
今回,僕はArduinoUnoを使用しているのでこの画像のようになっています.
oF側のコード
ofApp.h
#pragma once
#include "ofMain.h"
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
void setupArduino(const int & version);
void analogPinChanged(const int & pinNum);
ofArduino ard;
float ardValue;
bool bSetupArduino;
};
ofApp.cpp
#include "ofApp.h"
#define SPEED 9600
//--------------------------------------------------------------
void ofApp::setup(){
ofBackground(0);
ofSetFrameRate(60);
ard.connect("/dev/cu.usbmodem14131", SPEED);
ofSetCircleResolution(64);
}
//--------------------------------------------------------------
void ofApp::update(){
if ( ard.isArduinoReady()){
if (bSetupArduino == false){// only do this once
bSetupArduino = true;
ofAddListener(ard.EInitialized, this, &ofApp::setupArduino);//add eventFunc
ofAddListener(ard.EAnalogPinChanged, this, &ofApp::analogPinChanged);
}
ard.update();
}else{
cout << "not conect" <<endl;
}
}
//--------------------------------------------------------------
void ofApp::draw(){
ofDrawCircle(ofGetWidth()/2, ofGetHeight()/2,
ardValue/2.0);
ofDrawBitmapString(ofToString(ardValue), 20, 30);
}
//--------------------------------------------------------------
void ofApp::setupArduino(const int & version) {
ofRemoveListener(ard.EInitialized, this, &ofApp::setupArduino);
ard.sendAnalogPinReporting(0, ARD_ON);
//when data is changed
ofAddListener(ard.EAnalogPinChanged, this, &ofApp::analogPinChanged);
}
//--------------------------------------------------------------
void ofApp::analogPinChanged(const int & pinNum) {
ardValue = ard.getAnalog(pinNum);
}
ard.connect("/dev/cu.usbmodem14131", SPEED);
Arduinoエディタで選択したシリアルポートを記入してください.Macなら/dev/~でwinならCOM~になると思います.
ofAddListener
setupArduinoは一回呼ばれ,analogPinChangedはpinに入力された値が変わるたびに呼ばれるって感じです.
補足:デジタルピン,アナログピン
#pragma once
#include "ofMain.h"
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
void setupArduino(const int & version);
void analogPinChanged(const int & pinNum);
ofArduino ard;
float ardValue;
bool bSetupArduino;
};
#include "ofApp.h"
#define SPEED 9600
//--------------------------------------------------------------
void ofApp::setup(){
ofBackground(0);
ofSetFrameRate(60);
ard.connect("/dev/cu.usbmodem14131", SPEED);
ofSetCircleResolution(64);
}
//--------------------------------------------------------------
void ofApp::update(){
if ( ard.isArduinoReady()){
if (bSetupArduino == false){// only do this once
bSetupArduino = true;
ofAddListener(ard.EInitialized, this, &ofApp::setupArduino);//add eventFunc
ofAddListener(ard.EAnalogPinChanged, this, &ofApp::analogPinChanged);
}
ard.update();
}else{
cout << "not conect" <<endl;
}
}
//--------------------------------------------------------------
void ofApp::draw(){
ofDrawCircle(ofGetWidth()/2, ofGetHeight()/2,
ardValue/2.0);
ofDrawBitmapString(ofToString(ardValue), 20, 30);
}
//--------------------------------------------------------------
void ofApp::setupArduino(const int & version) {
ofRemoveListener(ard.EInitialized, this, &ofApp::setupArduino);
ard.sendAnalogPinReporting(0, ARD_ON);
//when data is changed
ofAddListener(ard.EAnalogPinChanged, this, &ofApp::analogPinChanged);
}
//--------------------------------------------------------------
void ofApp::analogPinChanged(const int & pinNum) {
ardValue = ard.getAnalog(pinNum);
}
ard.connect("/dev/cu.usbmodem14131", SPEED);
Arduinoエディタで選択したシリアルポートを記入してください.Macなら/dev/~でwinならCOM~になると思います.
ofAddListener
setupArduinoは一回呼ばれ,analogPinChangedはpinに入力された値が変わるたびに呼ばれるって感じです.
それぞれの使い分けについて少し書いておきたいと思います.
1.デジタルピン
●説明
指定したピンに対して0Vか5Vに設定(出力)または、指定したピンが0Vなのか5Vなのかを判断するときに使用します.
Arduinoにおいては、0VはLOW 、5VはHIGHとして指定します。
●どんな時に使用するのか
digitalWriteはピンに接続されたLEDを点灯させたり消灯させたり、外部機器に信号を送る場合に使用します。
digitalReadはピンに接続されたスイッチの状態や外部の機器からの信号を読むときに使用します。
2.Analog
●説明
A0,A1,,,などのように表記されています.
ArduinoにおけるAnalogは、ほとんど入力として使用されることが多いのです.
現在のボードが5Vで動作しているときに、0V~5Vのが変化するセンサーを取り付けた場合、0~5Vを0~1023の数字に変換して入力することが可能です。
●どんな時に使用するのか
光を検知するセンサーや音を検知するセンサー、そしてデジタルの温度計など、ほとんどのセンシング部品は、部品そのものからの値を電圧で返してきます。
参考URL
http://daisuki-arduino.com/arduino-pin/
http://akizukidenshi.com/catalog/g/gI-02551/
http://takepepe.com/openframeworks-x-arduino-001-2/
Author And Source
この問題について(距離センサ(Arduino) x openFrameworks), 我々は、より多くの情報をここで見つけました https://qiita.com/keito_takaishi/items/09bc241d48960d1067cc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .