Social Icons

Mostrando postagens com marcador Barra de LED's. Mostrar todas as postagens
Mostrando postagens com marcador Barra de LED's. Mostrar todas as postagens

Luminária RGB + Android com Arduino!


Material Utilizado para o protótipo:
  • Arduino
  • Celular com Android e Internet.
  • Shield Ethernet
  • 3 LEDs nas cores Vermelha, Verde e Azul (RGB)
  • Bateria de 9v
  • Armação da Luminária
  • Folha de Papel / Acrílico

Códigos Usados...

Processing - Primeiros passos para interação com Arduino

Processing + Arduino | Interação Simples

Olá, gostaria de pedir desculpas pelo tempo sem atualização. Tanto o Processing como o Arduino já possuem bibliotecas prontas para uma comunicação eficaz entre eles, e neste post veremos como começar a utilizar tais recursos.

Para começar faça o download da biblioteca Arduino para o processing, já que ela não é nativa do programa.
processing-arduino-0017.zip
Extraia o arquivo zip dentro da pasta "libraries" no Processing, para que você possa utilizá-la.

A seguir, no Arduino, abra o exemplo "Standard Firmata" e faça o upload na sua placa, este exemplo contem o Firmware necessário para interagir diretamente PC-Arduino, este programa é uma ligação entre todos os recursos do arduino e a sua comunicação serial, assim você poderá acessar "diretamente" os valores nas suas entradas digitais e até mesmo escrever valores nas saidas do Arduino interagindo apenas com o seu PC, em outras palavras, você transforma o arduino em um "periférico" do seu pc e pode controlar ele diretamente.

Voltando.


Se você já fez o upload do Firmata para a sua placa, ela não precisa de mais nada para funcionar! Agora vamos a um exemplo básico.

Leitura digital utilizando o Firmata e o Processing

Neste exemplo vamos ver como acessar as portas do Arduino para utilizá-las como saídas para nosso programa Processing. Ligue alguns Leds nos pinos digitais do Arduino, nunca use os pinos 0 e 1 pois eles são ligações diretas com a comunicação serial, que neste caso será obrigatoriamente usada pela placa para conexão com o PC, independente do meio usado (usb, Bluetooth, XBee, rádio, etc). Continuando...

Exemplo de ligações.
Como já disse, você poderá ligar em qualquer pino exceto os pinos 0 e 1.

A seguir abra o Processing e abra o exemplo arduino_output que acompanha os arquivos da biblioteca, deverá ser como este:



import processing.serial.*; // Biblioteca serial nativa do processing

import cc.arduino.*; // Biblioteca de interação com o arduino

Arduino arduino; // Cria um novo objeto arduino para interação com a placa

color off = color(4, 79, 111); //Declara as cores usadas no exemplo
color on = color(84, 145, 158);

int[] values = { Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,
 Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,
 Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW };
//Cria um array para armazenar os valores a serem passados para a placa
//Arduino.LOW representa os valor LOW na placa arduino sendo acessada pela biblioteca
//Arduino

void setup() {
  size(470, 200);//Tamanho da tela
  
  println(Arduino.list());//Esse é um comando usado apenas para saber
  // qual a porta utilizada pela placa.
  
  arduino = new Arduino(this, Arduino.list()[0], 57600); //Construtor
  //do objeto arduino, onde Arduino.list()[0] é a porta usada e 57600 é a Baud
  //da porta serial
  
  //Este For é uma parte do código que devemos prestar atenção
  //pois nele estamos utilizando código do arduino.
  //tente substituir este bloco por:
  /*
  arduino.pinMode(2,Arduino.OUTPUT);
  arduino.pinMode(3,Arduino.OUTPUT);
  arduino.pinMode(4,Arduino.OUTPUT);
  etc
  */
  for (int i = 0; i <= 13; i++)
    arduino.pinMode(i, Arduino.OUTPUT);
}
//Percebeu a semelhança? com o código do arduino?
//Pois é...


//Este bloco desenha a interface, não vem ao caso agora
void draw() {
  background(off);
  stroke(on);
  
  for (int i = 0; i <= 13; i++) {
    if (values[i] == Arduino.HIGH)
      fill(on);
    else
      fill(off);
      
    rect(420 - i * 30, 30, 20, 20);
  }
}

//Esta função é um presset do Processing, pode ser chamada de Evento
// Ela é chamada SEMPRE que um botão do mouse é pressionado.
void mousePressed()
{
  int pin = (450 - mouseX) / 30;//Utiliza a posição X do mouse para
  //saber que botão foi clicado
  //Perceba que aqui ele não utiliza a posição Y 
  //mas vamos deixar assim pra simplificar.
  
  //Este bloco if simplesmente comuta os valores
  if (values[pin] == Arduino.LOW) {
    // A parte legal esta aqui!!
    // pra quem já conhece o arduino e POO não tem o que explicar
    // se não vamos lá:
    // aqui você manda a sua placa, representada aqui pelo objeto "arduino"
    // e manda ele escrever numa saída digital
    // perceba que a variável pin é uma variável do programa, e não da placa
    arduino.digitalWrite(pin, Arduino.HIGH);
    values[pin] = Arduino.HIGH;
  } else {
    arduino.digitalWrite(pin, Arduino.LOW);//idem
    values[pin] = Arduino.LOW;
  }
} 

Um muito interessante EMF Detector com Arduino...

Esse Detector de Atividade elétrica apartir de campos elétromagnéticos que se formam ao redor de condutores achei muito interessante, ja existe uma chave teste que criaram que faz isso, o interessante desse projeto em si é a sensibilidade e a criatividade pois ele usa o próprio condutor como "Sensor" de presença, pois CMOS é muito sensível, seria como um ruído de tensão que interpretasse esse sinal de campo elétromagnético e mostrasse na barra de LED's. Repare que no final do video ele fala que colocou a "antena" o condutor sensor muito perto do circuito de LED's e isso pode estar gerando uma interferência e/ou "microfônia"(acho que não mas é bom explicar) pois se o condutor liga um LED por um simples Pulso e o LED aumenta esse campo eletromagnético pois ele gera alguma atividade assim e o sensor o Lê denovo que acende mais um LED... dai pode até queimar, como isso não aconteceu deduzo eu que não foi o caso ah vá mas fica a dica!