27 Mar

Arduino və Ruby.

Axırki məndə bir Arduino istifadiəçisi oldum. Arduino UNOnu ələ keçirdim. Ruby isə ən xoşladigim programlaşdırma dili oldugu üçün, çalışdım onları bir bir ilə tanış edim. Lakin İnternetdə onların birgə istifadəsi üçün çoxdan və cür-bəcür gemlər, programmlar yazılıb. Məsələn onlardan çoxusunu burda tapmag olar – ruby and arduino. Bunlardan arduino_firmata gemi mənə ən yaxın görsəndi. Ona görədə onu istifade etdim. Esas tələblərimiz:
* Ruby
* Arduino İDE
* arduino_firmata gem

Ruby 2 versiya təzə çixdıgını görə elə onu işlədək.

[biotin@lenovo][~/arduino]% ruby -v 
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]

Arduino İDEni arduino saytından pulsuz yükləmək olar.
Arduino_firmata gemi isə belə install edək:

gem install arduino_firmata


Hər şez hazır oldugdan sonra yoxlayag. Bunun üçün Arduino İDEni açag ordan
Arduino IDE -> [File] -> [Examples] -> [Firmata] -> [StandardFirmata]
seçek və UNO upload edib yükləyək.
Sonra isə keçək terminalımıza.

[biotin@lenovo][~/arduino]% arduino_firmata --list
* /dev/ttyACM0

Arduino hansi portda goşuldugunu yoxladıg.

arduino_firmata digital_write 13, true

13 digital çıxışa goşulan daxili LEDi goşur və bu əmr isə

arduino_firmata digital_write 13, false

Onu söndürür.
Bu ruby faylı isə hər bir saniyədən sonra LEDi yandırıb söndürək üçündür.

require "rubygems"
require "arduino_firmata"

arduino = ArduinoFirmata.connect ARGV.shift
puts "firmata version #{arduino.version}"

arduino.pin_mode 13, ArduinoFirmata::OUTPUT
stat = true
loop do
  puts stat
  arduino.digital_write 13, stat
  stat = !stat
  sleep 1
end

Maraglı xüsusiyətlərdən biri odurki hətta sinatraya da goşmag olar və brauserdən linklər ilə LED yandırıb söndürmək olar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env ruby
$:.unshift File.expand_path '../lib', File.dirname(__FILE__)
require 'rubygems'
require 'sinatra'
require 'eventmachine'
require 'arduino_firmata'

<ol>
<li>arduino = ArduinoFirmata.connect</li>
</ol>


arduino = ArduinoFirmata.connect nil, :nonblock_io => true, :eventmachine => true

get '/' do
  redirect './on'
end

get '/on' do
  analog = arduino.analog_read(0)
  arduino.digital_write 13, ArduinoFirmata::HIGH
  "<p>analog : #{analog}</p><p><a href='./off'>LED OFF</a></p>"
end

get '/off' do
  analog = arduino.analog_read(0)
  arduino.digital_write 13, ArduinoFirmata::LOW
  "<p>analog : #{analog}</p><p><a href='./on'>LED ON</a></p>"
end

Exif_JPEG_PICTURE

Arduino Firmata səifəsi – link.

Tweet about this on TwitterShare on FacebookShare on Google+Share on RedditShare on VK