provate anche voi magari è il mio arduino che è partito o sono io che non capisco la logica.
codice che ho usato
int b=0;
int f=0;
void setup() {
Serial.begin(9600);
}
void loop() {
b=pow(10,f);
f=f+1;
Serial.println(b);
delay(2000);
}
pensando con un po di logica di come dovrebbe andare il programma B a ogni ciclo dovrebbe essere uguale a 10 elevato a f.
dato che f a ogni ciclo aumenta di uno teoricamente b è uguale a:
0
10
100
1000 ecc.. non è così??
quando vado sul serial monito mi stampa tutt'altro
1
10
99
999
9999
dove sbaglio?
Un microcontrollore non ha una ALU per cui le funzioni matematiche sono realizzate in software: di base il micro supporta nativamente (in hardware) solo addizioni, sottrazioni e moltiplicazioni. Le altre operazioni sono implementate in software, la potenza è una di queste.
Non sona andato a vedere pow ma sospettavo cio' che Leo ha scritto
L'unsigned era un modo per non prendere in considerazione valori negativi ... ma se e' float ...
Mi sa' che ti conviene fare un for con f come indice e ripeterlo al posto del pow
leo72:
moltiplicazioni.
Le altre operazioni sono implementate in software, la potenza è una di queste.
Certo che pow e' implementata male
In definiva dietro alla funzione pow mascheri un ciclo for e fai delle semplici moltiplicazioni che si spera siano giuste
for o un meccanismo equivalente che faccia 101010.... in base all'esponente