Boas pessoal, alguem sabe dizer como posso atraves do valor de uma variavel criar outras variáveis?

A ideia é o utilizador escolher o numero de ciclos, esse valor fica guardado na variavel X.

E conforme o valor escolhido vão ser criadas variáveis com valor 0.

Por exemplo x = 1 cria uma variável, se x = 5, cria 5 variáveis. Depois essas variáveis criadas são para ser usadas pelo utilizador.

Cumprimentos

Exibições: 1964

Responder esta

Respostas a este tópico

acho que você deve usar arrays, procure por malloc / realloc / free.

Podes usar alocação dinâmica.

Mas...

Pesquise sobre Programação Orientada a Objetos.

Só dando uma dica: Boa parte das bibliotecas utilizadas no arduino usam esse princípio.

Quando você usa um LCD.begin(....) e depois um LCD2.begin(...) é isso que você está fazendo.

Bom, explica ai o que quis dizer, pois não entendi sobre a parte de usar classes / OOP e a alocação dinâmica.

De uma olhada neste link http://www.dca.fee.unicamp.br/cursos/POOCPP/node3.html

Esse link explica melhor o que estou querendo falar.

Mas basicamente vamos olhar o exemplo do Servo:

#include <Servo.h>
Servo myservo; // objeto myservo declarado como da classe (que é em analogia, uma forma) Servo.


void setup()
{
myservo.attach(9); //attach é um método que estancia o objeto myservo a partir da classe (forma) Servo. Ou seja, o construtor da classe Servo.
// 9 é um dos atributos (características pessoais) desse objeto. Se a classe fosse Pessoa, poderia ser Nome, Idade, Endereço,...
}

void loop() {
...
}

Do mesmo modo eu poderia criar o myservo1, myservo2,....

Isso fica mais claro quando você está criando uma biblioteca.Para quem apenas as utiliza, sem saber que LCD, Serial, Servo e String são classes, a coisa fica mais transparente.Aliás, essa a ideia de biblioteca de core do Arduino.

outro Link: http://amcollucci.com.br/2012/02/18/aprenda-a-programar-o-arduino-p...

Ainda não entendi em que isso vai ajudar se o cara só quer poder criar N variáveis.

Suponhamos que o cara cria uma classe Robo, com os seguintes médotos

iQTDEMOV(n)    Seta quantos movimentos o robo vai fazer
iSETMOV(x, y)   Seta um movimento, em X e Y
iMOV ()              MOVE o ROBO

Ele vai ter que alocar dinamicamente a memória para armazenar os movimentos.

Então não importa se ele implementar com OOP ou não, o melhor jeito é usar alocação de memória.

Seu exemplo  usando bibliotecas, ainda continua sendo estático, não mostrou ainda uma forma do cara criar um array de servos.

 

Lista...

Quanto a alocação dinâmica,  é o método que você citou. Tens o calloc, free, ...

Vale lembrar que a "linguagem do arduino" é uma biblioteca em cima do C++ para AVR, é uma camada superior, que nada impede o acesso a camadas inferiores como o C++ e o Assembly. Então os recursos do C++ estão a disposição dos programadores que querem sair da "zona de conforto" da "linguagem" em busca de desempenho ou funções inexistentes.

http://blog.bsoares.com.br/arduino/useful-functions-of-the-cpp-for-...

Na EEPROM nao dá?

Estou a ver que é complicado colocar em prática.

Na pratica eu queria algo assim, tenho a variável num_rotinas = 0;

O utilizador irá incrementar o numero de rotinas que quer. Essa rotina tem 2 variáveis vinculadas que serve para guardar a hora e os minutos.

Um exemplo:

Inicio

Se num_rotinas = 1; Entao

    int hora_primeira_rotina = 0; // estas variaveis são para ser incrementadas depois

    int minuto_primeira_rotina = 0;

Fim

Inicio {

Se num_rotinas = 3; Então

     hora_primeira_rotina = 0;

     minuto_primeira_rotina = 0;

     hora_segunda_rotina = 0;

     minuto_segunda_rotina = 0;

     hora_terceira_rotina = 0;

     minuto_terceira_rotina = 0;

}Fim

Estou a ver que para além de parecer complicado criar as variáveis automaticamente, vai ser também complicado usar-las mais á frente.

Se alguém tiver tempo e paciencia, podia dar um solução prática como exemplo.

Olá Rui,

Vai ficar mais fácil dar uma solução prática se você detalhar sua idéia por completo.

Da forma como descreveu você poderá utilizar a própria EEPROM como sugeriu o Ric4ardo.

Se a quantidade de variáveis for muito grande e também você poderá utilizar um cartão SD.

Até +

MIlton Vilela

Obrigado pela resposta. 

Não deu para entender o exemplo que citei acima?

Em média devem ser criadas 9 10 variáveis, pode ser tipo byte é so para alojar numeros até 60 no caso dos minutos e 24 no caso das horas

Uma matriz 10x2 não resolve o seu problema?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço