ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Committer:
el17cd
Date:
Fri Feb 22 14:01:20 2019 +0000
Revision:
3:2e31dfcb712a
Parent:
2:a5bc7b3779f7
Child:
4:759a5c34e239
Rasteriser now working with lcd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17cd 0:efb5eec6b8ea 1 /*
el17cd 0:efb5eec6b8ea 2 ELEC2645 Embedded Systems Project
el17cd 0:efb5eec6b8ea 3 School of Electronic & Electrical Engineering
el17cd 0:efb5eec6b8ea 4 University of Leeds
el17cd 0:efb5eec6b8ea 5 Name: Christopher Doel
el17cd 0:efb5eec6b8ea 6 Username: el17cd
el17cd 0:efb5eec6b8ea 7 Student ID Number: 201146223
el17cd 0:efb5eec6b8ea 8 Date: 22/02/19
el17cd 0:efb5eec6b8ea 9 */
el17cd 0:efb5eec6b8ea 10
el17cd 0:efb5eec6b8ea 11 #include "mbed.h"
el17cd 1:044238f7bdda 12 #include <vector>
el17cd 3:2e31dfcb712a 13 #include "Face.h"
el17cd 3:2e31dfcb712a 14
el17cd 2:a5bc7b3779f7 15 #include "N5110.h"
el17cd 2:a5bc7b3779f7 16 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
el17cd 0:efb5eec6b8ea 17
el17cd 2:a5bc7b3779f7 18
el17cd 0:efb5eec6b8ea 19 int main()
el17cd 0:efb5eec6b8ea 20 {
el17cd 3:2e31dfcb712a 21 float p[4][3] = {{1,0,0},{0,0,0},{0,0,0},{0,0,0}};
el17cd 3:2e31dfcb712a 22 char buffer[50];
el17cd 3:2e31dfcb712a 23 Face f(p);
el17cd 3:2e31dfcb712a 24 int n=sprintf (buffer, "%f", f.GetVertexValue(0,0));
el17cd 3:2e31dfcb712a 25
el17cd 2:a5bc7b3779f7 26
el17cd 1:044238f7bdda 27 lcd.init();
el17cd 1:044238f7bdda 28
el17cd 1:044238f7bdda 29 while(1) {
el17cd 1:044238f7bdda 30 lcd.clear();
el17cd 1:044238f7bdda 31 for(int i = 0; i<5; i++){
el17cd 1:044238f7bdda 32 float points[4][2] = {{rand()%20,rand()%20},{20+rand()%20, rand()%20}, {20+rand()%20,20+rand()%20}, {rand()%20,20+rand()%20}};
el17cd 1:044238f7bdda 33
el17cd 1:044238f7bdda 34 float length = sqrt(pow((double)(points[0][0]-points[1][0]),2.0) + pow((double)(points[0][1]-points[1][1]),2));
el17cd 1:044238f7bdda 35 float length1 = sqrt(pow((double)(points[2][0]-points[3][0]),2.0) + pow((double)(points[2][1]-points[3][1]),2));
el17cd 1:044238f7bdda 36
el17cd 1:044238f7bdda 37 int diffX1 = points[0][0]-points[1][0];
el17cd 1:044238f7bdda 38 int diffY1 = points[0][1]-points[1][1];
el17cd 1:044238f7bdda 39 int diffX2 = points[2][0]-points[3][0];
el17cd 1:044238f7bdda 40 int diffY2 = points[2][1]-points[3][1];
el17cd 1:044238f7bdda 41
el17cd 1:044238f7bdda 42 if (abs(diffX1) > abs(diffX2)){
el17cd 1:044238f7bdda 43
el17cd 1:044238f7bdda 44 float step = (float)diffY1/(float)diffX1;
el17cd 1:044238f7bdda 45 float stepSmall1 = (float)diffX2/(float)diffX1;
el17cd 1:044238f7bdda 46 float stepSmall2 = (float)diffY2/(float)diffX1;
el17cd 3:2e31dfcb712a 47 lcd.printString(buffer,0,0);
el17cd 1:044238f7bdda 48 for(int s = 0; s<= abs(diffX1)-1; s++){
el17cd 1:044238f7bdda 49 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);
el17cd 1:044238f7bdda 50 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);
el17cd 1:044238f7bdda 51 }
el17cd 1:044238f7bdda 52 lcd.printString("a",10,0);
el17cd 1:044238f7bdda 53 }
el17cd 1:044238f7bdda 54 else{
el17cd 3:2e31dfcb712a 55 lcd.printString(buffer,0,0);
el17cd 1:044238f7bdda 56 float step = (float)diffY2/(float)diffX2;
el17cd 1:044238f7bdda 57 float stepSmall1 = (float)diffX1/(float)diffX2;
el17cd 1:044238f7bdda 58 float stepSmall2 = (float)diffY1/(float)diffX2;
el17cd 1:044238f7bdda 59
el17cd 1:044238f7bdda 60 for(int s = 0; s<= abs(diffX2)-1; s++){
el17cd 1:044238f7bdda 61 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);
el17cd 1:044238f7bdda 62 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);
el17cd 1:044238f7bdda 63 }
el17cd 1:044238f7bdda 64 }
el17cd 1:044238f7bdda 65 for (int i = 0; i < 3; i++){
el17cd 1:044238f7bdda 66 lcd.drawLine(points[i][0],
el17cd 1:044238f7bdda 67 points[i][1],
el17cd 1:044238f7bdda 68 points[i+1][0],
el17cd 1:044238f7bdda 69 points[i+1][1],
el17cd 1:044238f7bdda 70 1);
el17cd 1:044238f7bdda 71 }
el17cd 1:044238f7bdda 72 lcd.drawLine(points[0][0],
el17cd 1:044238f7bdda 73 points[0][1],
el17cd 1:044238f7bdda 74 points[3][0],
el17cd 1:044238f7bdda 75 points[3][1],
el17cd 1:044238f7bdda 76 1);
el17cd 1:044238f7bdda 77 }
el17cd 1:044238f7bdda 78 lcd.refresh(); // refresh the LCD so the pixels appear
el17cd 1:044238f7bdda 79 wait_ms(1000/1); // this gives a refresh rate of 10 frames per second
el17cd 0:efb5eec6b8ea 80 }
el17cd 0:efb5eec6b8ea 81 }