Napiszmy sobie programik w javiePyra pisze:...Wystarczy obliczyć wartości dla kolejnych kątów o skoku 180°/16 i pomnożyć przez 126.
Ja zrobię resztę.
Kod: Zaznacz cały
import static java.lang.Math.sin;
import static java.lang.Math.PI;
public class Sinus {
private static double wartosc, kat;
private static int dane;
private static String wyswietl="const uint8_t PROGMEM sinus[] = {0";
public static void main(String[] args) {
for (int x=1; x<=15; x++) {
kat=180/15*x;
wartosc = sin(kat*PI/180);
dane=(int)(wartosc*126);
wyswietl+=", "+dane;
System.out.println("x="+x+" kat="+kat+" wartosc="+wartosc+" dane="+dane);
}
wyswietl+="};";
System.out.println("Kod w C dla Pyra:");
System.out.println(wyswietl);
}
}
Kod: Zaznacz cały
x=1 kat=12.0 wartosc=0.20791169081775931 dane=26
x=2 kat=24.0 wartosc=0.40673664307580015 dane=51
x=3 kat=36.0 wartosc=0.5877852522924731 dane=74
x=4 kat=48.0 wartosc=0.7431448254773942 dane=93
x=5 kat=60.0 wartosc=0.8660254037844386 dane=109
x=6 kat=72.0 wartosc=0.9510565162951535 dane=119
x=7 kat=84.0 wartosc=0.9945218953682733 dane=125
x=8 kat=96.0 wartosc=0.9945218953682734 dane=125
x=9 kat=108.0 wartosc=0.9510565162951536 dane=119
x=10 kat=120.0 wartosc=0.8660254037844387 dane=109
x=11 kat=132.0 wartosc=0.7431448254773942 dane=93
x=12 kat=144.0 wartosc=0.5877852522924732 dane=74
x=13 kat=156.0 wartosc=0.40673664307580043 dane=51
x=14 kat=168.0 wartosc=0.20791169081775931 dane=26
x=15 kat=180.0 wartosc=1.2246467991473532E-16 dane=0
Kod w C dla Pyra:
const uint8_t PROGMEM sinus[] = {0, 26, 51, 74, 93, 109, 119, 125, 125, 119, 109, 93, 74, 51, 26, 0};