Tôi đang cố gửi một số nguyên qua cổng nối tiếp tới Ardunio của mình. Chip sau đó sẽ hiển thị số nhị phân trên đèn LED. Tuy nhiên tôi đang gặp rất nhiều rắc rối khi cố gắng gửi dữ liệu dưới dạng một byte trên cổng nối tiếp, đến mức tôi có thể gỡ lỗi mã sau gửi nó như là các giá trị char ASC.Viết byte vào Arduino từ Ruby qua nối tiếp
Có ai có thể chỉ cho tôi đúng hướng hoặc phát hiện lỗi không? Tôi thực sự đánh giá cao nó. Tôi đã kéo mái tóc của tôi ra ngoài trong một thời gian dài.
của Ruby
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
Arduino
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
}
}
Bạn đã thử sử dụng chương trình đầu cuối thay vì Ruby chưa? Đây có phải là thiết lập đầu tiên của bạn hay bạn đã có thứ gì đó hoạt động không? –