Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 4:51bfa333200c, committed 2019-05-28
- Comitter:
- BugraTufan
- Date:
- Tue May 28 23:22:51 2019 +0000
- Parent:
- 3:4a3e169866a2
- Commit message:
- deneme1
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BNO055.lib Tue May 28 23:22:51 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/StressedDave/code/BNO055/#1f722ffec323
--- a/RA8875.h Thu Mar 14 12:00:15 2019 +0000 +++ b/RA8875.h Tue May 28 23:22:51 2019 +0000 @@ -124,7 +124,7 @@ // Colors (RGB565) #define BLACK 0x0000 -#define BLUE 0x001F +#define BLUE 0x32f2 #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF
--- a/main.cpp Thu Mar 14 12:00:15 2019 +0000
+++ b/main.cpp Tue May 28 23:22:51 2019 +0000
@@ -1,21 +1,96 @@
#include "RA8875.h"
+#include <string>
+#include <stdlib.h>
+#include <time.h>
+#include "BNO055.h"
+
-#define MOSI PTD2
-#define MISO PTD3
-#define SCLK PTD1
-#define CS PTD0
-#define RST PTC4
-DigitalIn INT(PTC12);
+#define MOSI PC_12
+#define MISO PC_11
+#define SCLK PC_10
+#define CS PA_15
+#define RST PD_0
+
+DigitalIn INT(PD_1);
+BNO055 imu(PB_7,PB_6);
+DigitalOut G0(PG_0);
+DigitalOut bno_enable(PB_5);
Adafruit_RA8875 lcd = Adafruit_RA8875(MOSI, MISO, SCLK, CS, RST);
uint16_t tx, ty;
+char * toString(uint16_t number);
+Serial pc(USBTX, USBRX); // tx, rxSerial pc(USBTX, USBRX); // tx, rx
+void menu();
+void menu1();
+void menu2();
+bool buttonState(uint16_t xMin, uint16_t yMin, uint16_t xMax, uint16_t yMax);
+bool notificationState = true;
+bool refresh = false;
+uint16_t menuVal = 0;
-Serial pc(USBTX, USBRX); // tx, rxSerial pc(USBTX, USBRX); // tx, rx
+
+
+class button{
+ public:
+ uint16_t x;
+ uint16_t y;
+ uint16_t w;
+ uint16_t h;
+ uint16_t textY;
+ bool state;
+ const char* buttonName;
+ bool debounceState;
+
+ void update(){
+ state = buttonState(x, y, x+w, y+h);
+ }
+ void create(){
+ /*char char_array[buttonName.length()];
+ for (int i = 0; i < sizeof(char_array); i++) {
+ char_array[i] = buttonName[i];
+ } */
+ lcd.textEnlarge(1);
+ if(debounceState == 0){
+ lcd.boxDraw(x,y,w,h,1,GREY,BLUE);
+ lcd.textWritePro(x+2,textY,WHITE,BLUE, buttonName );
+ }
+ if(debounceState == 1){
+ lcd.boxDraw(x,y,w,h,1,GREY,GREEN);
+ lcd.textWritePro(x+2,textY,WHITE,GREEN, buttonName );
+ }
+
+ }
+
+};
+
+button menu1_Button;
+button menu2_Button;
+button relay1_Button;
+button relay2_Button;
+button relay3_Button;
+button relay4_Button;
+button relay5_Button;
+button relay6_Button;
+button relay7_Button;
+button relay8_Button;
+button relay9_Button;
+button settings_Button;
+
void setup()
{
+ bno_enable = 1;
pc.baud(9600);
pc.printf("RA8875 start\n");
+ imu.reset();
+ if (!imu.check()){
+ while (true){
+ G0 = !G0;
+ wait(0.1);
+ }
+ }
+ imu.setmode(OPERATION_MODE_NDOF);
+ imu.get_calib();
}
int main()
@@ -28,69 +103,287 @@
lcd.fillScreen(BLACK);
lcd.touchEnable(true);
- /* Render some text! */
- lcd.textEnlarge(3);
- lcd.textWritePro(10,30,WHITE,0,"Hello, Jacob! ");
- lcd.textEnlarge(1.2);
- lcd.textWritePro(10,150,WHITE,0, "I am finally working!");
- lcd.textWritePro(10, 450, GREEN, 0, "Testing 1.. 2");
- wait(2);
- lcd.fillScreen(BLACK);
+
lcd.graphicsMode();
- lcd.rectHelper(0,0,800,480,WHITE,1);
- lcd.rectHelper(5,5,794,474,BLACK,1);
-
- //lcd.boxDraw(0,0,400,400,10,GREEN,YELLOW);
- lcd.boxDraw(10,10,459,459,10,GREY,ORANGE);
-
-
-//////// Drawing a line for a graph
-
-
lcd.drawPixel(50,200,WHITE);
-
-
-
-
-
-
-
- /*
- lcd.textColor(RA8875_WHITE, RA8875_RED);
- lcd.textWrite(string);
- lcd.textTransparent(RA8875_CYAN);
- lcd.textWrite(string);
- lcd.textTransparent(RA8875_GREEN);
- lcd.textWrite(string);
- lcd.textColor(RA8875_YELLOW, RA8875_CYAN);
- lcd.textWrite(string);
- //lcd.textColor(RA8875_BLACK, RA8875_MAGENTA);
- lcd.textWrite(string);
- */
-
-
- //lcd.drawCircle(100, 100, 50, RA8875_RED);
- //lcd.fillCircle(100, 100, 50, RA8875_RED);
-
- //lcd.fillCircle(200, 200, 50, RA8875_RED);
-
+ menu();
+ menu1();
float xScale = 1024.0F/lcd.width();
float yScale = 1024.0F/lcd.height();
bool INT = 1;
- /* Wait around for touch events */
while(1) {
if (INT == !1);
{
if (lcd.touched()) {
- //Serial.print("Touch: ");
lcd.touchRead(&tx, &ty);
- //Serial.print(tx); Serial.print(", "); Serial.println(ty);
- /* Draw a circle */
- lcd.fillCircle((uint16_t)(tx/xScale), (uint16_t)(ty/yScale), 1, WHITE);
+ //lcd.fillCircle((uint16_t)(tx/xScale), (uint16_t)(ty/yScale), 1, WHITE);
+ lcd.textEnlarge(1.2);
+ uint16_t tmp;
+ tmp = (uint16_t)(tx/xScale);
+
+ imu.get_angles();
+ pc.printf("%0z %5.1d %5.1d %5.1d\r\n",imu.calib,imu.euler.roll,imu.euler.pitch,imu.euler.yaw);
+ tmp = (uint16_t)(abs(imu.euler.pitch));
+ wait(0.1);
+ char arr[7];
+ arr[0] = tmp/100;
+ tmp = tmp - arr[0]*100;
+ arr[1] = tmp/10;
+ tmp = tmp - arr[1]*10;
+ arr[2] = tmp+48;
+ arr[1]+=48;
+ arr[0]+=48;
+ lcd.textWritePro(10, 450, GREEN, 0, arr);
+ tmp = (uint16_t)(ty/yScale);
+ arr[3] = ',';
+ arr[4] = tmp/100;
+ tmp = tmp - arr[4]*100;
+ arr[5] = tmp/10;
+ tmp = tmp - arr[5]*10;
+ arr[6] = tmp+48;
+ arr[5]+=48;
+ arr[4]+=48;
+ lcd.textWritePro(10, 450, GREEN, 0, arr);
+ menu1_Button.update();
+ menu2_Button.update();
+ relay1_Button.update();
+ relay2_Button.update();
+ relay3_Button.update();
+ relay4_Button.update();
+ relay5_Button.update();
+ relay6_Button.update();
+ relay7_Button.update();
+ relay8_Button.update();
+ relay9_Button.update();
+ if(menu1_Button.state == 1){
+ menuVal = 1;
+ //menu();
+ menu1();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(menu2_Button.state == 1){
+ menuVal = 2;
+ //menu();
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay1_Button.state == 1){
+ relay1_Button.debounceState = !relay1_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay2_Button.state == 1){
+ relay2_Button.debounceState = !relay2_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay3_Button.state == 1){
+ relay3_Button.debounceState = !relay3_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay4_Button.state == 1){
+ relay4_Button.debounceState = !relay4_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay5_Button.state == 1){
+ relay5_Button.debounceState = !relay5_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay6_Button.state == 1){
+ relay6_Button.debounceState = !relay6_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay7_Button.state == 1){
+ relay7_Button.debounceState = !relay7_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay8_Button.state == 1){
+ relay8_Button.debounceState = !relay8_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+ if(relay9_Button.state == 1){
+ relay9_Button.debounceState = !relay9_Button.debounceState;
+ menu2();
+ lcd.touchRead(&tx, &ty);
+ wait(0.5);
+ }
+
}
}
}
-}
\ No newline at end of file
+}
+void menu(){
+ lcd.rectHelper(0,0,800,480,BLACK,1);
+ lcd.textEnlarge(1);
+ lcd.textWritePro(10,5,WHITE,0,"NAVARC Solarange");
+ lcd.boxDraw(0,45,800,0,4,GREY,BLUE);
+ lcd.boxDraw(250,100,30,30,1,GREY,BLUE);
+ if(notificationState){
+ lcd.rectHelper(60,100,350,300,GREY,1);
+ lcd.boxDraw(250,100,30,30,1,GREY,BLUE);
+ }
+
+ menu1_Button.x = 50;
+ menu1_Button.y = 350;
+ menu1_Button.w = 300;
+ menu1_Button.h = 100;
+ menu1_Button.textY = 380;
+ menu1_Button.buttonName = " Menu 1";
+ menu1_Button.create();
+
+ menu2_Button.x = 450;
+ menu2_Button.y = 350;
+ menu2_Button.w = 300;
+ menu2_Button.h = 100;
+ menu2_Button.textY = 380;
+ menu2_Button.buttonName = " Menu 2";
+ menu2_Button.create();
+}
+
+void menu1(){
+ lcd.rectHelper(20,70,750,330,BLACK,1);
+ lcd.boxDraw(390,70,400,250,1,WHITE,WHITE);
+ lcd.textEnlarge(1);
+ lcd.textWritePro(395,80,BLUE,WHITE,"Panel Grubu 1: 75kW");
+ lcd.textWritePro(395,110,BLUE,WHITE,"Panel Grubu 2: 75kW");
+ lcd.textWritePro(395,140,BLUE,WHITE,"Panel Grubu 3: 75kW");
+ lcd.textWritePro(395,170,BLUE,WHITE,"Batarya : %?");
+ lcd.textWritePro(395,200,BLUE,WHITE,"Menzil : KM");
+ lcd.textWritePro(395,230,BLUE,WHITE,"Meyil Acisi : 22 derece");
+ lcd.textWritePro(395,260,BLUE,WHITE,"Trim Acisi : 11 derece");
+ lcd.textWritePro(395,290,BLUE,WHITE,"Donus Acisi : 125 derece");
+
+ lcd.boxDraw(50,70,300,250,0,WHITE,BLUE);
+ lcd.drawCircle(50+150,70+125,100,WHITE);
+ lcd.drawCircle(50+150,70+125,99,WHITE);
+ lcd.drawCircle(50+150,70+125,98,WHITE);
+ lcd.drawCircle(50+150,70+125,97,WHITE);
+ lcd.drawCircle(50+150,70+125,96,WHITE);
+ lcd.textEnlarge(1);
+ lcd.textWritePro(67,285,WHITE,BLUE,"HIZ");
+ lcd.textEnlarge(4);
+ lcd.textWritePro(120+34,25+120,WHITE,BLUE, "220");
+ lcd.textEnlarge(2);
+ lcd.textWritePro(120+35,120+40+40,WHITE,BLUE, "Knot");
+ //string s = to_string(rand() % 10 + 1;)
+}
+void menu2(){
+ lcd.rectHelper(50,70,800,330,BLACK,1);
+ //lcd.rectHelper(30,70,770,330,WHITE,1);
+ relay1_Button.x = 20;
+ relay1_Button.y = 85;
+ relay1_Button.w = 140;
+ relay1_Button.h = 90;
+ relay1_Button.textY = 85+30;
+ relay1_Button.buttonName = " Relay 1";
+ relay1_Button.create();
+
+ relay2_Button.x = 20;
+ relay2_Button.y = 205;
+ relay2_Button.w = 140;
+ relay2_Button.h = 90;
+ relay2_Button.textY = 205+30;
+ relay2_Button.buttonName = " Relay 2";
+ relay2_Button.create();
+
+ relay3_Button.x = 175;
+ relay3_Button.y = 85;
+ relay3_Button.w = 140;
+ relay3_Button.h = 90;
+ relay3_Button.textY = 85+30;
+ relay3_Button.buttonName = " Relay 3";
+ relay3_Button.create();
+
+ relay4_Button.x = 175;
+ relay4_Button.y = 205;
+ relay4_Button.w = 140;
+ relay4_Button.h = 90;
+ relay4_Button.textY = 205+30;
+ relay4_Button.buttonName = " Relay 4";
+ relay4_Button.create();
+
+ relay5_Button.x = 330;
+ relay5_Button.y = 85;
+ relay5_Button.w = 140;
+ relay5_Button.h = 90;
+ relay5_Button.textY = 85+30;
+ relay5_Button.buttonName = " Relay 5";
+ relay5_Button.create();
+
+ relay6_Button.x = 330;
+ relay6_Button.y = 205;
+ relay6_Button.w = 140;
+ relay6_Button.h = 90;
+ relay6_Button.textY = 205+30;
+ relay6_Button.buttonName = " Relay 6";
+ relay6_Button.create();
+
+ relay7_Button.x = 485;
+ relay7_Button.y = 85;
+ relay7_Button.w = 140;
+ relay7_Button.h = 90;
+ relay7_Button.textY = 85+30;
+ relay7_Button.buttonName = " Relay 7";
+ relay7_Button.create();
+
+ relay8_Button.x = 485;
+ relay8_Button.y = 205;
+ relay8_Button.w = 140;
+ relay8_Button.h = 90;
+ relay8_Button.textY = 205+30;
+ relay8_Button.buttonName = " Relay 8";
+ relay8_Button.create();
+
+ relay9_Button.x = 640;
+ relay9_Button.y = 85;
+ relay9_Button.w = 140;
+ relay9_Button.h = 90;
+ relay9_Button.textY = 85+30;
+ relay9_Button.buttonName = " Relay 9";
+ relay9_Button.create();
+
+ settings_Button.x = 640;
+ settings_Button.y = 205;
+ settings_Button.w = 140;
+ settings_Button.h = 90;
+ settings_Button.textY = 205+30;
+ settings_Button.buttonName = " Ayarlar";
+ settings_Button.create();
+
+}
+
+bool buttonState(uint16_t xMin, uint16_t yMin, uint16_t xMax, uint16_t yMax){
+
+ float xScale = 1024.0F/lcd.width();
+ float yScale = 1024.0F/lcd.height();
+ if((uint16_t)(tx/xScale)>xMin && (uint16_t)(tx/xScale)<xMax){
+ if((uint16_t)(ty/yScale)>yMin && (uint16_t)(ty/yScale)<yMax){
+ return true;
+ }
+ }
+ return false;
+
+}
+
+
+
+
\ No newline at end of file