Contenu connexe
Similaire à Arduino入門 (20)
Arduino入門
- 11. Processing
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;
color off = color(4, 79, 111);
color on = color(84, 145, 158);
void setup() {
!
! size(470, 280);
!
! // シリアルポートの一覧を出力
! println(Arduino.list());
!
! // Arduino IDE でセットしたシリアルポートをセット
! arduino = new Arduino(this, Arduino.list()[6], 57600);
!
! // デジタル入力 D0 - D13 をセット
! for (int i = 0; i < 14; i++) {
! ! arduino.pinMode(i, Arduino.INPUT);
! }
!
}
Arduino利用の実装例
- 12. Processing
void draw() {
!
! background(off);
! stroke(on);
!
! for (int i = 0; i < 14; i++) {
! ! // デジタル入力の状態を表示
! ! if (arduino.digitalRead(i) == Arduino.HIGH) {
! ! ! fill(on);
! ! } else {
! ! ! fill(off);
! ! }
! ! rect(420 - i * 30, 30, 20, 20);
! }
!
! for (int i = 0; i <= 5; i++) {
! ! // アナログ入力の値を円の大きさで表示
! ! ellipse(280 + i * 30, 240,
! ! ! ! arduino.analogRead(i) / 16, arduino.analogRead(i) / 16);
! }
!
}
Arduino利用の実装例
- 19. openFrameworks(Arduinoとの接続)
#pragma once
#include "ofMain.h"
class testApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
void mouseDragged(int x, int y, int button);
void mousePressed(int x, int y, int button);
!
! int iValue;
! // add (Arduino)
! ofArduino ard;! ! ! ! // Arduino のオブジェクト
! bool bSetupArduino;!! // Arduino の Setup の確認フラグ
! // add (Arduino)
private:
! void setupArduino(const int & version);
! void digitalPinChanged(const int & pinNum);
! void analogPinChanged(const int & pinNum);
! void updateArduino();
!
};
testApp.h
- 20. openFrameworks(Arduinoとの接続)
#include "testApp.h"
void testApp::setup(){
!
! ofSetVerticalSync(true);
! ofSetFrameRate(60);
!
! iValue = 0;
! // add (Arduino)
!
! // Arduino IDE でセットしたシリアルポートに置き換えること
! ard.connect("/dev/tty.usbmodem1411", 57600);
!
! bSetupArduino! = false;
! // Arduino との接続が確立したら、setupArduino() を呼び出す
! ofAddListener(ard.EInitialized, this, &testApp::setupArduino);
}
void testApp::update() {
!
! // add (Arduino)
! updateArduino();
}
testApp.cpp
- 21. openFrameworks(Arduinoとの接続)
void testApp::setupArduino(const int & version) {
!
! // 接続が確立したら、リスナーを削除
! ofRemoveListener(ard.EInitialized, this, &testApp::setupArduino);
! bSetupArduino = true;
! // 指定したデジタル入力をセット。以下では D2, D5
! int iDigitalPin[] = {2, 5};
! int iDigitalPinNum = sizeof(iDigitalPin) / sizeof(iDigitalPin[0]);
! for (int i = 0; i < iDigitalPinNum; i++) {
! ! ard.sendDigitalPinMode(iDigitalPin[i], ARD_INPUT);
! }
!
! // アナログ入力 A0 - A5 をセット
! for (int i = 0; i < 6; i++) {
! ! ard.sendAnalogPinReporting(i, ARD_ANALOG);
! }
!
! // デジタル出力 D13 をセット
! ard.sendDigitalPinMode(13, ARD_OUTPUT);
!
! // 値が変更されたときに呼ばれるリスナー(デバッグ用途など)
! ofAddListener(ard.EDigitalPinChanged, this, &testApp::digitalPinChanged);
! ofAddListener(ard.EAnalogPinChanged, this, &testApp::analogPinChanged);
}
testApp.cpp
- 22. openFrameworks(Arduinoとの接続)
void testApp::updateArduino() {
!
! // Auduino を update
! ard.update();
!
!
! if (bSetupArduino) {
! ! // アナログ出力 A0 の値を更新
! ! iValue = ard.getAnalog(0);
! ! if (iValue < 0 || iValue > 800) iValue = 0;
! }
!
}
void testApp::digitalPinChanged(const int & pinNum) {
!
! cout << "digital: " << pinNum << " value: " << ard.getDigital(pinNum) << endl;
}
void testApp::analogPinChanged(const int & pinNum) {
!
! cout << "analog: " << pinNum << " value: " << ard.getAnalog(pinNum) << endl;
}
testApp.cpp
- 23. openFrameworks(Arduinoとの接続)
void testApp::draw() {
! ofSetColor(255, 255, 255);
!
! // add (Arduino)
! if (bSetupArduino){
! ! // アナログ出力のピン番号と値を表示
! ! string strValue[6];
! ! for (int i = 0; i < 6; i++) {
! ! ! strValue[i] = "analog pin: " + ofToString(i)
! ! ! ! ! ! + " = " + ofToString(ard.getAnalog(i));
! ! ! ofDrawBitmapString(strValue[i], 20.0, 40.0 + 20.0 * i + iValue);
! ! }
! }
!
}
testApp.cpp