Arduino + Ruby e Display 7 Segmentos

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

 

 

 

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:

Resultado final:

Esse post foi publicado em Arduino, Eletrônica, Ruby. Bookmark o link permanente.

Uma resposta para Arduino + Ruby e Display 7 Segmentos

  1. Douglas disse:

    Po legal Marquinhos vc é bom meu caro !!!
    Mas prefiro a linguagem de arduino quando formos executar projetos juntos…hehehe!
    Abraço…

Deixe um comentário