Data over internett

Dependencies:   C12832

Fork of Riggen_internett by Mustafa Kazaale

Files at this revision

API Documentation at this revision

Comitter:
mosti89
Date:
Fri Apr 13 09:51:50 2018 +0000
Parent:
0:d8cc0114a13e
Child:
2:417d4b54f717
Commit message:
Offentlig

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Thu Apr 12 21:33:47 2018 +0000
+++ b/main.cpp	Fri Apr 13 09:51:50 2018 +0000
@@ -1,43 +1,48 @@
+                    //-----------Bibilioteker------------//
 #include "mbed.h"
 #include "EthernetInterface.h"
 #include "C12832.h"             // Biblioteket til skjermen på applikasjonsbrettet
+
+
 Serial pc(USBTX, USBRX);        // Serial kommunikasjon med PC
 SPI bus(p11, p12, p13);         // p11-mosi brukes ikke, p12-miso kobles til pinne 3 på sensoren, p13-sck kobles til pinne 4 på sensoren
 DigitalOut slave_1(p19);        // p20-SS, koble til pinne 5 på sensor 1
 DigitalOut slave_2(p18);        // p19-SS, koble til pinne 5 på sensor 2
 DigitalOut slave_3(p17);        // p18-SS, koble til pinne 5 på sensor 3
-EthernetInterface net;      //Ethernet interface
-TCPSocket socket;           //TCP socket
-Timer tid;
-Ticker t, t1;
+EthernetInterface net;          //Ethernet interface
+TCPSocket socket;               //TCP socket
+Timer tid;                      // Timer 
+Ticker t, t1;                   // Tikker for å kjøre avlesningen to ganger i sekundet.
 C12832 lcd(p5, p7, p6, p8, p11);// Skjermen
 
-void data(float s1, float av1,float s2, float av2,float s3, float av3);
-void send(char *arr, int lengde);
+                    //--------------Funksjoner-------------//
+void data(float s1, float av1,float s2, float av2,float s3, float av3); // Oppretting av et array for webaddressen
+void send(char *arr, int lengde);                                       // Sender data til mottat webaddresse
+void sensor();                                                          // Avlesning av Sensor verdiene
+void omregning(int a, float speed);                                     // Omregning av avlesningen
 
-int i=0, ant=0;
-int avlest[3];
-float trykk[3];
-float fart[3];
-float sum_fart[3];
-float avvik[3];
-float gjennomsnitt[3];
+                    //----------Globale variable-----------//
+int i=0, ant=0;                 // Variabelen i er til for å forenkle valget av de tre sensorene, ant er der for antallet avlesninger
+int avlest[3];                  // Array for lagring av avlest verdi
+float trykk[3];                 // Array for lagring av omregnet trykkverdi
+float fart[3];                  // Array for lagring av omregnet fartverdi
+float sum_fart[3];              // Array for summering av farten
+float avvik[3];                 // Array for lagring av standardavviket på vannhastigheten
+float gjennomsnitt[3];          // Array for lagring av gjennomsnittelig vannhastighet
 
-void sensor();                  //Lese av og omregne verdien fra sensorene
-void omregning(int a, float speed);
-
-#define ut_min 0x0666           // Minste avleste verdi
-#define ut_max 0x399A           // Maksimum avlest verdi
-#define trykk_min -6000         // Minimale trykkverdi i Pascal på sensoren
-#define trykk_max 6000          // Maksimale trykkverdi i Pascal på sernsoren
+                    //--------Definisjoner----------------//
+#define ut_min 0x0666           // Minste avleste verdi defineres
+#define ut_max 0x399A           // Maksimum avlest verdi defineres
+#define trykk_min -6000         // Minimale trykkverdi i Pascal på sensoren defineres
+#define trykk_max 6000          // Maksimale trykkverdi i Pascal på sernsoren defineres
 
 int main()
 {
     pc.printf("\nSetter opp nettverksforbindelse");
-    net.connect();
+    net.connect();                  // Setter opp nettforbindelse
     pc.printf("\nTilkoblet nettet");
     
-    const char *ip = net.get_ip_address();
+    const char *ip = net.get_ip_address();// Innhenter IP addresse
     printf("\nIP address is: %s\n\n", ip ? ip : "No IP");
     
     bus.format(16,0);               // Oppsett av SPI dataformat, (16 bit data, mode 0)
@@ -46,27 +51,27 @@
     slave_1 = slave_2 = slave_3 = 1;// Ingen slave valgt
     pc.printf("\n\tSensor 1\t\t\tSensor 2\t\t\tSensor 3\t\n");
     pc.printf("Inn\tP\t\t[m/s]\tInn\tP\t\t[m/s]\tInn\tP\t\t[m/s]\n");
-    t.attach(&sensor,0.5);
-    tid.start();
-    lcd.cls();
-    lcd.locate(0,3);
+    t.attach(&sensor,0.5);          // Setter igang Tikker med sensor() fuknsjonen som kalles 2 ganger i sekundet
+    tid.start();                    // Starter timer
+    lcd.cls();                      // Sletter alt som er på lokale skjermmen
+    lcd.locate(0,3);                // Lokkaliserer hvor på skjermen skriften skal komme
     lcd.printf("   S1      S2      S3");
+    
+                    //-----------Evig løkke-------------//
     while(1)
     {
-        
         static bool sist = false;       // Dette er en liten kode for å sende kun en gang.
-        while (16 < tid.read())
+        while (16 < tid.read())         // Tiden må ha passert 16 sekunder for dette blir sant
         {
-            
-            if(ant==144)
+            if(ant==144)                // Tester på om det er blitt utført 144 målinger
             {
-                ant=0;
-                if(!sist)           // Tester om ikke sist 
+                ant=0;                  // Antallet målinger nullstilles for en ny runde
+                if(!sist)               // Tester om ikke sist 
                 {
-                    sist = true;        // Setter sist til sann.
-                    t.detach();
-                    data(gjennomsnitt[0], avvik[0], gjennomsnitt[1], avvik[1], gjennomsnitt[2], avvik[2]);
-                    for(int c=0; c<3; c++)
+                    sist = true;        // Setter sist til sann, slik at sendingenn kun utføres en gang etter 16 sekunder
+                    t.detach();         // Detacher fuknsjonen sensor fra Tikker for å kunne sende uavbrutt.
+                    data(gjennomsnitt[0], avvik[0], gjennomsnitt[1], avvik[1], gjennomsnitt[2], avvik[2]);// Sender data
+                    for(int c=0; c<3; c++)// En For løkke for å nullstille de Globale variablene
                     {
                         avlest[c]=0;
                         gjennomsnitt[c]=0.0;
@@ -75,67 +80,67 @@
                         fart[c]=0.0;
                         sum_fart[c]=0.0;
                     }
-                    t.attach(&sensor,0.5);
-                    tid.stop();
+                    t.attach(&sensor,0.5);// Tilegner funksjonen sensor til Tikker igjen for avlesning av sensor verdier
+                    tid.stop();         // Stopper Timer og resetter for ny runde
                     tid.reset();
                 }
             }
-            else
+            else                        // En del av sending en gang
             {
                 sist=false;
             }
         }
         
-        tid.start();
+        tid.start();                    // Starter timer igjen for nye 16 sekunder
     }
-    
 }
 
-void sensor()                   // Funksjon for sensor
+                    //----------Sensor funskjonen------------//
+void sensor()                   
 {
-    for(i=0; i<3; i++)
+    for(i=0; i<3; i++)                  // En for løkke for å lese av alle tre sensorene
     {
         if(i==0)
         {
-            slave_1 = 0;                        // Velger sensor 1 som slave
-            avlest[i] = bus.write(0x0001);      // Sender dummy command for å få respons
-            slave_1 = 1;                        // Slipper slaven
+            slave_1 = 0;                // Velger sensor 1 som slave
+            avlest[i] = bus.write(0x0001);// Sender dummy command for å få respons
+            slave_1 = 1;                // Slipper slaven
         }
         
         if(i==1)
         {
-            slave_2 = 0;                        // Velger sensor 2 som slave     
-            avlest[i] = bus.write(0x0001);      // Be om trykk verdi avlesning
-            slave_2 = 1;                        // Slipper slaven
+            slave_2 = 0;                // Velger sensor 2 som slave     
+            avlest[i] = bus.write(0x0001);// Be om trykk verdi avlesning
+            slave_2 = 1;                // Slipper slaven
         }
         
         if(i==2)
         {
-            slave_3 = 0;                        // Velger sensor 3 som slave     
-            avlest[i] = bus.write(0x0001);          // Be om trykk verdi avlesning
-            slave_3 = 1;                        // Slipper slaven
+            slave_3 = 0;                 // Velger sensor 3 som slave     
+            avlest[i] = bus.write(0x0001);// Be om trykk verdi avlesning
+            slave_3 = 1;                // Slipper slaven
         }
         
-        trykk[i]=1.0*(avlest[i]-ut_min)*(trykk_max-trykk_min)/(ut_max - ut_min)+trykk_min; // Omregningsformel gitt fra produsenten
-        fart[i]= sqrt(abs(2*trykk[i])/1000);                 // Omregner trykket til hastighet
-        pc.printf("%X\t%.2f\t\t%.2f\t", avlest[i], trykk[i], fart[i]);// Hviser innlest og omregnet verdier
+        trykk[i]=1.0*(avlest[i]-ut_min)*(trykk_max-trykk_min)/(ut_max - ut_min)+trykk_min;  // Omregningsformel gitt fra produsenten
+        fart[i]= sqrt(abs(2*trykk[i])/1000);                                                // Omregner trykket til hastighet
+        pc.printf("%X\t%.2f\t\t%.2f\t", avlest[i], trykk[i], fart[i]);                      // Hviser innlest og omregnet verdier
         omregning(i, fart[i]);
     }
     
-    pc.printf("\n");
+    pc.printf("\n");            // New line for at visningen på Teraterm blir forståelig
     lcd.locate(0,15);           // Lokaloserer hvor på skjermen verdiene skal skrives
-    lcd.printf("   %.2f    %.2f    %.2f", fart[0], fart[1], fart[2]);
+    lcd.printf("   %.2f    %.2f    %.2f", fart[0], fart[1], fart[2]);// Viser verdiene på lokal skjerm
  
 }
 
- void omregning(int a, float speed)                             // Funksjon for sensor 2
+                    //----------Omregningsfunskjonen------------//
+ void omregning(int a, float speed)
  {
-    ant++;
-    sum_fart[a] = sum_fart[a] + speed;  // summerer alle hastigheter
+    ant++;                      // Inkrementerer den globale variabelen ant med en
+    sum_fart[a] = sum_fart[a] + speed;// summerer alle hastigheter for gjennomsnitt utregning
     if(ant==144)
     {
-        //-------------Regner ut gjennomsnittet---------//
-        for(int b=0;b<3;b++)
+        for(int b=0;b<3;b++)    // Regner ut gjennomsnittet for alle tre hastigheten
         {
             gjennomsnitt[b]=sum_fart[b]/48;
             avvik[b]=sqrt(((pow(sum_fart[b]-gjennomsnitt[b], 2)))/(48-1));
@@ -144,7 +149,8 @@
         pc.printf("antallet: %d\n",ant);
     }
  }
- 
+
+                    //----------Sende funksjon------------//
 void send(char *arr, int lengde)
 {
     socket.open(&net);
@@ -157,11 +163,13 @@
     //Lukker socket
     socket.close();
 }
+
+                    //----------Dataene som skal sendes------------//
 void data(float s1, float av1,float s2, float av2,float s3, float av3)
 {
-    char a[200];                                                                                                //Oppretter buffer
-    sprintf (a, "GET https://api.thingspeak.com/update?api_key=TT0INEEL44E31AHP&field1=%.2f&field2=%.2f&field3=%.2f&field4=%.2f&field5=%.2f&field6=%.2f\r\n",s1,av1,s2,av2,s3,av3);  //Fyller buffer med update link med riktig felt og verdi
-    send(a,200);   //Kaller opp funksjonen send for å sende til thingspeak
+    char a[200];            // Oppretter buffer ////Fyller buffer med update link med riktig felt og verdi
+    sprintf (a, "GET https://api.thingspeak.com/update?api_key=TT0INEEL44E31AHP&field1=%.2f&field2=%.2f&field3=%.2f&field4=%.2f&field5=%.2f&field6=%.2f\r\n",s1,av1,s2,av2,s3,av3);  
+    send(a,200);            //Kaller opp funksjonen send for å sende til thingspeak
     pc.printf("\n\tSensor 1\t\t\tSensor 2\t\t\tSensor 3\t\n");
     pc.printf("Inn\tP\t\t[m/s]\tInn\tP\t\t[m/s]\tInn\tP\t\t[m/s]\n");
 }
\ No newline at end of file