Estoy tratando de enviar un número entero sobre el puerto serie a mi Ardunio. El chip mostrará el número en binario en los LED. Sin embargo, tengo muchos problemas para tratar de enviar los datos como un byte sobre el puerto serie, en lo que puedo depurar, el siguiente código lo envía como valores de ASC char.Escribir byte en Arduino desde Ruby sobre la serie
¿Alguien puede señalarme en la dirección correcta o detectar el error? Realmente lo apreciaría. He estado tirando de mi cabello sobre esto durante mucho tiempo.
Rubí
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
}
}
¿Ha intentado usar un programa de terminal en lugar de Ruby? ¿Es esta tu primera configuración o ya tienes algo funcionando? –