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
-
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
-
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
-
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.
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.
-
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.
-
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
-
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.
-
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;
-
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
-
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:
/*
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);
}
-
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
-
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.
-
Ok, obrigado mas eu estou a desenvolver o projecto com Arduino + Pure Data, tentando fugir o mais possível à programação :S
-
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)
-
Claro ;)
Uma pequena dúvida, o que significa mesmo ascii ???
-
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/)
-
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..
-
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
}
-
Ok.. pode-se dizer que o seguinte código que eu fiz através de dois já existentes é válido??
#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..
-
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"
-
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
-
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
-
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!
-
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
-
No site oficial?
http://firmata.org/wiki/Main_Page (http://firmata.org/wiki/Main_Page)
-
Já tentei aí, mas acontece que quando tento fazer o download ele redirecciona-me para o tal link que não responde.