LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: andalves em 15 de Maio de 2010, 16:37

Título: Projecto com utilzação de IR
Enviado por: andalves em 15 de Maio de 2010, 16:37
Boa tarde.

Registei-me há alguns dias no fórum e comecei a fazer os tutoriais que consegui e achei interessantes para me conseguir interiorizar  com o Arduino. Consegui arranjar o livro "Getting Started with Arduino" e também fiz os tutoriais de lá.

Já me sinto um pouco mais à vontade com o Arduino mas, claramente, não domino quase nada disto.

Contudo, pretendo fazer uma instalação para uma disciplina, que terá sensores IR a despertar acções em colunas e projectores de luz.

Este esquema é simples de fazer apenas com o Arduino?

Também pensei em utilizar o Pure Data juntamente com o Arduino mas ainda não me prolonguei na investigação em relação a esse tema. (se alguém souber de sites ou tenha dicas que me possam ser uteis, agradecia que me ajudassem)

Cumprimentos
--
André Alves
Título: Re: Projecto com utilzação de IR
Enviado por: senso em 15 de Maio de 2010, 21:13
O arduino faz isso bem.
Conheces processing, se calhar é mais simples de o usar em conjunto com o arduino que o pure data, só conheço o processing tambem, por isso não sei, mas o processing é feito pelas mesmas pessoas que fizeram o arduino, por isso a integração entre os dois é superior
Título: Re: Projecto com utilzação de IR
Enviado por: guibot em 15 de Maio de 2010, 22:54
André, o que pretendes fazer é relativamente simples, mas se não tens experiência vai requerer muitas horas passadas a investigar, experimentar, tentar. É sem dúvida um projecto excelente para entrares neste mundo.

Pure data e Processing são paradigmas distintos, pure data consiste em programação visual em que cada objecto tem a forma de uma caixinha que ligas com uma corda a outras caixinhas (objectos). É especialmente orientado para quem não quer ver linhas de código à frente, para entrares por aqui a dentro nada melhor do que começar pelo próprio site: http://puredata.info/ (http://puredata.info/)

Processing é uma linguagem simplificada de programação baseada em java, ideal para quem quizer dar os primeiros passos e evoluir a partir daí para outras linguagens.

Citar
o processing é feito pelas mesmas pessoas que fizeram o arduino, por isso a integração entre os dois é superior
senso desculpa a correcção mas o Processing foi criado por Ben Fry e Casey Reas e este projecto nasceu um pouco antes do Arduino, que por sua vez foi criado por Massimo Banzi, D. Cuartielles, David Mellis e Tom Igoe.

A comunicação entre Arduino e processing ou pure data é processada da mesma maneira - comunicação serial.
Título: Re: Projecto com utilzação de IR
Enviado por: senso em 16 de Maio de 2010, 23:37
Ups, fiquei com essa ideia por os IDE's serem iguais e nos problemas relatados sobre o IDE do arduino, são sempre corrigidos á medida que vai saindo versões mais actuais do IDE do processing, peço desulpa pelo erro induzido.
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 17 de Maio de 2010, 20:17
Obrigado a ambos, na verdade queria evitar, o mais possível, o código, logo, vou seguir com o Pure Data.

Toda esta história da forma de os programas comunicarem em série, é tudo uma novodade para mim. Acho que vou então investigar como faço mesmo essa ligação primeiro que tudo e ,só depois, perceber um pouco mais do Pure Data.

Secalhar o melhor para mim próprio é desenhar o circuito eléctrico do meu projecto, estou certo? Talvez até para o caso de vos querer mais tarde colocar questões sobre o assunto..

cumprimentos
Título: Re: Projecto com utilzação de IR
Enviado por: guibot em 17 de Maio de 2010, 20:27
Na minha opinião, antes do circuito electrico deverás elaborar um diagrama/fluxograma com todos os componentes e dispositivos do teu projecto.
Isto serve para começares a definir bem o que pretendes. Tendo terminado esta etapa é que passas para o circuito eléctrico.
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 17 de Maio de 2010, 20:56
Essa parte já está pensada, tenho uma planta da instalação que estou a pensar fazer desenhada.(em anexo)

Este é o material que vou precisar para o projecto. (mais cortinas pretas e estrutura para montar o "labirinto")

- 5 sensores Infra-Vermelhos;
- 4 projectores luz;
- 4 imagens fotográficas;
- 3 colunas;
- Leds;
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 20 de Maio de 2010, 17:42
Boas, estou-me a ver um pouco atarefado com a programação.

Tenho um sensor IR sharp, para colocá-lo a funcionar, posso utilizar o código que está no tópico de construir um sensor caseiro? Eu já tentei com esse código e não consegui.

Cumprimentos
Título: Re: Projecto com utilzação de IR
Enviado por: amando96 em 20 de Maio de 2010, 17:59
O caseiro é digital, ou está 1, ou 0, o da sharp é analogico, com o arduino tem adc de 10-bit tens valores entre 0 e 1024.

o IDE tem um exemplo, este aqui:
Código: [Seleccione]
/*
  Analog input, serial output
 
 Reads an analog input pin, prints the results to the serial monitor.
 
 The circuit:

 * potentiometer connected to analog pin 0.
   Center pin of the potentiometer goes to the analog pin.
   side pins of the potentiometer go to +5V and ground
 
 created over and over again
 by Tom Igoe and everyone who's ever used Arduino
 
 */
 
 void setup() {
  Serial.begin(9600);
 }
 
 void loop() {
  // read the analog input into a variable:
   int analogValue = analogRead(0);
   // print the result:
   Serial.println(analogValue);
   // wait 10 milliseconds for the analog-to-digital converter
   // to settle after the last reading:
   delay(10);
 }
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 22 de Maio de 2010, 17:29
Tenho novamente outra dúvida.

Tenho o esquema do sensor caseiro montado e a funcionar. Como é que agora posso por exemplo colocar uma coluna a tocar quando o sensor apanha alguma coisa.

Desculpem mas eu não "pesco" quase nada disto :S
Título: Re: Projecto com utilzação de IR
Enviado por: guibot em 22 de Maio de 2010, 17:39
Precisas de por o arduino a comunicar com uma aplicação que vai ler o audio. Esta aplicação pode ser uma das que já falámos anteriormente (processing, pd, maxmsp, etc).

Se fores para o processing aconselho que vejas estes 2 optimos tutoriais, em que explicam como por o arduino a "falar" para o processing.

http://todbot.com/blog/bionicarduino/ (http://todbot.com/blog/bionicarduino/)

e

http://todbot.com/blog/spookyarduino/ (http://todbot.com/blog/spookyarduino/)

Depois no processing só precisas de ver como fazes para ler um ficheiro de audio.
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 22 de Maio de 2010, 19:52
Ok, obrigado mas eu estou a desenvolver o projecto com Arduino + Pure Data, tentando fugir o mais possível à programação :S



Título: Re: Projecto com utilzação de IR
Enviado por: guibot em 22 de Maio de 2010, 20:59
Estás a querer fugir à programação, mas vais ter que a enfrentar na mesma porque as coisas não aparecem feitas  :p

Se estás a usar PD tenta isto: http://www.arduino.cc/playground/Interfacing/PD (http://www.arduino.cc/playground/Interfacing/PD)
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 22 de Maio de 2010, 21:57
Claro  ;)

Uma pequena dúvida, o que significa mesmo ascii ???
Título: Re: Projecto com utilzação de IR
Enviado por: antonio_jose em 22 de Maio de 2010, 22:00
Claro  ;)

Uma pequena dúvida, o que significa mesmo ascii ???

ASCII (acrônimo para American Standard Code for Information Interchange, que em português significa "Código Padrão Americano para o Intercâmbio de Informação")

Exemplo: http://www.asciitable.com/ (http://www.asciitable.com/)
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 23 de Maio de 2010, 12:03
Deparei-me com um problema na programação..

O que acontece é o seguinte, tenho o código para fazer o sensor trabalhar, depois também tenho o código para enviar informação em serial para o Pure Data.

O que acontece é que dá-me o seguinte erro quando faço o código numa nova "tab":

 In function 'void setup()':
error: redefinition of 'void setup()' In function 'void loop()':

Já andei a investigar e parece que basta fazer uma vez o void setup() e o void loop(). Como é que eu me arranjo com esta história? Já tentei inventar e não me saiu nada bem..

Escrevo os dois códigos na mesma tab ou tanto faz? se basta "dizer" uma vez void setup() e o void loop(), como é que faço para escrever a segunda parte do código que neste caso é o do "arduino_to_PD"

Desculpem se está muito confusa a minha dúvida..

Se poderem ajudar, fico-vos muito grato..
Título: Re: Projecto com utilzação de IR
Enviado por: guibot em 23 de Maio de 2010, 12:11
não percebi muito bem a tua dúvida, mas parece-me que estás a duplicar as funções setup() e/ou loop(). estas duas funções só podem ser declradas uma vez no teu programa.

se queres fazer uma função (ou método) para enviar data para o pd, faz por exemplo:

void arduinoToPD() {
     // código aqui
}
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 23 de Maio de 2010, 12:28
Ok.. pode-se dizer que o seguinte código que eu fiz através de dois já existentes é válido??

Código: [Seleccione]
#include <MsTimer2.h>IR_Sensor
#define irx 2   // Sensor IR no pin digital 2
#include <SimpleMessageSystem.h>

static boolean output = HIGH;  // Variável para defenir o estado do LED de infravermelhos, é estática para ser usada durante a interrupção
char firstChar;
char secondChar;

void setup(){
  pinMode(irx, INPUT);     // Pin onde está o LED infravermelhos é pin output
  Serial.begin(9600);      // Iniciar comunicação Serial com o computador...
  MsTimer2::set(5, flash); // Defenir intrrupções de 5 em 5 ms e durante a interrupção é chamada a função flash
  MsTimer2::start();       // Iniciar interrupções
  Serial.begin(115200);
}

void loop(){
  while(digitalRead(irx));   // Enquanto não houver nada no Sensor não sai daqui, o sensor coloca 1 quando n detecta nada e passa a 0 qd detecta algo
  Serial.println("ICEBERG!"); // Oi.. Apanhou qualquer coisa... OH NÂO É UM ICEBERG... OH GOD, THE PAIN, CAN YOU FEEL THE PAIN?
  // MAYDAY MAYDAY!
  // - Alô diz iz German Cost Guard, can we help you? (Sotaque alemão)
  // YES, YES! We're SINKING!
  // - Okay so what are you sinking (thinking) about? (ahha XD)
 
  if (messageBuild()) { // Checks to see if the message is complete
      firstChar = messageGetChar(); { // Gets the first word as a character

     if (firstChar = 'r') { // Checking for the character 'r'
          secondChar = messageGetChar(); // Gets the next word as a character
          if (firstChar = 'd') // The next character has to be 'd' to continue
               messageSendChar('d');  // Echo what is being read

       for (int i=0;i<=5;i++) {
       messageSendInt(analogRead(i)); // Read analog pins 0 to 5
          }

       for (int m=2;m<=12;m++) {
       messageSendInt(digitalRead(m)); // Read digital pins 2 to 12, 13 is onboard LED on Arduino NG
          }
           
       messageEnd(); // Terminate the message being sent
       
         
                    }
      }
   }
}

void flash() {               // Função chamda durante a interrupção
  digitalWrite(12, output);  // Anceder ou apagar o LED IR
  output = !output;          // Alterar o output...
}


Se isto estiver correcto já só me falta arranjar um trigger no PD que faça despertar alguma coisa..

PS.: Desculpem mas não sei como se faz para inserir aquela "caixa de código" aqui nos posts..
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 23 de Maio de 2010, 13:14
Já agora, no Serial Monitor seria suposto aparecer "ICEBERG" quando o sensor detecta alguma coisa ?? é que quando me parece que o sensor detecta alguma coisa, aparecem caractéres deste género "u¢ÿ¦u¢ÿ¦õ"ÿ¦u¢ÿ¦u¢ÿ¦u¢ÿ¦õ"ÿ&u¢ÿ¦u"ÿ¦u¢ÿ¦u¢ÿ¦u¢ÿ¦u¢ÿ¦u¢ÿ¦u¢ÿ¦u"
Título: Re: Projecto com utilzação de IR
Enviado por: senso em 23 de Maio de 2010, 13:59
Tens a mesma velocidade no serial monitor que no serial.begin, que está repetido no teu código, primeiro tens Serial.begin(9600) e depois tens Serial.begin(115200), não estou a perceber bem essa do message, biblioteca meio estranha :S
Título: Re: Projecto com utilzação de IR
Enviado por: guibot em 23 de Maio de 2010, 14:06
Exacto, no void setup(), tens repetido serial.begin(...)

só podes ter um, vê qual é a que veio com o SMS e deixa ficar esse... depois no interface do arduino quando clicas no Serial Monitor tens que escolher 115200
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 23 de Maio de 2010, 14:39
muuito agradecido!!!

Confirmem-me só se, no que diz respeito ao arduino, está tudo pronto a comunicar com o Pure Data, para saber se posso passar a desvendar os segredos deste programa!

Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 25 de Maio de 2010, 17:05
Ola novamente!

Alguém me sabe dizer onde posso arranjar a firmata mais aconselhada para utilizar o Pduino ?

eu tento fazer o download daqui http://at.or.at/hans/pd/objects.html#pduino (http://at.or.at/hans/pd/objects.html#pduino) mas parece já não estar em funcionamento.

cumprimentos
Título: Re: Projecto com utilzação de IR
Enviado por: senso em 25 de Maio de 2010, 17:41
No site oficial?
http://firmata.org/wiki/Main_Page (http://firmata.org/wiki/Main_Page)
Título: Re: Projecto com utilzação de IR
Enviado por: andalves em 25 de Maio de 2010, 19:23
Já tentei aí, mas acontece que quando tento fazer o download ele redirecciona-me para o tal link que não responde.