Mato Hattori / Mbed 2 deprecated mbed_rc_signal_converter

Dependencies:   EthernetInterface mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
matohatto
Date:
Mon Nov 13 06:58:55 2017 +0000
Commit message:
Radio Control Propotional receiver to ethernet converter firmware,
; for test purpose of RaccoonII motor driver.
;

Changed in this revision

EthernetInterface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r ecd79ba7c7b2 EthernetInterface.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EthernetInterface.lib	Mon Nov 13 06:58:55 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/EthernetInterface/#183490eb1b4a
diff -r 000000000000 -r ecd79ba7c7b2 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Nov 13 06:58:55 2017 +0000
@@ -0,0 +1,146 @@
+/****** R/C to Ethernet Signal Converter feat.I2C *******/
+/******                  Ver. 1.0                 *******/
+/******            Written by Wada Suisei         *******/
+/******                 2017 Oct 1                *******/
+//
+// Modified on Oct.20th, 2017  by Mato Hattori
+//
+
+/*** Including Header Files***/
+#include "mbed.h"
+#include "EthernetInterface.h"
+
+/*** Ethernet Configuration data***/
+const char IpAddr[] = "192.168.11.241";
+const char NetMask[] = "255.255.255.0";
+const char GatewayAddr[] = "192.168.11.1";
+const int Port_Num = 4001;
+
+const char MotorDriverIpAddr[] = "192.168.11.242";   // motor driver ip address
+const int MotorDriverPortNum = 4000;               // motor driver ip port
+
+/*** I2C Configure***/
+#define SDA_PIN p28
+#define SCL_PIN p27
+#define SLAVE_NUMBER 3
+#define MSEC    /1000.0
+#define LOOP_INTERVAL_MILISEC   500   // loop interval in mili-seconds 
+const int SlaveAddr[SLAVE_NUMBER] = {0x0b, 0x0c, 0x0d};
+const int min_cnt[SLAVE_NUMBER] ={1119,1650,1650};/*1ch:SW, 2ch:Rudder, 5ch:Thrustor*/
+const int max_cnt[SLAVE_NUMBER] ={1960, 2915,2915};/*1ch:SW, 2ch:Rudder, 5ch:Thrustor*/
+
+/***Pin Mode Initializing***/
+int pin_init(void){
+    return 1;
+}
+
+
+int main(){
+    
+    /*Pin Init*/
+    pin_init();
+    printf("Pin Initialize Complete!\n");
+    
+    /*I2C Init*/
+    I2C i2c_master(SDA_PIN, SCL_PIN);
+    printf("I2C Initialize Complete!\n");
+    
+    /*Ethernet Init*/
+    EthernetInterface eth;
+    if(eth.init(IpAddr, NetMask, GatewayAddr)){
+        return -1;
+    }
+    eth.connect();
+    printf("Ethernet Connected\n");
+    printf("------------------------------\n");
+    printf("IP Address is %s\n",eth.getIPAddress());
+    printf("Net Mask is %s\n",eth.getNetworkMask());
+    printf("------------------------------\n");
+    
+    /*UDP Init*/
+    UDPSocket sock;
+    sock.bind(Port_Num);
+    
+    /*Endpoint Init*/
+    Endpoint md;
+    md.set_address (MotorDriverIpAddr, MotorDriverPortNum);
+    
+    
+    /**Main Routine**/
+    int  udpout_buffer[3];
+    int  udpin_buffer[3];
+    int  data_int[SLAVE_NUMBER];
+    int  data_ratio[SLAVE_NUMBER];
+    int  seq;
+    long tick = 0;
+    DigitalOut  myled (LED1);
+    
+    myled = 0; // turn off LED1
+    
+    while(1){
+
+        /*i2c Initialize*/        
+        printf("I2C Data fetch.....  ");
+        
+        /*i2c communication sequence*/
+        for(seq=0; seq<SLAVE_NUMBER; seq++)
+        {    
+            data_int[seq] = 0;
+            /*data_frac[seq] = 0;*/
+#if 0            
+            i2c_master.start();  /*Send start condition*/
+            while(i2c_master.read( ((SlaveAddr[seq]<<1)|0x01), receive_data, sizeof(receive_data) )); /*Wait ACK  --Master Receive*/
+            i2c_master.stop();
+
+            /*Value Modification Sequence*/           
+            data_int[seq] = ( (receive_data[0]<<8)| receive_data[1] );
+            data_ratio[seq] = (data_int[seq] - min_cnt[seq])*200/(max_cnt[seq] - min_cnt[seq])-100;
+#else
+            AnalogIn vr (p18);          // DEBUG for testing 
+            if (! seq)
+                printf ("ain=%f ", (float) vr);
+            data_ratio[seq] = (int)(( (float) vr - 0.527) * 277.0);
+#endif  
+
+            if(-5<=data_ratio[seq] && data_ratio[seq]<=5){
+                data_ratio[seq] = 0;
+            }else if(data_ratio[seq]<=-96){
+                data_ratio[seq] = -100;
+            }else if(data_ratio[seq]>=96){
+                data_ratio[seq] = 100;
+            }
+            
+            printf("%d%% (0x%02x)   ", data_ratio[seq], SlaveAddr[seq]);
+        }
+        printf("\n");
+ 
+        // UDP Communication Sequence        
+        //for(seq=0; seq<SLAVE_NUMBER; seq++)
+        //    udpout_buffer[seq] = data_ratio[seq];
+        udpout_buffer[0] = data_ratio[0];
+        udpout_buffer[1] = 0;
+        
+        printf("tx -> #%ld : %d %d\n", tick, udpout_buffer[0], udpout_buffer[1]);
+        sock.sendTo(md, (char *)udpout_buffer, 4);
+ 
+//        memset (udpin_buffer, sizeof (udpin_buffer), 0);
+//        sock.receiveFrom (md, (char *)udpin_buffer, sizeof (udpin_buffer));
+//        printf("rx <- #%ld : %d %d %d\n", tick, udpin_buffer[0], udpin_buffer[1], udpin_buffer[2]);
+        
+        // end of main loop
+        myled = ! myled; // toggle LED1
+        wait (LOOP_INTERVAL_MILISEC MSEC);
+    }
+    
+    sock.close();
+    eth.disconnect();
+    myled = 0; // turn off LED1
+}
+            
+            
+            
+        
+    
+
+        
+
diff -r 000000000000 -r ecd79ba7c7b2 mbed-rtos.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Mon Nov 13 06:58:55 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed-rtos/#5713cbbdb706
diff -r 000000000000 -r ecd79ba7c7b2 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Nov 13 06:58:55 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/mbed_official/code/mbed/builds/b484a57bc302
\ No newline at end of file