আরডুইনগুলি সাধারণত ইউএসবি সিরিয়াল ডিভাইস হিসাবে উপস্থিত হয়। বর্তমান বোর্ডগুলি মূল মাইক্রোপ্রসেসরের মধ্যে নির্মিত ইউএসবি সিরিয়াল ড্রাইভার ব্যবহার করে তবে পুরানো আরডুইনোস (এবং ক্লোনস) পৃথক তৃতীয় পক্ষের ইউএসবি-সিরিয়াল চিপ ব্যবহার করে।
Serial.print
আরডুইনো থেকে কেবল রাস্পবেরি পাইতে ডেটা পেতে , আমি জিএনইউ স্ক্রিন প্রোগ্রামটি একটি বেসিক টার্মিনাল হিসাবে ব্যবহার করি : screen [serial-port] [baud-rate]
(উদাহরণস্বরূপ screen /dev/ttyACM0 9600
)।
আমি তিনটি ভিন্ন আরডুইনো এবং একটির চেয়ে আলাদা ক্লোন পরীক্ষা করেছি। আরও নতুন রূপগুলি সমস্ত /dev/ttyACM0
বন্দর হিসাবে উপস্থিত হয়েছিল এবং পুরানোগুলি /dev/ttyUSB0
। এটি আমি রাস্পবিয়ান এর অধীনে পেয়েছি:
রাস্পবেরি পাই হয়ত আরডুইনো চালানোর জন্য পর্যাপ্ত শক্তি সরবরাহ করতে পারে না, যাতে আপনার বাহ্যিক শক্তির প্রয়োজন হতে পারে। সম্পূর্ণতার জন্য, আমি একটি প্রোলিফিক PL2303 পরীক্ষাও করেছি , যদিও এটি আমার জানা কোনও আরডিনোতে নেই। এটি বেশ আনন্দের হিসাবে হাজির /dev/ttyUSB0
।
সেন্সরগুলির সাথে আরও জটিল যোগাযোগের জন্য, আপনি ফিরমাতা বিবেচনা করতে পারেন , "হোস্ট কম্পিউটারের সফ্টওয়্যার থেকে মাইক্রোকন্ট্রোলারদের সাথে যোগাযোগের জন্য একটি জেনেরিক প্রোটোকল"। এটি আরডিনো এবং পাইথন লাইব্রেরিগুলিকে রাস্পবেরি পাই সাইডে চালানোর জন্য বাস্তবায়ন রয়েছে।
এলএম 35 পড়ার জন্য এবং এলইডি এর উজ্জ্বলতা পরিবর্তন করতে পাইফিরমাতা ব্যবহার করে এখানে একটি ছোট উদাহরণ রয়েছে :
#!/usr/bin/python
# -*- coding: utf-8 -*-
# simple test of pyfirmata and Arduino; read from an LM35 on A0,
# brighten an LED on D3 using PWM
# scruss, 2012-08-14 - tested on Arduino Uno & Raspberry Pi (Raspbian)
import pyfirmata
# Create a new board, specifying serial port
board = pyfirmata.Arduino('/dev/ttyACM0')
# start an iterator thread so that serial buffer doesn't overflow
it = pyfirmata.util.Iterator(board)
it.start()
# set up pins
pin0=board.get_pin('a:0:i') # A0 Input (LM35)
pin3=board.get_pin('d:3:p') # D3 PWM Output (LED)
# IMPORTANT! discard first reads until A0 gets something valid
while pin0.read() is None:
pass
for i in range(10):
pin3.write(i/10.0) # set D3 to 0, 10%, 20%, ... brightness
print "PWM: %d %% Temperature %.1f °C" % (i * 10, pin0.read() * 5 * 100)
board.pass_time(1) # pause 1 second
pin3.write(0) # turn LED back off
board.exit()
পাইফিরমাতা ব্যবহার করার সময় কিছু ক্যাভেট রয়েছে:
- অ্যানালগ পাঠ করে এবং পিডব্লিউএম রাইটিংগুলিকে 0 .. 1 ব্যাপ্তিতে স্বাভাবিক করা হয়, এবং স্ট্যান্ডার্ড আরডুইনো 0 .. 255 এবং 0 .. 1023।
- সিরিয়াল বাফার উপচে পড়া পুরানো পড়া বন্ধ করতে আপনার সত্যই পৃথক পুনরাবৃত্ত থ্রেড শুরু করতে হবে
- যেহেতু আরডুইনো অবিচ্ছিন্নভাবে পড়া হয়, তাই নিশ্চিত হয়ে নিন যে বন্দরগুলি থেকে পড়ার আগে পাইফিরমাতা সংযোগ পুরোপুরি শুরু হয়েছে। অন্যথায়
None
মানগুলি অনুসরণ করে।