Galera, to com umas duvidas sobre a implementacao da linguagem C++ no Arduino:

Pergunta 1

Existem dois metodos de instanciacao de objetos:

Led led1(LED_BUILTIN); //No stack
Led* led2 = new Led(LED_BUILTIN); //Na heap

No Arduino, qual a diferenca?

Pergunta 2

Um arquivo .ino normalmente segue seguinte estrutura

//variaveis globais

void setup() {

     //Coisas de setup

}

void loop() {

     //Coisas do loop

}

Entretanto posso perfeitamente omitir o conteudo de setup() e fazer

//variaveis globais

//Coisas de setup

void setup() {//setup vazio}

void loop() {

     //Coisas do loop

}

Exibições: 434

Responder esta

Respostas a este tópico

  1. Ponteiros: http://arduino.cc/en/Reference/Pointer ... Se não compreender, a gente explica.
  2. Sim, você pode criar uma função "void fazQualquerCoisa(){}" vazia e compilar seu código normalmente. Depois é  só implementar os procedimentos para esta função. Não é uma boa prática, mas é possível e inclusive automatizado por algumas IDEs ( o famoso //TODO, traduzindo: Para Fazer).
    O setup(){} precisa existir pois existe uma referência a ele na biblioteca principal do Arduino (Arduino.h, que é invisível para o programador que utiliza a IDE do Arduino). Veja na linha 116-117... Arduino.h

Update:

Fiz uns testes com uma classe simples, consegui alocar, simultaneamente, cerca de 2100 objetos atraves da 1ª forma e cerca de 7000 utilizando ponteiro.

Qual o motivo dessa diferença tao grande? Sera que os ponteiros estao invadindo regioes de memoria protegidas?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço