Program of McLighTT

Dependencies:   TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG DISCO_F746NG_USBDevice

Revision:
0:cb5e943e3cf8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri May 10 13:45:29 2019 +0000
@@ -0,0 +1,406 @@
+#include "mbed.h"
+#include "USBMIDI.h"
+#include "LCD_DISCO_F746NG.h"
+#include "TS_DISCO_F746NG.h"
+
+void set1(void);
+void set2(void);
+void set3(void);
+
+#define FastSpeedInterface 0
+#define HighSpeedInterface 1
+ 
+Ticker s1;
+Ticker s2;
+Ticker s3;
+
+  USBMIDI midi(FastSpeedInterface);
+  LCD_DISCO_F746NG lcd;
+TS_DISCO_F746NG ts;
+DigitalOut l1(D1),l2(D0),l3(D2);
+  AnalogIn Ain0(A0),Ain1(A1),Ain2(A2),Ain3(A3),Ain4(A4);
+  
+    int a0=0;
+    int a1=0;
+    int a2=0;
+    int a3=0;
+    int a4=0;
+   
+       
+    int last_a0=0;
+    int last_a1=0;
+    int last_a2=0;
+     int last_a3=0;
+    int last_a4=0;
+  
+       
+        int main(){  
+        TS_StateTypeDef TS_State;
+    
+    lcd.Clear(LCD_COLOR_WHITE);
+    lcd.SetBackColor(LCD_COLOR_WHITE);
+    
+ 
+    lcd.SetTextColor(LCD_COLOR_DARKGREEN);
+    lcd.FillEllipse(95,57,80,35);
+    
+    lcd.SetTextColor(LCD_COLOR_WHITE);
+     lcd.FillRect(13,20,45,80);
+    
+     lcd.SetTextColor(LCD_COLOR_BLACK);
+     lcd.FillRect(200,20,90,80);
+     
+     
+  lcd.SetTextColor(LCD_COLOR_DARKRED);
+     lcd.FillCircle(390,60,45);
+     
+     
+     
+     //set lcd to select sound
+      lcd.SetTextColor(LCD_COLOR_YELLOW);
+    lcd.FillRect(40,130,50,50);
+   
+      lcd.SetTextColor(LCD_COLOR_YELLOW);
+    lcd.FillRect(40,210,50,50);
+    
+       lcd.SetTextColor(LCD_COLOR_YELLOW);
+    lcd.FillRect(120,130,50,50);
+   
+      lcd.SetTextColor(LCD_COLOR_YELLOW);
+    lcd.FillRect(120,210,50,50);
+    
+       lcd.SetTextColor(LCD_COLOR_YELLOW);
+    lcd.FillRect(200,130,50,50);
+   
+      lcd.SetTextColor(LCD_COLOR_YELLOW);
+    lcd.FillRect(200,210,50,50);
+    
+       lcd.SetTextColor(LCD_COLOR_YELLOW);
+    lcd.FillRect(280,130,50,50);
+   
+      lcd.SetTextColor(LCD_COLOR_YELLOW);
+    lcd.FillRect(280,210,50,50);
+    
+    //mute midi
+    
+    lcd.SetTextColor(LCD_COLOR_ORANGE);
+    lcd.FillRect(360,155,80,80);
+    
+     
+    //write message
+     
+     lcd.SetBackColor(LCD_COLOR_DARKGREEN);
+     lcd.SetTextColor(LCD_COLOR_WHITE);
+     lcd.DisplayStringAt(75,50,(uint8_t*)"PLAY",LEFT_MODE);
+     
+      lcd.SetBackColor(LCD_COLOR_BLACK);
+     lcd.SetTextColor(LCD_COLOR_WHITE);
+     lcd.DisplayStringAt(205,50,(uint8_t*)"PAUSE",LEFT_MODE);
+     
+     lcd.SetBackColor(LCD_COLOR_DARKRED);
+     lcd.SetTextColor(LCD_COLOR_WHITE);
+     lcd.DisplayStringAt(366,55,(uint8_t*)"REC",LEFT_MODE);
+     
+     
+     lcd.SetBackColor(LCD_COLOR_ORANGE);
+     lcd.SetTextColor(LCD_COLOR_WHITE);
+     lcd.DisplayStringAt(375,187,(uint8_t*)"OFF",LEFT_MODE);
+     
+     
+     
+     lcd.SetBackColor(LCD_COLOR_YELLOW);
+     lcd.SetTextColor(LCD_COLOR_BLACK);
+     lcd.DisplayStringAt(58,145,(uint8_t*)"1",LEFT_MODE);
+     lcd.DisplayStringAt(58,225,(uint8_t*)"5",LEFT_MODE);
+     lcd.DisplayStringAt(138,145,(uint8_t*)"2",LEFT_MODE);
+     lcd.DisplayStringAt(138,225,(uint8_t*)"6",LEFT_MODE);
+     lcd.DisplayStringAt(218,145,(uint8_t*)"3",LEFT_MODE);
+     lcd.DisplayStringAt(218,225,(uint8_t*)"7",LEFT_MODE);
+     lcd.DisplayStringAt(298,145,(uint8_t*)"4",LEFT_MODE);
+     lcd.DisplayStringAt(298,225,(uint8_t*)"8",LEFT_MODE);
+           
+s2.attach(&set2,0.1);
+ while(1){
+     
+            a0=((Ain0.read()*(127))-10);
+         a1=((Ain1.read()*(-127))+5);
+         a2=((Ain2.read()*(-127))+5);
+         a3=((Ain3.read()*(-127))+10);
+         a4=((Ain4.read()*(-127))+10);
+            ts.GetState(&TS_State);
+         if((TS_State.touchDetected))
+         {
+              //Play
+              if(TS_State.touchY[0]>20&TS_State.touchY[0]<100&TS_State.touchX[0]>58&TS_State.touchX[0]<170)
+                {
+                s2.detach();
+              s3.detach();
+              s1.attach(&set3,0.3);
+              midi.write(MIDIMessage::ControlChange(7,1));
+             }
+             
+             //Pause
+             if(TS_State.touchY[0]>20&TS_State.touchY[0]<100&TS_State.touchX[0]>200&TS_State.touchX[0]<280)
+                {
+              s1.detach();
+               s3.detach();
+              s2.attach(&set2,0.1);  
+          midi.write(MIDIMessage::ControlChange(8,1));
+             } 
+             
+             //REC
+          if(TS_State.touchY[0]>20&TS_State.touchY[0]<100&TS_State.touchX[0]>345&TS_State.touchX[0]<435)
+                {
+          midi.write(MIDIMessage::ControlChange(9,1));
+            s1.detach();
+            s2.detach();
+           s3.attach(&set1,0.2);      
+             }
+             
+             // select sound
+            //1
+             if(TS_State.touchY[0]>130&TS_State.touchY[0]<180&TS_State.touchX[0]>40&TS_State.touchX[0]<90)
+                {
+          midi.write(MIDIMessage::NoteOn(127));
+             wait(1);
+             l1=0;
+             wait(0.3);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.3);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+             } 
+             
+             //2
+              if(TS_State.touchY[0]>210&TS_State.touchY[0]<260&TS_State.touchX[0]>40&TS_State.touchX[0]<90)
+                {
+          midi.write(MIDIMessage::NoteOn(126));
+           wait(1);
+        l1=0;
+             wait(0.3);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.3);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+             }
+             
+             //3 
+            if(TS_State.touchY[0]>130&TS_State.touchY[0]<180&TS_State.touchX[0]>120&TS_State.touchX[0]<170)
+                {
+          midi.write(MIDIMessage::NoteOn(125));
+           wait(1);
+          l1=0;
+             wait(0.3);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.3);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+             } 
+               
+               //4
+               if(TS_State.touchY[0]>210&TS_State.touchY[0]<260&TS_State.touchX[0]>120&TS_State.touchX[0]<170)
+                {
+          midi.write(MIDIMessage::NoteOn(124));
+           wait(1);
+         l1=0;
+             wait(0.3);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.3);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+             } 
+             
+             //5
+             if(TS_State.touchY[0]>130&TS_State.touchY[0]<180&TS_State.touchX[0]>200&TS_State.touchX[0]<250)
+                {
+          midi.write(MIDIMessage::NoteOn(123));
+           wait(1);
+         l1=0;
+             wait(0.3);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.3);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+             } 
+             
+             //6
+              if(TS_State.touchY[0]>210&TS_State.touchY[0]<260&TS_State.touchX[0]>200&TS_State.touchX[0]<250)
+                {
+          midi.write(MIDIMessage::NoteOn(122));
+           wait(1);
+           l1=0;
+             wait(0.3);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.3);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+             } 
+            
+             //7
+              if(TS_State.touchY[0]>130&TS_State.touchY[0]<180&TS_State.touchX[0]>280&TS_State.touchX[0]<330)
+                {
+          midi.write(MIDIMessage::NoteOn(121));
+             wait(1);
+             l1=0;
+             wait(0.3);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.3);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+             } 
+             
+             //8
+              if(TS_State.touchY[0]>210&TS_State.touchY[0]<260&TS_State.touchX[0]>280&TS_State.touchX[0]<330)
+                {
+          midi.write(MIDIMessage::NoteOn(120));
+             wait(1);
+      l1=0;
+             wait(0.3);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.3);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+             } 
+             
+                //off
+                if(TS_State.touchY[0]>155&TS_State.touchY[0]<235&TS_State.touchX[0]>360&TS_State.touchX[0]<440)
+                {
+          midi.write(MIDIMessage::NoteOn(119));
+             wait(1);
+                   
+      l1=0;
+             wait(0.5);
+             l1=1;
+             wait(0.1);
+             l2=0;
+             wait(0.4);
+             l2=1;
+             wait(0.1);
+            l3=0;
+             wait(0.3);
+             l3=1;
+             wait(0.1);
+           
+             } 
+         }
+         
+         
+         else{
+     
+        
+         //Write MIDI
+         
+         
+         //a0
+         if(a0!=last_a0){
+             last_a0=a0;
+     
+         midi.write(MIDIMessage::ControlChange(1,a0));
+         wait(0.008);
+         }
+        //a1
+     if(a1!=last_a1){
+             last_a1=a1;
+     
+         midi.write(MIDIMessage::ControlChange(2,a1));
+         wait(0.008);
+         }
+        //a2
+         
+        if(a2!=last_a2){
+             last_a2=a2;
+     
+         midi.write(MIDIMessage::ControlChange(3,a2));
+         wait(0.008);
+       }
+       //a3
+        if(a3!=last_a3){
+             last_a3=a3;
+     
+         midi.write(MIDIMessage::ControlChange(4,a3));
+        wait(0.008);
+         }
+        //a4
+        if(a4!=last_a4){
+             last_a4=a4;
+     
+        midi.write(MIDIMessage::ControlChange(5,a4));
+        wait(0.008);
+         }
+   }}
+        } 
+         //red
+            void set1(){
+                l1=!l1;
+                l2=1;
+                l3=1;   
+             }
+             
+             //blue
+            void set2(){
+                l1=1;
+                l2=0;
+                l3=1; 
+             }
+              
+              
+              //green
+            void set3(){
+                l1=1;
+                l2=1;
+                l3=0; 
+             }
+             
+
+ 
+
+
+    
\ No newline at end of file