Pessoal, estou com dificuldade em criar uma função, eu quero chamar a função com um parâmetro VAR1 por exemplo e dentro da função ela carregar as demais variáveis.. tipo assim:
int xVAR1 = 1;
int yVAR1 = 2;
int zVAR1 = 3;
void setup(){
...}
int set(PARAMETRO)
{
xPARAMETRO = 31; // gostaria que a palavra PARAMETRO fosse substituída por VAR1
yPARAMETRO = 50;
zPARAMETRO = 80;
...
}
void loop(){
set(VAR1);
}
alguem pode me ajudar? teria como criar uma função dessas semelhante para criar variáveis? No caso a função ia receber a palavra VAR1 e iria criar as variáveis xVAR1, yVAR1 e zVAR1. Tem como?
Obrigado desde já.
Não sei se é bem isso, mas acho q é... só tenho q enteder agora como é que eu vou fazer isso, pq ficou um pouco confuso... hoje estou sem tempo agora, mas vou tentar e vou postar, minha intenção é facilitar para aqueles como eu que veio da programção de CLP's (em diagrama de blocos e ladder) que é mais fácil para C (que é novidade para mim ainda, mas já andei brincando com matrizes e laços no Dev)....
Mas pelo pouco que li e intendi é que do jeito que eu quero simplificar acho q n vai dar...
Obrigado bubulinho por me ajudar... lembrei me de algumas coisas quanto postou.... acho q consegui o que eu queria, da uma olhada no código e me de alguma sugestão de como posso simplificar mais... a intenção é facilitar a criação de temporizadores dentro do programa, imagino que este código seja viável quando se usar dois timers ou mais... algumas coisas não são necessárias como a função de setar e resetar e talvez nem mesmo a de criar "createTimers", pois posso declarar no global os valores das variaveis.
se voce tiver mais alguma sugestao ou alguem mais, por favor... sintam-se a vontade, estou aki para aprender e espero aprender mt.... XD
#define led 13 // define led como pino 13
#define timers 2 // define a quantidade de timers
boolean Tset[timers]; // declara a variavel de set (Tset[i]) do timer[i]
boolean Tout[timers]; // declara a variavel de saida (Tout[i]) do timer[i]
unsigned long Tstart[timers]; // declara a variavel de ponto de partida (Tstart[i] do timer[i]
unsigned int Ttemp[timers] = {1000, 50}; // declara os tempos dos timers
void createTimers(){ // funcao para atribuir os valores dos timers
for (short i = 0 ; i <= timers ; i++){ // realiza a varredura de timer[i]
Tset[i] = false; // atribui o valor inicial de set do timer[i] como falso
Tout[i] = LOW; // atribui o valor inicial de saida do timer[i] como baixo
Tstart[i] = 0; // atribui o valor inicial do tempo de partida do timer[i] como 0
}
}
void checkTimers(){ // funcao para verificacao dos timers
for (short i = 0 ; i <= timers ; i++){ // realiza a varredura dos timers
if (Tset[i] == true && Tstart[i] == 0) // se o timer[i] estiver setado Tset[i] e seu valor inicial Tstart[i] em 0
Tstart[i] = millis(); // atribui o valor inicial Tstart[i] do timer[i] com valor atual de millis()
if (Tset[i] == true && Tstart[i] != 0){ // se o timer[i] estiver setado e seu valor inicial nao for 0
if (millis() - Tstart[i] >= Ttemp[i]) // verifica se ja trancorreu o tempo Ttemp[i] setado do timer[i]
Tout[i] = HIGH; // se ja tiver transcorrido, leva a saida Tout[i] do timer[i] em nivel alto
}
else{ // se o timer[i] nao estiver setado
Tout[i] = LOW; // mantem sua saida Tout[i] em nivel baixo
Tstart[i] = 0; // e o tempo de partida Tstart[i] em 0
}
}
}
void setTimer(unsigned short i){ // funcao para setar o timer[i], recebe o numero do timer
Tset[i] = true; // seta Tset[i] do timer[i] como verdadeiro
}
void resetTimer(unsigned short i){ // funcao para resetar o timer[i], recebe o numero do timer
Tset[i] = false; // seta Tset[i] do timer[i] como falso
}
void setup(){
pinMode (led, OUTPUT); // seta o pino 13 - led - como saida digital
Serial.begin(9600); // abre porta de comunicacao - para diagnose
createTimers(); // carrega a funcao de atribuicao de valores das variaveis de cada timer
}
void loop(){
checkTimers(); // carrega a funcao de verificacao dos timers
setTimer(0); // liga timer 0
if (Tout[0] == HIGH) // se a saida do timer 0 estiver em nivel alto
setTimer(1); // liga o timer 1
if (Tout[1] == HIGH){ // se a saida do timer 1 estiver em nivel alto
resetTimer(0); // reseta o timer 0
resetTimer(1); // reseta o tmer 1
}
digitalWrite (led, Tout[0]); // escreve saida digital no pino 13 como o estado da saida do timer 0
}