ROME 2 Praktikum 4

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Main.cpp Source File

Main.cpp

00001 /*
00002  * Main.cpp
00003  * Copyright (c) 2020, ZHAW
00004  * All rights reserved.
00005  */
00006 
00007 #include <mbed.h>
00008 #include <EthernetInterface.h>
00009 #include "IMU.h"
00010 #include "HTTPServer.h"
00011 #include "HTTPScriptIMU.h"
00012 
00013 int main() {
00014     
00015     // initialise digital inputs and outputs
00016     
00017     printf("Initialise digital inputs and outputs...\r\n");
00018     
00019     DigitalIn button(USER_BUTTON);
00020     
00021     DigitalOut ledGreen(LED1);
00022     DigitalOut ledBlue(LED2);
00023     DigitalOut ledRed(LED3);
00024     
00025     // create inertial measurement unit object
00026     
00027     printf("Create inertial measurement unit object...\r\n");
00028     
00029     SPI spi(PC_12, PC_11, PC_10);
00030     DigitalOut csAG(PC_8);
00031     DigitalOut csM(PC_9);
00032     
00033     IMU imu(spi, csAG, csM);
00034     
00035     // create ethernet interface and webserver
00036     
00037     printf("Create ethernet interface and webserver (please wait!)...\r\n");
00038     
00039     EthernetInterface* ethernet = new EthernetInterface();
00040     ethernet->set_network("169.254.20.110", "255.255.0.0", "0.0.0.0"); // configure IP address, netmask and gateway address
00041     ethernet->connect();
00042     
00043     HTTPServer* httpServer = new HTTPServer(*ethernet);
00044     httpServer->add("imu", new HTTPScriptIMU(imu));
00045     
00046     // enter main loop
00047     
00048     printf("Enter main loop...\r\n");
00049     
00050     while (true) {
00051         
00052         // set LEDs on microcontroller
00053         
00054         ledGreen = 1;
00055         ledBlue = 0;
00056         ledRed = 0;
00057         
00058         ThisThread::sleep_for(100);
00059         
00060         ledGreen = 0;
00061         ledBlue = 1;
00062         ledRed = 0;
00063         
00064         ThisThread::sleep_for(100);
00065         
00066         ledGreen = 0;
00067         ledBlue = 0;
00068         ledRed = 1;
00069         
00070         // print sensor data into terminal
00071         
00072         printf("Gyro: %.3f / %.3f / %.3f\r\n", imu.readGyroX(), imu.readGyroY(), imu.readGyroZ());
00073         printf("Acceleration: %.3f / %.3f / %.3f\r\n", imu.readAccelerationX(), imu.readAccelerationY(), imu.readAccelerationZ());
00074         printf("Magnetometer: %.3f / %.3f / %.3f\r\n", imu.readMagnetometerX(), imu.readMagnetometerY(), imu.readMagnetometerZ());
00075         printf("Orientation: %.3f\r\n", imu.readHeading());
00076     }
00077 }
00078