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
Po legal Marquinhos vc é bom meu caro !!!
Mas prefiro a linguagem de arduino quando formos executar projetos juntos…hehehe!
Abraço…