【发布时间】:2023-03-24 06:19:01
【问题描述】:
我正在尝试通过串行端口向我的 Ardunio 发送一个整数。然后芯片将在 LED 上显示二进制数字。但是,我在尝试通过串行端口将数据作为字节发送时遇到了很多麻烦,据我可以调试以下代码将其作为 ASC char 值发送。
谁能指出我正确的方向或发现错误?我真的很感激。很长一段时间以来,我一直在为此拔头发。
红宝石
require 'rubygems'
require 'serialport' # use Kernel::require on windows, works better.
#params for serial port
port_str = "/dev/tty.usbserial-A700dZt3" #may be different for you
baud_rate = 9600
data_bits = 8
stop_bits = 1
parity = SerialPort::NONE
sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity)
i = 15
#just write forever
while true do
sp.write(i.to_s(2))
sleep 10
end
阿杜诺
int ledPin = 10;
int ledPin1 = 11;
int ledPin2 = 12;
int ledPin3 = 13;
byte incomingByte; // for incoming serial data
void setup() {
pinMode(ledPin, OUTPUT); // initialize the LED pin as an output:
pinMode(ledPin1, OUTPUT); // initialize the LED pin as an output:
pinMode(ledPin2, OUTPUT); // initialize the LED pin as an output:
pinMode(ledPin3, OUTPUT); // initialize the LED pin as an output:
Serial.begin(9600);
Serial.println("I am online");
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
incomingByte = Serial.read();
Serial.println(incomingByte, DEC);
int value = (incomingByte, DEC) % 16;
digitalWrite(ledPin, (value >> 0) % 2);
digitalWrite(ledPin1, (value >> 1) % 2);
digitalWrite(ledPin2, (value >> 2) % 2);
digitalWrite(ledPin3, (value >> 3) % 2); // MSB
}
}
【问题讨论】:
-
您是否尝试过使用终端程序而不是 Ruby?这是您的第一次设置还是您已经有一些工作?
标签: ruby serial-port arduino