मैं Arduino (और सामान्य रूप से कंप्यूटर प्रोग्रामिंग) के लिए नया हूं, इसलिए मैं माफी मांगता हूं अगर यह प्रश्न मूर्खतापूर्ण लगता है।
एक बार जब मैंने एक बुनियादी arduino-LED कनेक्शन स्थापित किया, तो मुझे सीरियल पोर्ट के माध्यम से arduino में INTEGERS भेजने में समस्याएं हैं। मैं आसानी से 'm', 'o' वगैरह जैसे कैरेक्टर भेज सकता हूं। हालांकि, अगर मैं कोई नंबर भेजता हूं तो ऐसा लगता है कि यह बस नहीं मिलता।
यहाँ Arduino कोड है, आदर्श रूप में इसे अजगर या धारावाहिक मॉनिटर के माध्यम से USB पोर्ट से एक मान मिलना चाहिए और फिर मूल्य के अनुसार एलईडी की चमक को समायोजित करना चाहिए। (मान सीमा [0,255] में होना चाहिए)।
नोट: मैं ARDUINO UNO और PYTHON 3 का उपयोग कर रहा हूं
// --------------------------
int LED = 10;
int number;
void setup(){
pinMode(LED,OUTPUT);
Serial.begin(9600);
}
void loop(){
number = Serial.read();
Serial.print(number);
Serial.print('\n');
if(number == -1){
number = 0;
}
else if(number > 255){
number = 255;
}
else if(number < 0){
number = 0;
}
analogWrite(LED,number);
delay(1000);
}
हालाँकि, जब मैं सीरियल पोर्ट में या पायथन के माध्यम से एक मान इनपुट करता हूं, उदाहरण के लिए, यह मुझे 48 उत्तर के रूप में देता है (जो, दिलचस्प है, 0 के लिए एएससीआईआई कोड है!) और एलईडी को रोशनी देता है जो कि तब से नहीं होना चाहिए। 0 पर एलईडी बंद होना चाहिए !! मुझे कुछ याद आ रहा है लेकिन मुझे पता नहीं चल रहा है ... क्या आप मुझे बता सकते हैं कि क्या गलत है?
यहाँ मैं पायथन में उपयोग किए जाने वाला कोड है:
import serial
import time
try:
arduino = serial.Serial(port,speed)
time.sleep(2)
print("Connection to " + port + " established succesfully!\n")
except Exception as e:
print(e)
#Note: for characters such as 'a' I set data = b'a' to convert the data in bytes
#However the same thing does not work with numbers...
data = 0
data = arduino.write(valueToWrite)
time.sleep(2)
arduino.close()
मैं क्या गलत या गलत समझ रहा हूं? धन्यवाद।
arduino.write(chr(valueToWrite))