पर बाइट लिखें, मैं अपने Ardunio में धारावाहिक बंदरगाह पर एक पूर्णांक भेजने की कोशिश कर रहा हूँ। चिप तब एलईडी पर बाइनरी में संख्या प्रदर्शित करने जा रहा है। हालांकि मुझे धारावाहिक बंदरगाह पर एक बाइट के रूप में डेटा भेजने की कोशिश करने में बहुत परेशानी हो रही है, जहां तक मैं निम्नलिखित कोड डीबग कर सकता हूं इसे एएससी चार मानों के रूप में भेजता है।रूबी से रूडी से Arduino
क्या कोई मुझे सही दिशा में इंगित कर सकता है या गलती को देख सकता है? मैं वास्तव में इसकी सराहना करता हूं। मैं लंबे समय से इस पर अपने बालों को खींच रहा हूं।
रूबी
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
}
}
क्या आपने रूबी के बजाय टर्मिनल प्रोग्राम का उपयोग करने का प्रयास किया है? क्या यह आपका पहला सेटअप है या क्या आपके पास पहले से कुछ काम कर रहा है? –