Olá galera,
Dificilmente fazemos alguma coisa em arduino sem fazer um teste blink pra ver se ta tudo ok.
Bem, eu sai pensando em como diminuir o codigo do blink ao minimo.
Esse é o meu blink minimo.
Se alguem tiver um jeito de diminuir mais, fala ai.
int pin1=13; //Define pino do led a piscar
boolean liga=0; // define uma variavel como boleana 0 ou 1
void setup() {
pinMode(pin1, OUTPUT);} // indica que o pino e uma saida
void loop() {
digitalWrite(pin1,liga=!liga); // inverte o estado do pino a cada passagem pela linha
delay(500); // defino o tempo entre piscadas
}
Tags:
Entendi.
Eu tô usando a IDE 1.6.5.... por motivos de compatibilidade com o plugin eclipse.
É muito mais fácil desenvolver bibliotecas com o eclipse do que com a IDE do Arduino - que ailás não foi feita para isso.
Mas realmente, lendo essas notas, uma série de bugs foram corrigidos a partir do release 1.6.6.
Será que não dá para deixar instalado o release 1.6.5 para utilização pelo eclipse e instalar os novos releases da IDE para programação de sketch ?
A primeira tentativa que eu fiz foi um fracasso, o release que eu instalei (1.6.7) fez uma lambança na pasta .arduino15 que a instalação cria, parou de funcionar o eclipse, a versão 1.6.7 se perdia...
Gostei sim da mudança que vc fez na biblioteca. Mas eu optei por outra pequena modificação, o sketch onde pretendo utiliza-la está com problemas de ocupação de memória, eu optei por sacrificar a chamada da função:
void digitalToggleDelay(uint8_t P, unsigned long D)
acrescentando mais um argumento para controle do estouro de tempo:
void digitalToggleDelay(uint8_t P, unsigned long D, unsigned long *oldDelay)
a solução de manter o controle numa array é boa, mas gera uma ocupação de 212bytes...parece pouco mas para quem já está com problemas de espaço é muito.
a mudança na utilização é pequena:
Declaro uma nova variável:
unsigned long ledLastDelay=0; //variavel auxiliar para guardar ultimo "toggle"
e na chamada do método fica:
digitalToggleDelay(led, 500, &ledLastDelay); // inverte o estado do pino a cada passagem
O novo método controla a nova variável (passada por endereço):
//~ void digitalToggleDelay(unsigned long D, uint8_t P)
void digitalToggleDelay(uint8_t P, unsigned long D, unsigned long *oldDelay)
{
//~ if (millis() - DigitalToggle_H_MillisOldVect[P-1] >= D)
if (millis() - *oldDelay >= D)
{
digitalToggle(P);
//~ DigitalToggle_H_MillisOldVect[P-1] = millis();
*oldDelay = millis();
}
}
Como eu tenho uma função que trocava o estado do led utilizando digitalWrite() e digitalRead(), ficou bem melhor utilizando esse seu novo método.
Grato pela iniciativa !!
Ahhh esqueci de comentar - eu modifiquei a ordem dos argumentos, achei conveniente manter o primeiro argumento como o led, acrescentando o delay e finalmente o controle.
Realmente eu sei desse problema do tamanho do vetor, mas como é uma versão inicial, um esboço de como realmente vai funcionar, falta remover alguns bugs e ainda falta a etapa de otimização do código.
Uma dica sobre a IDE, utilize a versão compactada (é a minha preferida e evita conflitos), você pode executar em qualquer local que vc extrair, logo vc pode ter diversas versões rodando no computador ao mesmo tempo.
A IDE do Arduino eu somente rodo o código exemplo, utilizo um editor externo.
Obrigado pelas observações.
Hummm e onde obtenho essa versão compactada ? Gostei da idéia.
Qual editor externo você utiliza ?
Valeu, abraço.
Oi OC, boa tarde,
Eu uso varias versões do arduino, mas não instalo nenhuma.
Uso da forma "Stand alone"
Assim escolho a versão que quero rodar para testes de cada situação.
Por exemplo:
Para gravar um bootloader, eu uso a versão 1.0.6.
Para testes em geral eu estou usando a versão 1.6.6.
Você as encontra no site do arduino, ou como eu fiz.
Assim:
Instalei a versão, daí fui na minha pasta "Program Files(x86)", copiei a pasta Arduino para o C:/ e acrescentei o numero da versão "Arduino106".
Depois desinstalei e instalei a outra versão, e repeti o processo.
Rui
Mas Rui
Tem uma forma mais fácil, só baixar a versão compactada em zip, não precisa instalar nada.
Para Linux 64bits
https://downloads.arduino.cc/arduino-1.6.7-linux64.tar.xz
Para Win 64bits
https://downloads.arduino.cc/arduino-1.6.7-windows.zip
O site arduino.cc está lento agora.
Eu uso Linux.. qual IDE você utiliza?
Atualmente estou usando a 1.6.4.
Estive vendo na internet (faz alguns meses) que 1.6.5 estava com problemas em algumas bibliotecas e por isso não atualizei.
Em breve vou testar a 1.6.7.
Melhorou um pouquinho a questão do uso de memória, na biblioteca que fazendo.
Eu uso o Sublime Text como editor
Valeu Odilon e Flávio e Rui,
Estou tendo que me atualizar nas dicas que apareceram aqui, e vou comentar algumas coisas:
Estou testando o Sublime Text. me pareceu muito melhor que a IDE, mas ainda estou me acostumando (apanhei mas consegui fazer rodar)... daria um tópico a parte... alguns pontos eu ainda estou perdido ou achando pior... por exemplo: monitor serial para enviar fecha apos o envio e Sublime Text salva alterações nos exemplos (blink, por exemplo) que são somente leitura na IDE original....
A biblioteca do blink sem delay funcionou e me motivou aprender desenvolver bibliotecas.
Vi o código sobre interrupções... acho que eu tenho preconceito com interrupções em arduino; kkk mas tem um porquê!
99% dos casos, as pessoas mais experientes sugerem aqui no forum usá-las em casos que é muito complicado para iniciantes (ou quem está no meio do caminho).
até hoje, só usei interrupções para poucas coisas...como a função sleep. Acho que vou respeitar minha curva de aprendizado, mas muito obrigado por compartilhar... depois de um tempo eu volto aqui....
Valeu
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por