2017-05-06 151 views
0

我在顯示圖像和使用p5播放音頻時遇到問題,當我的arduino紅燈熄滅時。我的arduino工程,我只是無法弄清楚如何讓紅色指示燈熄滅時彈出圖像並播放音頻。我的項目基本上是一個使用超聲波傳感器的運動傳感器,如果有幫助。P5.js和Tone.js無法連接到Arduino

謝謝你的時間。

這裏是我的sketch.js代碼:

var serial;   // variable to hold an instance of the serialport library 
var portName = '/dev/cu.usbmodem1421'; // fill in your serial port name here 
var synth; 


function preload() { 
    alert = loadImage('alert.jpeg'); 
} 

function setup() { 
    createCanvas(1920,1080); 

    serial = new p5.SerialPort();  // make a new instance of the serialport 
library 
    serial.on('list', printList); // set a callback function for the serialport 
list event 
    serial.on('connected', serverConnected); // callback for connecting to the 
server 
    serial.on('open', portOpen);  // callback for the port opening 
    serial.on('data', serialEvent);  // callback for when new data arrives 
    serial.on('error', serialError); // callback for errors 
    serial.on('close', portClose);  // callback for the port closing 

    serial.list();      // list the serial ports 
    serial.open(portName);    // open a serial port 

    var synth = new Tone.Synth().toMaster(); 
    synth.triggerAttackRelease(440, 2); 

    var player = new Tone.Player("IntruderAlert.mp4").toMaster(); 
//play as soon as the buffer is loaded 
    player.autostart = true; 
    player.playbackRate = 0.8; 
} 

function serverConnected() { 
    println('connected to server.'); 
} 

function portOpen() { 
    println('the serial port opened.') 
} 

function serialEvent() { 

} 

function serialError(err) { 
    println('Something went wrong with the serial port. ' + err); 
} 

function portClose() { 
    println('The serial port closed.'); 
} 

這裏是我的.ino代碼:

#define trigPin 6<br>#define echoPin 7 
#define GreenLED 11 
#define YellowLED 10 
#define RedLED 9 
#define buzzer 3 

int sound = 500; 


void setup() { 
    Serial.begin (9600); 
    pinMode(trigPin, OUTPUT); 
    pinMode(echoPin, INPUT); 
    pinMode(GreenLED, OUTPUT); 
    pinMode(YellowLED, OUTPUT); 
    pinMode(RedLED, OUTPUT); 
    pinMode(buzzer, OUTPUT); 
} 

void loop() { 
    long duration, distance; 
    digitalWrite(trigPin, LOW); 
    delayMicroseconds(2); 
    digitalWrite(trigPin, HIGH); 
    delayMicroseconds(10); 
    digitalWrite(trigPin, LOW); 
    duration = pulseIn(echoPin, HIGH); 
    distance = (duration/5)/29.1; 

    if (distance < 50) { 
     digitalWrite(GreenLED, HIGH); 
} 
    else { 
     digitalWrite(GreenLED, LOW); 
    } 

    if (distance < 20) { 
    digitalWrite(YellowLED, HIGH); 
} 
    else { 
    digitalWrite(YellowLED,LOW); 
    } 

    if (distance < 5) { 
    digitalWrite(RedLED, HIGH); 
    sound = 1000; 
} 
else { 
    digitalWrite(RedLED,LOW); 
} 

if (distance > 5 || distance <= 0){ 
    Serial.println("Out of range"); 
    noTone(buzzer); 
} 
else { 
    Serial.print(distance); 
    Serial.println(" cm"); 
    tone(buzzer, sound); 

} 
delay(300); 
} 

回答

1

你將不得不break your problem down into smaller steps再接觸這些步驟,一次一個。

您可以創建一個只顯示圖像的草圖嗎?忘掉Arduino一秒鐘,只顯示一張圖片。現在,您可以在用戶點擊屏幕時顯示圖像嗎?

另外,你可以編寫Arduino代碼,當紅燈熄滅時,簡單地發送消息給草圖?

當你讓那些獨立工作的人想到將它們組合成一個結合了兩個想法的單一應用程序時,會容易得多。

如果您遇到困難,請發佈一個MCVE您遇到的特定步驟,我們將從此處繼續。祝你好運。