Vamos para o primeiro projeto comunicando o PC com o arduino utilizando Ruby e a gem serialport.

Gostaria de compartilhar o projeto básico que criei hoje comunicando
ruby e serialport com o Arduino.

Segue o link:
http://meetarduino.wordpress.com/2012/04/02/arduino-ruby-e-display-...

Tem o tutorial todo para quem está iniciando, com direito a foto e
video.

É um projeto bem simples, pode haver outros modos de fazer isso mas
como foi o primeiro saiu deste jeito mesmo.

Vamos utilizar neste projeto:

- Arduino Uno

- 8 Resistores de 220 ohms

-Portoboard

- 1 Display de 7 segmentos cathodo ELS-511SURWA-S530-A2

-Ruby e a biblioteca serialport

Fritzing:

Código:

ruby_contdown.pde

//seta cada variavel para cada portq
int led_A = 13;
int led_B = 12;
int led_C = 11;
int led_D = 10;
int led_E = 9;
int led_F = 8;
int led_G = 7;
int led_DP = 6;

void setup() {
Serial.begin(9600);
// define cada porta como saida
pinMode(led_A, OUTPUT);
pinMode(led_B, OUTPUT);
pinMode(led_C, OUTPUT);
pinMode(led_D, OUTPUT);
pinMode(led_E, OUTPUT);
pinMode(led_F, OUTPUT);
pinMode(led_G, OUTPUT);
pinMode(led_DP, OUTPUT);


}
void loop() {
// testa se a porta serial está disponível
if (Serial.available() > 0) {
// le os dados da porta serial armazena na variavel 'entrada'
int entrada = Serial.read();
switch (entrada) {
case '9':
digitalWrite(led_A, HIGH); //sequencia do numero 9
digitalWrite(led_B, HIGH);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, HIGH);
digitalWrite(led_E, LOW);
digitalWrite(led_F, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_DP, LOW);
break;
case '8':
digitalWrite(led_A, HIGH); //sequencia do numero 8
digitalWrite(led_B, HIGH);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, HIGH);
digitalWrite(led_E, HIGH);
digitalWrite(led_F, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_DP, LOW);
break;
case '7':
digitalWrite(led_A, HIGH); //sequencia do numero 7
digitalWrite(led_B, HIGH);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, LOW);
digitalWrite(led_E, LOW);
digitalWrite(led_F, LOW);
digitalWrite(led_G, LOW);
digitalWrite(led_DP, LOW);
break;
case '6':
digitalWrite(led_A, HIGH); //sequencia do numero 6
digitalWrite(led_B, LOW);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, HIGH);
digitalWrite(led_E, HIGH);
digitalWrite(led_F, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_DP, LOW);
break;
case '5':
digitalWrite(led_A, HIGH); //sequencia do numero 5
digitalWrite(led_B, LOW);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, HIGH);
digitalWrite(led_E, LOW);
digitalWrite(led_F, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_DP, LOW);
break;
case '4':
digitalWrite(led_A, LOW); //sequencia do numero 4
digitalWrite(led_B, HIGH);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, LOW);
digitalWrite(led_E, LOW);
digitalWrite(led_F, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_DP, LOW);
break;
case '3':
digitalWrite(led_A, HIGH); //sequencia do numero 3
digitalWrite(led_B, HIGH);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, HIGH);
digitalWrite(led_E, LOW);
digitalWrite(led_F, LOW);
digitalWrite(led_G, HIGH);
digitalWrite(led_DP, LOW);
break;
case '2':
digitalWrite(led_A, HIGH); //sequencia do numero 2
digitalWrite(led_B, HIGH);
digitalWrite(led_C, LOW);
digitalWrite(led_D, HIGH);
digitalWrite(led_E, HIGH);
digitalWrite(led_F, LOW);
digitalWrite(led_G, HIGH);
digitalWrite(led_DP, LOW);
break;
case '1':
digitalWrite(led_A, LOW); //sequencia do numero 1
digitalWrite(led_B, HIGH);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, LOW);
digitalWrite(led_E, LOW);
digitalWrite(led_F, LOW);
digitalWrite(led_G, LOW);
digitalWrite(led_DP, LOW);
break;
case '0':
digitalWrite(led_A, HIGH); //sequencia do numero 0
digitalWrite(led_B, HIGH);
digitalWrite(led_C, HIGH);
digitalWrite(led_D, HIGH);
digitalWrite(led_E, HIGH);
digitalWrite(led_F, HIGH);
digitalWrite(led_G, LOW);
digitalWrite(led_DP, LOW);
break;
}
}
}

Aqui vamos mostrar o código ruby que comunica com a serialport e o arduino.
Obs: o código ruby é comentado utilizando o “#”
Api RUBY: http://www.ruby-doc.org/
ruby_countdown.rb

require 'rubygems' #adiciona as bibliotecas rubygems
require 'serialport' #adiciona a biblioteca serialport

sp = SerialPort.new "/dev/cu.usbmodem1d11" #porta que o arduino esta conectado(varia de cada computador)

while true do #vamos rodar um while, que vai ficar em loop
sp.write "9" #escrevendo na sp.write (serialport)
sleep 1 #espera 1 segundo
sp.write "8"
sleep 1
sp.write "7"
sleep 1
sp.write "6"
sleep 1
sp.write "5"
sleep 1
sp.write "4"
sleep 1
sp.write "3"
sleep 1
sp.write "2"
sleep 1
sp.write "1"
sleep 1
sp.write "0"
sleep 1
end

Datasheet:  ELS-511SURWA-S530-A2

Vídeo:

https://www.youtube.com/watch?v=TkOMksxmGZ8
Resultado final:

Exibições: 911

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço