código:
void setup() { Serial.begin(9600); pinMode(3, OUTPUT); } void conta_tempo(void(*p)(), String descricao){ long m1, m2; m1 = millis(); (*p)(); //executa a função m2 = millis(); Serial.print(descricao + ": m1= "); Serial.print(m1); Serial.print(" - m2 = "); Serial.print(m2); Serial.print(" - dif = "); Serial.print(m2 - m1); Serial.println(" milissegundos"); } void proc_01(){ for (long i=0; i< 10000; i++) { digitalWrite(3, !digitalRead(3)); } } void proc_02(){ for (long i=0; i< 30000; i++) { digitalWrite(3, !digitalRead(3)); } } void proc_03(){ for (long i=0; i< 100000; i++){ digitalWrite(3, !digitalRead(3)); } } void loop() { conta_tempo(proc_01, "proc 01"); conta_tempo(proc_02, "proc 02"); conta_tempo(proc_03, "proc 03"); //proc_01(); //proc_02(); //proc_03(); }
oi boa noite fabiano kra vc ta me ajudando de mais tenho muita vontade de aprender e essa é uma chance que tenho
ResponderExcluirque Deus te abençoe
tenho só um pouquinho de duvida Sob o ponteiro que vc colocou vai ficar armazenado dentro de (*p) (proc_01()); mais ou menos assim tenho zap se vc quiser me add (98) 988751206 tenho muito interesse em aprender
e ai Marcio. blz?
Excluiro parâmetro da função conta_tempo é um ponteiro pra uma função,
mas essa função tem que ser do tipo void e não ter nenhum parametro,
como pode ser visto na declaração do parâmetro:
void(*p)()
p é o nome do ponteiro
aí dentro da função vc chama essa função pra onde o ponteiro aponta.
veja, que com isso, vc consegue executar diferentes funções a partir
do mesmo lugar.
qualquer dúvida é só falar.