2017-05-06 156 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您遇到的特定步骤,我们将从此处继续。祝你好运。