javascript - gyronorm 库:如何正确地将传感器值传递给函数?
问题描述
大家!
我是一个编程新手,我很确定我的做法是一团糟,而且非常糟糕……我是一名工业设计专业的学生,我正在为我的学期项目做一个项目。这只是一个奇怪而草率的尝试……
我正在尝试使用来自陀螺仪和加速度计的数据构建一个在移动设备上的浏览器中运行的手势控制合成器。我正在使用 p5.js 和 p5.sound.js 库以及 gyronorm.js 库。
目前我设法让这个东西作为一个单音合成器工作,我正在尝试用来自陀螺仪的传感器数据来调制振幅。到目前为止,它可以工作,围绕 z 轴转动手机(平放在桌子上,面朝上),但它会发出奇怪的噼啪声。我认为这可能与绘图功能的帧速率有关,但我不知道哪里错了,老实说,我在谷歌中找不到答案,因为我真的不太清楚,我是什么寻找XD。
所以这是我的代码:
let gn; // global variable for the Gyronorm Constructor
let movZ, movX, movY; //global variables for the accelerometer values
var alpha = 0,
beta = 0,
gamma = 0; //global variables for the gyroscope values
let vol; //global variable for the value calculation of the z-axis (alpha) value
let osc1;
function setup() {
createCanvas(windowWidth, windowHeight);
frameRate(120);
osc1 = new p5.Oscillator();
osc1.freq(300);
osc1.start();
//constructor for gyroscope
gn = new GyroNorm();
let args = {
decimalCount: 2,
frequency: 10
}
gn.init(args).then(function() {
gn.start(function(data) {
// Process:
alpha = data.do.alpha; //( deviceorientation event alpha value 0- 360 degrees)
beta = data.do.beta; //( deviceorientation event beta value )
gamma = data.do.gamma; //( deviceorientation event gamma value )
movZ = data.dm.z; //( devicemotion event acceleration z value )
movX = data.dm.x; //( devicemotion event acceleration x value )
movY = data.dm.y; //( devicemotion event acceleration y value )
vol = abs(sin(radians(alpha))); //trigonometric calculation of the alpha value to a value between 1 and 0
});
}).catch(function() {
notAvailable()
});
}
function draw() {
background(0);
fill(255);
osc1.amp(vol);
text("rotationZ (computed): " + vol, 200, 300);
text("rotationX: " + beta, 200, 350);
text("rotationY: " + gamma, 200, 400);
text("accZ: " + movZ, 50, 300);
text("accX: " + movX, 50, 350);
text("accY: " + movY, 50, 400);
}
function notAvailable() {
text("Gyroscope not supported!Sorry...", 300, 300);
}
这是本地隧道的链接,因此您可以在手机上尝试(我认为这应该可以吗?)
有没有人有解释或提示或任何东西???我真的很感激!请帮助我,因为我真的被困在这里!thx
此致!
路德维希
解决方案
推荐阅读
- django - Kafka Python 生产者与 django Web 应用程序的集成
- r - 如何通过R将两个不同文件中的行名和列名提供给数据框
- ios - 重新打开选项卡时返回视图层次结构中的初始 ViewController
- javascript - 使用 jQuery 输入添加列(追加)时获取总数
- java - 我可以使用我的 java 程序打开一个封闭的端口吗?
- url - 我可以在 SearchAction 上使用友好的 URL 吗?
- java - 想要使用一个按钮作为 2 个单独的编辑文本的后退空间?
- javascript - Laravel 混合,Javascript 和范围
- image - 使用busybox图像时我有一些疑问
- javascript - 无法用包含 [ 和 ] 的字符串替换我的字符串