#include #include #include #include #include #include #include #include #include #include #include #include #include #include "/home/unix/sensehat.h" // Funktion zur Ausgabe von Integern int show_number(int number, int r, int g, int b) { int pattern[6][64] = { { 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,1,1,0, 0,0,0,0,0,1,1,0, 0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,1,1,0,0,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,0,0,0,0,1,1,0, 0,0,0,0,0,1,1,0, 0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,0,1,1,0,0,0, 0,0,0,1,1,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,0,0,0,0,0,0 }, { 1,1,0,0,0,0,1,1, 1,1,0,0,0,0,1,1, 0,0,0,0,0,0,0,0, 1,1,0,0,0,0,1,1, 1,1,0,0,0,0,1,1, 0,0,0,0,0,0,0,0, 1,1,0,0,0,0,1,1, 1,1,0,0,0,0,1,1 } }; led_clear(0,0,0); led_set_pixels(pattern[number],r,g,b); } int zufall(int r, int g, int b){ // 20 zufällige Zahlen zur Ausgabe (Beauty-Funktion) for(int i=1;i<=20;i++) { srand(time(NULL)); int rdm = abs((rand() * i) % 6); printf("RDM: %i \t", rdm+1); // Schnelle "Würfeln" show_number(rdm,r,g,b); printf("Schleifendurchlauf: %i \n", i); usleep(50 * 1000); led_clear(0,0,0); }; // "Endgültige" Zahl würfeln und ausgeben srand(time(NULL)); // Um Zufall zu verbessern neu Initialisiern usleep(50 * 1000); // noch ein bisschen Warten int j = abs(rand()% 6); // Zahl würfel und Modulo 6 show_number(j,r,g,b); // Zahl anzeigen sleep(5); // 5 Sekunden warten led_clear(0,0,0); // Display löschen } int main (void) { // "Zufall"-Initialisieren srand(time(NULL)); // Sensor Init sensors_init(); // Schleife Aktivieren ACHTUNG: Endlos! int active = 1; // XYZ-Variablen int xold = get_angle_pitch(); int yold = get_angle_roll(); int zold = get_tilt_direction(); int xnew; int ynew; int znew; // Farbvariablen int r = 240; int g = 180; int b = 110; // Frisch gewürfelt int frisch_gewuerfelt = 0; while(active==1) { // Abfrage aktueller Werte aus pitch,roll,tilt xnew = get_angle_pitch(); ynew = get_angle_roll(); znew = get_tilt_direction(); // Ausgabe der Alten, Neuen und Delta-Werte printf("NEW X: %i \t", xnew); printf("NEW Y: %i \t", ynew); printf("NEW Z: %i\n", znew); printf("OLD X: %i \t", xold); printf("OLD Y: %i \t", yold); printf("OLD Z: %i\n", zold); printf("DELTA X: %i \t", abs(xold-xnew)); printf("DELTA Y: %i \t", abs(yold-ynew)); printf("DELTA Z: %i\n\n", abs(zold-znew)); // Check ob Schwellwert überschritten if( (abs(xold-xnew)>=40 || abs(yold-ynew)>=40 || abs(zold-znew)>=250 ) && frisch_gewuerfelt==0){ zufall(r,g,b); // Würfeln xold = xnew; // neu->alt yold = ynew; zold = znew; frisch_gewuerfelt=1; } else { // Falls nicht, neu->alt xold = xnew; yold = ynew; zold = znew; frisch_gewuerfelt=0; } usleep(100*1000); // 100ms Schlafen } }