arduino 读取串口信息hex_Arduino | processing | 动态海报【中道崩殂篇】

0949e26b954146e81077cd3286bdfec0.png

- Jun,31,2021 -

ARDUINO

尽管眼下十分艰难,可日后这段经历

说不定就会开花结果.

/ 村上春树 

da7eab9122569801852339da78c9f5dd.png 51dbb5a4378cef141f0890b4cf8f7f78.png

首先要了解串口通讯

STEP 1

Arduino提供的串口通讯函数非常丰富,详细介绍参考Arduino官网串口使用指南。

比较详细的介绍我推荐简书的这个介绍:

https://www.jianshu.com/p/a102ebeb1f1f

Serial.begin()

描述:开启串口,通常置于setup()函数中。

Serial.end()

描述:禁止串口传输。此时串口Rx和Tx可以作为数字IO引脚使用。

Serial.print()

描述:串口输出数据,写入字符数据到串口。

Serial.println()

描述:串口输出数据并换行。

Serial.available()

描述:判断串口缓冲区的状态,返回从串口缓冲区读取的字节数。

Serial.read()

描述:读取串口数据,一次读一个字符,读完后删除已读数据。

返回值:返回串口缓存中第一个可读字节,当没有可读数据时返回-1,整数类型。(划重点!!!)

87d1999dd6d83cbcadbbd173b863867b.png 33c2046290f16bd382cef6035375a8fb.png

查找范例

STEP 2

可以直接百度arduino和processing交互

ovo

这里直接总结:

arduino里面数据输出,

processing里面进行数据读取,

从而实现传感器影响画面。

同时processing里面需要确认端口名称,导入相关arduino库。

也就是:

import processing.serial.*;

Serial port;

void setup()

{

port=newSerial(this,"COM4",9600); 

port.bufferUntil('\n');  

//定义myPort的端口和数据传输率  

//应和Arduino保持一致 

size(600,200);

}

void draw()

{  

while(port.available()>0){

   char input = port.readChar(); 

    //读取Arduino信息

}

}

构想海报

STEP 3

设想:进入一定距离范围,然后海报出现且随着距离改变和发出声音而发生变化。

Arduino:超声波测距仪

01c1da2fe48a0d4d047fb4e65674dc9d.png

先连接好超声波传感器,测试是否正常运行。

详见:

https://www.arduino.cn/thread-3194-1-1.html

调整代码

STEP 4

!!!控制距离需要比较大小,因此,必须弄清楚arduino里输出的数据类型。

推荐阅读:

https://www.cnblogs.com/lulipro/p/7672954.html

f438a00047e3869cc50a4bada7101be6.png 01c1da2fe48a0d4d047fb4e65674dc9d.png

QAQ   我死在了这一步

不知道是超声波传感器和processing传输数据的速度合不上

还是比大小方面出了问题

屏幕保持闪现

经过调整它确实受距离影响

但是还是处于闪现状态

和我想要的一定距离绿一定距离红

不一致

下面附上我的代码,希望有人能救救它。

55555

自闭

99e8dddb8d77cf54f6309af30230dcbc.png

arduino

const int TrigPin = 2;const int EchoPin = 3;int distance;void setup() {  // put your setup code here, to run once: // 初始化串口通信及连接SR04的引脚        Serial.begin(9600);        pinMode(TrigPin, OUTPUT);    // 要检测引脚上输入的脉冲宽度,需要先设置为输入状态        pinMode(EchoPin, INPUT);   // Serial.println("Ultrasonic sensor:");}void loop() {  // put your main code here, to run repeatedly: // 产生一个10us的高脉冲去触发TrigPin        digitalWrite(TrigPin, LOW);        delayMicroseconds(2);        digitalWrite(TrigPin, HIGH);        delayMicroseconds(10);        digitalWrite(TrigPin, LOW);    // 检测脉冲宽度,并计算出距离        distance = pulseIn(EchoPin, HIGH) / 58;        Serial.print(distance,DEC);       // Serial.print("cm");        Serial.println();        delay(1000);}

processing.java

import processing.serial.*;    //导入串口库Serial myPort;char i;char b = 15;void setup() {  size(1000, 1000);  background(255);  myPort=new Serial(this,"COM4",9600);   myPort.bufferUntil('\n');  }    void draw() {     if(myPort.available()>0){      //如果接受到数据        char i = myPort.readChar();          print(i);//读取数据放入变量“i”        if (i         background(255);         fill(255,0,0);         ellipse(500,500,2*i,2*i);        }        else if ( i>=b){            background(255);          fill(0,255,0);         ellipse(500,100,2*i,2*i);}    }}
 没有彩蛋   嘿嘿 0.0     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值