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
}

Exibições: 1316

Responder esta

Respostas a este tópico

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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço