Handmades</center>
 
*
Bem-vindo, Visitante. Por favor faça o Login ou Registro. 18 de Abril de 2024, as 21:54:24


Login com nome de usuário, senha e duração da sessão


Páginas:  1 [2] 3   Ir para o Fundo
  Imprimir  
Autor Tópico: Projeto com Arduino  (Lida 33243 vezes)
designermx2
Visitante
« Responder #15 : 13 de Novembro de 2012, as 16:39:09 »

_ quando vi as possibilidades que o arduíno fornece, vi que seria uma boa saída. Só fiquei com receio do tamanho do arquivo, espaço de armazenamento desses pequenos (32k) e das ligações.

Esse serial possui RX e Tx? Não olhei o manual e esquema p q (moderador, peço que me suspenda do fórum) estou no trabalho.

Se funcionar, vou acabar fazendo esse para testar.

Manda o esquema desse super reduzido que você tem. O que peguei dos posts anteriores, tem mais componentes e a placa achei mais chatinha de ser feita. As impressoras daqui a laser estão descascando o tonner e tá muito ruim de fazer.
« Última modificação: 13 de Novembro de 2012, as 16:43:53 por designermx2 » Registrado
Dexter
Visitante
« Responder #16 : 07 de Dezembro de 2012, as 20:13:50 »

Manda o esquema desse super reduzido que você tem.

No próprio site do arduino tem o esquema dele no formato PDF e Eagle.

Adquira o AT328 grave o bootloader do arduino (alguns lugares já vendem o AT328 com o bootloader) liga o TX e RX no PC através de um max232 e alimente o circuito (AT328 e max 232) com 5V regulado, não tem mistério. Na programação cada pino é associado a um número, pelo esquema e layout dá pra descobrir facilmente o pino do AT328 que é utilizado.

Até mais.
Registrado
designermx2
Visitante
« Responder #17 : 07 de Dezembro de 2012, as 22:24:24 »

Na verdade eu comprei o Arduino mega 2560. Pelas minhas contas, esse projeto teria que ter bastante espaço, memória ram adicional para escrever os dados convertidos pelo ADC e bastante pinos disponíveis.

Assim que chegar, poderia tirar umas dúvidas com você e produzirmos juntos o material?

Registrado
gubterra
Visitante
« Responder #18 : 08 de Dezembro de 2012, as 02:47:05 »

Designer  não seria isso aqui que vc quer?

http://ruggedcircuits.com/html/rugged_audio_shield.html
Registrado
designermx2
Visitante
« Responder #19 : 08 de Dezembro de 2012, as 14:04:20 »

foi exatamente esse que andei pesquisando, mas quando vi estava em falta (e parece que ainda está). Esse foi o único pelo que vi que dá para fazer tudo quanto é coisa com relação ao looper. Salvo engano, o módulo de memória ram adicional eles também fabricam (que será necessário para gravar com qualidade alguma coisa). Fiquei de olho nos módulos rugged porque são compatíveis com o arduino. Acabei de adaptar uma tela LCD de celular para colocar no arduino qnd chegar. Farei algumas funções básicas já com o lcd , farei também os botões e funções.

Alguem sabe como fazer para executar uma função inclusa em arquivo externo e executada por outra função (cascata)?

Vou citar um exemplo.

Supondo que quero personalizar meus comandos para facilitar a interface. Pegarei uma biblioteca Glcd e criarei menus dentro de menus por um único comando e quando chegar nos resultados, quero que execute a função com o mesmo nome do submenu. EX:

meu comando seria:

addGroupMenu("Menu Principal",2,"Mostrar Versão","versao", "Voltar","voltar")

Ele criaria na tela o botão menu principal, onde haveriam dois submenus chamados Versão, onde ao escolher ele executaria a função versão e a voltar que executaria a função voltar para a tela anterior.


Faço muito isso em outras coisas que programo aqui e aparentemente fica redundante, mas isso fica muito fácil de organizar as bibliotecas e serparar todas as funções e leitura do código, tendo no código principal praticamente linhas de texto como se fosse uma redação. Fica muito fácil de trabalhar em grupo com esse método e muito fácil de dar manutenção depois.


Alguem experiente teria como fazer um código simples aqui só pra teste?

existem coisas que fico sem saber e n acho no google como por exemplo:


var i=0: Number

function mostreValores(retornoPrint:String):void{

   return(retornoPrint);
   print(retornoPrint);

}


for (i=0;i<10;i++){

  mostreValores("valor"+i)= i

}



Isso eu fiz a grosso modo e não tem nada haver com linguagem de arduino ok? É apenas para entendimento.


Em algumas linguagens, ele concatena e entende que a função receberá o valor de retorno com a concatenação, como exemplo. Se fosse código de arduino, teria que colocar o barecode, declarar fora, etc....


Outra coisa... caso consiga algum avanço em tempo hábil, os colegas ajudariam a montar o projeto ?
Registrado
gubterra
Visitante
« Responder #20 : 08 de Dezembro de 2012, as 15:44:07 »

Cara... eu não consegui entender completamente o que você quis dizer.... eu nunca programei pic.. não sei das limitações dele... mas de C++ eu entendo... e não entendi o que você ta querendo.... tenta codificar em c++o que vc quer ai ja serve de modelo.. dai talvez eu entenda o que você precisa. se eu puder te ajudo com certeza... abraço!
Registrado
designermx2
Visitante
« Responder #21 : 09 de Dezembro de 2012, as 00:01:13 »

Vou usar um exemplo usado no flash.Vamos supor que eu queira chamar uma função. Vou colocar de maneira bem arcaica só como exemplo, já que neste caso não quero entrar em condicionais e matrizes, ok?


Se tenho um conjunto de funções... lerBT1 , apagarLed1 ,acender led1 ,lerBT2 , apagarLed2 ,acender led2 ... e assim por diante, ok?

ai eu faço um for para executar isso um de cada vez até o número 10.

for(i=1;i<=10;i++){

// No flash eu posso chamar várias coisas apenas concatenando, inclusive funções

      _root["lerBT"+i];
      _root["acender"+i];
      _root["acender"+i];

// Esse foi um exemplo meio tosco, mas vou usar outro com o próprio código do arduino

}



 Toma na Cabeça

// ARDUINO

int i;
int pino;
int l;

int pins[]= {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};


void setup() {

   for(int i=0 ; i<54 ; i++){
        pinMode(i,OUTPUT);
       //digitalWrite(i, LOW);

    }



}


void   pulse(int i, int tempo) {
    digitalWrite(i,HIGH);
    delay(tempo);
    digitalWrite(i,LOW);
    delay(tempo);
}


void loop() {
   for(int l=0;l<17;l++){
      pulse(l,100);
   }
}


No caso da linha:

 int pins[]= {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};



queria colocar apenas que a array pins[] receberia automaticamente o valor pelo for... ou seja, ela estaria dentro de um for com o pins.

Entendeu?

Esse código é verdadeiro e já roda em simulador, mas não consegui fazer como eu faria em outros códigos (PHP, ACTION, Jquery)...

Note também que eu criei uma função pulse para fazer o led ficar em fade in  e out sem precisar ficar redigitando... isso encurta o código, mas vamos supor que eu precise variar rapidamente várias funções e que além do pulse(l,100) eu precise trocar o nome da função apenas no final... pulse1(l,100) , pulse2(l,100), pulse3(l,100) ....
« Última modificação: 09 de Dezembro de 2012, as 00:06:34 por designermx2 » Registrado
gubterra
Visitante
« Responder #22 : 09 de Dezembro de 2012, as 00:53:44 »

Você quer variar o nome da função que você vai chamar mandando o nome dela como parametro?   

Desculpa brother é q eu não to pegando a ideia talvez por nunca ter programado um pic...

Mas vamos pelo resultado... como se eu fosse programar pra você.... me pede o que voce quer.... tipo....

Ah eu quero entrar no meu apertar isso selecionar aquilo e que aconteça isso...
ou
ah quero poder chamar diferentes funçoes mudando o parametro
ou
quero mandar o nome da função a ser executada bem como seus parametros atravez de um preset selecionado no menu.....

etc....   acho q não to ajudando muito... mas é que sem entender o que você precisa de fato! fica dificil rsrsrsr... abraço!
Registrado
Ledod
Handmaker
****
Offline Offline

Sexo: Masculino
Mensagens: 1.132

Obrigado
-Dado: 17
-Recebido: 139



« Responder #23 : 09 de Dezembro de 2012, as 09:54:28 »

Citar
No caso da linha:

 int pins[]= {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26};

queria colocar apenas que a array pins[] receberia automaticamente o valor pelo for... ou seja, ela estaria dentro de um for com o pins.

Entendeu?

Esse código é verdadeiro e já roda em simulador, mas não consegui fazer como eu faria em outros códigos (PHP, ACTION, Jquery)...

Note também que eu criei uma função pulse para fazer o led ficar em fade in  e out sem precisar ficar redigitando... isso encurta o código, mas vamos supor que eu precise variar rapidamente várias funções e que além do pulse(l,100) eu precise trocar o nome da função apenas no final... pulse1(l,100) , pulse2(l,100), pulse3(l,100) ....

 Talvez eu não tenha entendido bem, mas e se ela fosse uma variável estática, "static int" ? Assim ela não seria destruída no retorno da função... Seria isso?

 Isso seria o conceito de objeto em C++ correto? Você cria a classe "pulse" e vai criando os objetos a partir dela. Bom, em C acho que não tem jeito mesmo, o máximo que conseguimos fazer é organizar as variáveis em structs.
 Mas há mesmo necessidade de criar várias funções "pulse" ?

 Pelo que eu entendi você quer usar vários pinos do microcontrolador ao mesmo tempo, porém dentro da sua função você tem os "delays", dai encavalaria tudo pois enquanto você não retornasse da função você não poderia fazer mais nada... É isso?

 Um abraço

Eduardo
Registrado
designermx2
Visitante
« Responder #24 : 09 de Dezembro de 2012, as 23:26:03 »

Os dois estão certos.

* Tanto gostaria de saber sobre:

"Você quer variar o nome da função que você vai chamar mandando o nome dela como parametro?"

* Como o caso de Ledod:

"Você cria a classe "pulse" e vai criando os objetos a partir dela. Bom, em C acho que não tem jeito mesmo, o máximo que conseguimos fazer é organizar as variáveis em structs.
 Mas há mesmo necessidade de criar várias funções "pulse" ?"



Ledod, o que quero fazer é criar bibliotecas modificadas usando as já existentes. Você já conhece o Glcd, correto? Imagine agora eu ter um único trabalho de fazer uma estrutura de menus e criar tudo que eu quero executando a função final de acordo com o nome do botão.

Nesse exemplo o delay foi usado por conta do projeto, mas nem sempre haverá delay, entende? O mais importante nesse exemplo é de como executar as funções com nomes variados alterando parâmetros.

Veja esse exemplo que coloquei no iníicio:

addGroupMenu("Menu Principal",2,"Mostrar Versão","funcVersao", "Voltar","funcVvoltar")


Nesse caso existiria um objeto na tela (botão) chamado menu principal que ao entrar era um grupo contendo dois itens. Um deles é para mostrar a versão do software. Em seguida era o nome da função que vai ser executado ao entrar no botão Versão, ou seja, entro no menu principal, vejo dois botões. Um é versão e o outro é Voltar. Se escolher Versão, executa a funcVersao(), se escolher Voltar, executa o funcVoltar e iria para a tela inicial por exemplo.


Isso parece bobo, mas não sei como fazer no arduino passando por parâmetro como executar essa função. Outra coisa é que isso vai facilitar porque posso criar uma biblioteca de funções para apenas executar. O projeto seria grandinho e isso vai ajudar a organizar e simplificar a coisa para agente. Seria uma api dentro da própria api, entendem?


Coisas que penso em ter no projeto: Configuração, formatar SD, versão, voltar, metrônomo (depende de configuração), gravar, executar, volumes (depende de configuração), excluir, etc...


Olhei alguns códigos arduino e vi que eles são bem chatinhos de se trabalhar (como o C) e acho o C++ bem evoluído em quase todos os parâmetros que seriam necessário nesse projeto e ai ficou meio complicado, mesmo sendo uma linguagem antiga (depois que aprende a dirigir em carro automático, andar de fusca tunado fica estranho e  até difícil de dominar).

Achei que para mim vir de linguagens orientadas a objeto e que você pode executar várias coisas locando memória e etc... para entrar em uma que vem de uma estrutura de loop ficou meio complicada, ainda mais quando não conheço a linguagem. Se essas coisas não forem possíveis, acho que vou ter que entrar com o tradicional mesmo e isso tornará o projeto mais longo, porém, sei que vai funcionar.

* Acho que essa semana ele chega. A pergunta que quero fazer é: Existe risco de queimar o arduíno de alugma forma além de consumir mais do que ele fornece ou fornecer mais do que ele pode receber de alimentação?

Quero primeiro saber sobre o arduino (já estou baixando coisas e catando livros) para depois projetar e ai sim fazer... Não quero ir programando e ver no que dá, entendem?

Vocês tem github??


* ( perguntas que são importantes para eu pensar em como seria feito o projeto).
« Última modificação: 09 de Dezembro de 2012, as 23:44:25 por designermx2 » Registrado
Ledod
Handmaker
****
Offline Offline

Sexo: Masculino
Mensagens: 1.132

Obrigado
-Dado: 17
-Recebido: 139



« Responder #25 : 10 de Dezembro de 2012, as 09:56:52 »

 Acho que entendi o que quer fazer!
 Bem eu não conhecia essa library, nunca mexi com o arduino, mas para quem tem curiosidade: http://playground.arduino.cc/uploads/Code/GLCD_Documentation.pdf

 Então, é complicado "voltar" de um C++ para um C, toda a mentalidade/paradoxo de classes e objetos é perdida... Eu acho que é possível sim fazer em C, mas devemos lembrar sempre que o C é uma linguagem estruturada, voltada a funções.

 Ou seja, tente não pensar em objetos e sim em funções e retorno de funções. Por ex, na função de "adcionar um menu", o que você precisaria ? Tente pensar mais no baixo nível do código (é complicado, mas é um bom exercício).

Citar
addGroupMenu("Menu Principal",2,"Mostrar Versão","funcVersao", "Voltar","funcVvoltar")

Nesse caso existiria um objeto na tela (botão) chamado menu principal que ao entrar era um grupo contendo dois itens. Um deles é para mostrar a versão do software. Em seguida era o nome da função que vai ser executado ao entrar no botão Versão, ou seja, entro no menu principal, vejo dois botões. Um é versão e o outro é Voltar. Se escolher Versão, executa a funcVersao(), se escolher Voltar, executa o funcVoltar e iria para a tela inicial por exemplo.

 Para realizar em C essa função teríamos que pensar primeiramente no número máximo de submenus que queremos, pois ai saberíamos quantos parâmetros teríamos que passar para função. Em C não dá para você colocar um parâmetro "a mais" automaticamente, dizer que a partir de certo do ponto da lista de parâmetros, uma será a função e outra a variável. Você precisa declarar isso manualmente.

 Para resolver esse problema acho que teria que organizar o menu como um todo como se fosse uma struct (com cada espaço do menu reservado em uma posição, ou seja, precisa declarar antes quantos são os menus) e a partir dai criar uma função que seta a figura dos menus como um parâmetro dessa struct, e talvez uma flag indicando se é para executar a função. Dai você le o "status" que está a struct (quais os menus, se é para executar a função...) imprime na tela e executa a função de acordo com uma lista pré definida (usando um "switch case" por ex...).

 Acho que teria que ser mais por ai... Devemos lembrar t b m (moderador, peço que me suspenda do fórum) que microcontroladores são bem limitados! Não tem como criar um software totalmente modular com risco de não termos espaço na memória. A menos que você abandone o arduino e parta para um ARM mesmo (a família cortex, e tals) e com isso você rode um SO nele. Mas dai já fugiu da idéia inicial!


 Bem, queimar um microcontrolador devido a software acho impossível... Se o hardware é compatível (pinos de IO ligados corretos, frequência do clock ok, etc) o máximo é travar o programa e consumir alguns mA a mais... Mas nada que possa destruí-lo

Um abraço

Eduardo
Registrado
designermx2
Visitante
« Responder #26 : 10 de Dezembro de 2012, as 11:27:33 »

Ledod, exatamente isso que eu queria saber. Para mim vai ser realmente um grande exercício, pois para quem está acostumado com uma coisa passar para outra em raciocínio de décadas atrás pode ser bem difícil e espero que eu consiga.

Quanto ao arduino, peguei logo o mega 2560 justamente por causa disso. Ele tem 252k de rom, 4k de boot loader e tem 8k de memória ram, mas existem módulos de memória sram para arduino, salvo engano de até 512k.


O maior problema acredito que seria no caso da leitura e gravação no cartão SD. Existe limite de velocidade e isso é ponto crítico no projeto. Se isso não for possível com arduino, farei com que ele seja um controlador de pedais digital com exibição de repertório para usar no palco _...

Existe algum projeto tipo arduino que use processamento ARM? (com interface, módulos e etc?) Caso exista é interessante saber.

Quanto à GLCD é essa mesma a biblioteca. Ele faz muita coisa, inclusive menu de forma mais direta.
Registrado
Ledod
Handmaker
****
Offline Offline

Sexo: Masculino
Mensagens: 1.132

Obrigado
-Dado: 17
-Recebido: 139



« Responder #27 : 10 de Dezembro de 2012, as 18:24:54 »

 Arduino com ARM? Acho que não existe...

 Na verdade o Arduino mesmo é só um bootloader e um conjunto de library's e uma IDE para facilitar bastante o desenvolvimento. O hardware mesmo é um microcontrolador com alguns periféricos e só!
 Digamos que eles mastigaram toda a parte chata de mexer com microcontroladores (configurações, como gravar) e deixaram apenas a parte "legal", que é a programação em si.

 Um ARM (pode ser 7 mesmo, os cortex M já são até melhores) é bem mais poderoso, tem funções de debugger in circuit, trace, já é uma arquitetura de 32 bits... Mas não tem tanto suporte quanto um arduino, você precisaria procurar as librarys ou se contentar com as que vem com as IDE's, ou programar na "raça" Cheesy
 

 Espero que consiga! Antes, tente desenhar um diagrama do que você precisa e sempre pensando nas funções e o que é retornado das funções. Use e abuse dos ponteiros!!!


 Um abraço

Eduardo
Registrado
designermx2
Visitante
« Responder #28 : 10 de Dezembro de 2012, as 20:01:40 »

Vou iniciar com o arduino mesmo... só se ele for extremamente limitado que tentaria mudar. Você manja Ledod? tem alguns exemplos para passar?

Só para mostrar como o arduino tem sido motivo de empolgação de várias coisas, surgiu o Pyxis OS , onde existe até interface de desenvolvimento.

http://www.youtube.com/watch?v=rLh77U9Wslw

Quanto à memória ram, achei esse shild:

http://ruggedcircuits.com/html/megaram.html
« Última modificação: 10 de Dezembro de 2012, as 21:08:48 por designermx2 » Registrado
Ledod
Handmaker
****
Offline Offline

Sexo: Masculino
Mensagens: 1.132

Obrigado
-Dado: 17
-Recebido: 139



« Responder #29 : 12 de Dezembro de 2012, as 19:52:19 »

 Arduino não tenho experiência nenhuma, nunca utilizei... Fiz alguns programas em C para ARM, nesse quesito posso tentar ajudar!

 Interessante esse SO, já é algo bem mais evoluído! Talvez seja uma idéia legal, como mostrado no vídeo, afinal, o que você precisa é muito mais uma interface com usuário do que um simples microcontrolador executando um código em loop.

 Qualquer coisa só perguntar!

 Um abraço

 Eduardo
Registrado
Páginas:  1 [2] 3   Ir para o Topo
  Imprimir  
 
Ir para:  


Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines

XHTML 1.0 Válido! CSS Válido! Dilber MC Theme by HarzeM
Página criada em 0.063 segundos com 22 procedimentos.
SimplePortal 2.3.3 © 2008-2010, SimplePortal