Arduino - Funzioni e altro

                          Il  mio  sito
                                          Funzioni    e    altro
Vai ai contenuti

Menu principale:

Arduino

altro
/*

ArcoSeno
ArcoCoseno
ArcoTangente
I volori sono precisi sino alla sesta cifra
Creato 2013  da Ambrosini Cesare
*/

#include <Wire.h>

// Assegna le variabili necessarie per il calcolo di Arco Tangente
int iTan = 0;         
int nTan = 0;
double ValoreArco = 0;
double ArcoGradi = 0;
double ArcoRadianti = 0;
// Assegna la variabile necessaria per il tempo di calcolo
unsigned long milliSecondi = 0;

void setup() {
 Serial.begin(57600);
 Wire.begin();
}

void loop() {
   ValoreArco = 0.5;
   Serial.print("   Valore Arco = ");
   Serial.print(ValoreArco, DEC);
   milliSecondi = millis();
   ArcoSeno();
   milliSecondi = millis() - milliSecondi;
   Serial.print("   Tempo di calcolo = ");
   Serial.print(milliSecondi, DEC);
   Serial.print("   milliSecondi");
   Serial.println();
   Serial.print("   Arco Seno in Gradi = ");
   Serial.print(ArcoGradi, DEC);
   Serial.print("   Arco Seno in Radianti = ");
   Serial.print(ArcoRadianti, DEC);
   Serial.println();
   Serial.println();
   Serial.println();
   ValoreArco = 0.6;
   Serial.print("   Valore Arco = ");
   Serial.print(ValoreArco, DEC);
   milliSecondi = millis();
   ArcoCoSeno();
   milliSecondi = millis() - milliSecondi;
   Serial.print("   Tempo di calcolo = ");
   Serial.print(milliSecondi, DEC);
   Serial.print("   milliSecondi");
   Serial.println();
   Serial.print("   Arco CoSeno in Gradi = ");
   Serial.print(ArcoGradi, DEC);
   Serial.print("   Arco CoSeno in Radianti = ");
   Serial.print(ArcoRadianti, DEC);
   Serial.println();
   Serial.println();
   Serial.println();
   ValoreArco = 100;
   Serial.print("   Valore Arco = ");
   Serial.print(ValoreArco, DEC);
   milliSecondi = millis();
   ArcoTan();
   milliSecondi = millis() - milliSecondi;
   Serial.print("   Tempo di calcolo = ");
   Serial.print(milliSecondi, DEC);
   Serial.print("   milliSecondi");
   Serial.println();
   Serial.print("   Arco Tangente in Gradi = ");
   Serial.print(ArcoGradi, DEC);
   Serial.print("   Arco Tangente in Radianti = ");
   Serial.print(ArcoRadianti, DEC);
   Serial.println();
   Serial.println();
   Serial.println();
   delay(5000);
}                                                // Next - Fine Programma

void ArcoSeno() {                                 // Inizio  Sottoprogramma
//  Entrata  ValoreArco                                        //////////////////////////////////////////////////////////////////////////////
//  Uscita   ArcoGradi Arco Seno in Gradi                //////////////////////////////////////////////////////////////////////////////
//  Uscita   ArcoRadianti Arco Seno in Radianti         //////////////////////////////////////////////////////////////////////////////
   if (abs(ValoreArco) > 1) {ValoreArco = 0.0;}
   ValoreArco = ValoreArco / sqrt(1 - ValoreArco * ValoreArco);
   ArcoTan();
}                                                 // return - Fine Sottoprogramma

void ArcoCoSeno() {                               // Inizio  Sottoprogramma
//  Entrata  ValoreArco                                        //////////////////////////////////////////////////////////////////////////////
//  Uscita   ArcoGradi Arco CoSeno in Gradi             //////////////////////////////////////////////////////////////////////////////
//  Uscita   ArcoRadianti Arco CoSeno in Radianti      //////////////////////////////////////////////////////////////////////////////
   ArcoSeno();
   ArcoGradi = 90.0 - ArcoGradi;
   ArcoRadianti = 1.5707963267949 - ArcoRadianti;
}                                                 // return  - Fine Sottoprogramma

void ArcoTan() {                                  // Inizio   Sottoprogramma
//  Entrata  ValoreArco                                         //////////////////////////////////////////////////////////////////////////////
//  Uscita   ArcoGradi Arco Tangente in Gradi           //////////////////////////////////////////////////////////////////////////////
//  Uscita   ArcoRadianti Arco Tangente in Radianti    //////////////////////////////////////////////////////////////////////////////
   iTan = 0;
   ArcoGradi = 0.0;
   ArcoRadianti = 1.5707963267949 / 10.0;
   nTan = 1; if (ValoreArco < 0) {nTan = -1;}
   ValoreArco = abs(ValoreArco);
Next0:
   if (ValoreArco < tan(ArcoGradi)) {goto Next1;}
   ArcoGradi = ArcoGradi + ArcoRadianti;
   if (ArcoGradi <= 1.570796) {goto Next0;}
Next1:
   iTan = iTan + 1; if (iTan <= 5) {
   ArcoGradi = ArcoGradi - ArcoRadianti;
   ArcoRadianti = ArcoRadianti / 10.0;
   goto Next0;}
   ValoreArco = ValoreArco * nTan;
   ArcoRadianti = ArcoGradi * nTan;
   ArcoGradi = ArcoGradi / 1.5707963267949 * 90.0 * nTan;
}                                                  // return - Fine Sottoprogramma                


di  Ambrosini  Cesare
Torna ai contenuti | Torna al menu