ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

main.cpp

Committer:
el17cd
Date:
2019-02-22
Revision:
1:044238f7bdda
Parent:
0:efb5eec6b8ea
Child:
2:a5bc7b3779f7

File content as of revision 1:044238f7bdda:

/*
ELEC2645 Embedded Systems Project
School of Electronic & Electrical Engineering
University of Leeds
Name: Christopher Doel
Username: el17cd
Student ID Number: 201146223
Date: 22/02/19
*/

#include "mbed.h"
#include "N5110.h"
#include <vector>
 
 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);

int main()
{
    lcd.init();

    while(1) {
        lcd.clear();
        for(int i = 0; i<5; i++){
            float points[4][2] = {{rand()%20,rand()%20},{20+rand()%20, rand()%20}, {20+rand()%20,20+rand()%20}, {rand()%20,20+rand()%20}};
            
            float length = sqrt(pow((double)(points[0][0]-points[1][0]),2.0) + pow((double)(points[0][1]-points[1][1]),2));
            float length1 = sqrt(pow((double)(points[2][0]-points[3][0]),2.0) + pow((double)(points[2][1]-points[3][1]),2));
    
            int diffX1 = points[0][0]-points[1][0];
            int diffY1 = points[0][1]-points[1][1];
            int diffX2 = points[2][0]-points[3][0];
            int diffY2 = points[2][1]-points[3][1];
        
            if (abs(diffX1) > abs(diffX2)){
                
                float step = (float)diffY1/(float)diffX1;
                float stepSmall1 = (float)diffX2/(float)diffX1;
                float stepSmall2 = (float)diffY2/(float)diffX1;
                lcd.printString("top",0,0);
                for(int s = 0; s<= abs(diffX1)-1; s++){
                    lcd.drawLine(points[0][0]+s, rint(points[0][1]+step*s), rint(points[3][0]-stepSmall1*s), rint(points[3][1]-stepSmall2*s), 0); 
                    lcd.drawLine(points[0][0]+s+1, rint(points[0][1]+step*s), rint(points[3][0]-stepSmall1*s-1), rint(points[3][1]-stepSmall2*s), 0); 
                }
                lcd.printString("a",10,0);
            }
            else{
                lcd.printString("bottom",0,0);
                float step = (float)diffY2/(float)diffX2;
                float stepSmall1 = (float)diffX1/(float)diffX2;
                float stepSmall2 = (float)diffY1/(float)diffX2;
                
                for(int s = 0; s<= abs(diffX2)-1; s++){
                    lcd.drawLine(points[0][0]-stepSmall1*s, rint(points[0][1]-stepSmall2*s),rint(points[3][0]+s), rint(points[3][1]+step*s), 0); 
                    lcd.drawLine(points[0][0]-stepSmall1*s-1, rint(points[0][1]-stepSmall2*s),rint(points[3][0]+s+1), rint(points[3][1]+step*s), 0); 
                }
            }
            for (int i = 0; i < 3; i++){
            lcd.drawLine(points[i][0],
                         points[i][1],
                         points[i+1][0],
                         points[i+1][1],
                         1);
            }
            lcd.drawLine(points[0][0],
                         points[0][1],
                         points[3][0],
                         points[3][1],
                         1);
        } 
        lcd.refresh(); // refresh the LCD so the pixels appear
        wait_ms(1000/1);  // this gives a refresh rate of 10 frames per second
    }
}