er

Dependencies:   mbed oled_ssd1306_1-3inch

Fork of Nucleo_i2c_OLED1234 by joseph chen

Committer:
mijimy
Date:
Sun Aug 27 06:15:47 2017 +0000
Revision:
1:d349d4271837
Parent:
0:94c1a94c5a47
Child:
2:45b51e456076
oled

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mijimy 1:d349d4271837 1 #include "stm32f103c8t6.h"
ittraining 0:94c1a94c5a47 2 #include "mbed.h"
ittraining 0:94c1a94c5a47 3 #include "I2C_SSD1306Z.h"
mijimy 1:d349d4271837 4 #include "logo.h"
ittraining 0:94c1a94c5a47 5
ittraining 0:94c1a94c5a47 6 I2C i2c(I2C_SDA, I2C_SCL);
mijimy 1:d349d4271837 7
ittraining 0:94c1a94c5a47 8
mijimy 1:d349d4271837 9 InterruptIn speedsig(PB_4); //define and name the interrupt input
mijimy 1:d349d4271837 10 InterruptIn rpmsig(PB_5); //define and name the interrupt input
mijimy 1:d349d4271837 11 DigitalOut pulse(PC_13);
mijimy 1:d349d4271837 12 DigitalOut pulse1(PB_3);
mijimy 1:d349d4271837 13 float t_period = 0; // This is the period between interrupts in microseconds
mijimy 1:d349d4271837 14 Timer t,tr;
mijimy 1:d349d4271837 15 long timing,timingr,oldvalue,oldtiming,speed=0;
mijimy 1:d349d4271837 16 int count1=0,count2=0;
mijimy 1:d349d4271837 17 //P//wmOut output(led);
mijimy 1:d349d4271837 18 void ISR1() { //this is the response to interrupt, i.e. the ISR
mijimy 1:d349d4271837 19 if(speed<175)
mijimy 1:d349d4271837 20 { pulse=1;
mijimy 1:d349d4271837 21 pulse1=1;
mijimy 1:d349d4271837 22 }
mijimy 1:d349d4271837 23 else
mijimy 1:d349d4271837 24 { count1++;
mijimy 1:d349d4271837 25 if(count1>1)
mijimy 1:d349d4271837 26 { pulse=1;
mijimy 1:d349d4271837 27 pulse1=1;
mijimy 1:d349d4271837 28 count1=0;
mijimy 1:d349d4271837 29 }
mijimy 1:d349d4271837 30 }
mijimy 1:d349d4271837 31 timing=t.read_us();
mijimy 1:d349d4271837 32 }
mijimy 1:d349d4271837 33 void ISR2() { //this is the response to interrupt, i.e. the ISR
mijimy 1:d349d4271837 34 if(speed<175)
mijimy 1:d349d4271837 35 { pulse=0;
mijimy 1:d349d4271837 36 pulse1=0;
mijimy 1:d349d4271837 37 }
mijimy 1:d349d4271837 38 else
mijimy 1:d349d4271837 39 { count2++;
mijimy 1:d349d4271837 40 if(count2>1)
mijimy 1:d349d4271837 41 { pulse=0;
mijimy 1:d349d4271837 42 pulse1=0;
mijimy 1:d349d4271837 43 count2=0;
mijimy 1:d349d4271837 44 }
mijimy 1:d349d4271837 45 }
mijimy 1:d349d4271837 46 t.reset();
mijimy 1:d349d4271837 47 }
mijimy 1:d349d4271837 48
mijimy 1:d349d4271837 49 void ISR3() { //this is the response to interrupt, i.e. the ISR
mijimy 1:d349d4271837 50 timingr=tr.read_us();
mijimy 1:d349d4271837 51 tr.reset();
mijimy 1:d349d4271837 52 }
ittraining 0:94c1a94c5a47 53
ittraining 0:94c1a94c5a47 54 int main()
ittraining 0:94c1a94c5a47 55 {
mijimy 1:d349d4271837 56 char buffer [20];
mijimy 1:d349d4271837 57 confSysClock(); //Configure system clock (72MHz HSE clock, 48MHz USB clock)
mijimy 1:d349d4271837 58
mijimy 1:d349d4271837 59 speedsig.fall(&ISR1); // attach the address of the ISR function to the
mijimy 1:d349d4271837 60 speedsig.rise(&ISR2); // attach the address of the ISR function to the
mijimy 1:d349d4271837 61 rpmsig.rise(&ISR3); // attach the address of the ISR function to the
mijimy 1:d349d4271837 62 wait(0.5);
mijimy 1:d349d4271837 63 t.start(); //start timer
mijimy 1:d349d4271837 64 tr.start();
mijimy 1:d349d4271837 65 Init_LCD();
mijimy 1:d349d4271837 66 draw_LCD(NISSAN);
mijimy 1:d349d4271837 67 wait(2.0);
mijimy 1:d349d4271837 68 clear_LCD();
mijimy 1:d349d4271837 69 print_Line(0, " Speed and Rev");
mijimy 1:d349d4271837 70 print_Line(1, " Meter ");
mijimy 1:d349d4271837 71 print_Line(2, " by: Miji");
mijimy 1:d349d4271837 72 print_Line(3, " ************* ");
mijimy 1:d349d4271837 73 wait(2.0);
mijimy 1:d349d4271837 74 clear_LCD();
mijimy 1:d349d4271837 75 draw_LCD(B13);
mijimy 1:d349d4271837 76 wait(2.0);
mijimy 1:d349d4271837 77 clear_LCD();
mijimy 1:d349d4271837 78 while(1) {
mijimy 1:d349d4271837 79 int rpm=30000000/timingr;
mijimy 1:d349d4271837 80 long freq_m=100000000/(timing*4);
mijimy 1:d349d4271837 81 speed=(freq_m*63)/1067;
mijimy 1:d349d4271837 82 if(tr.read()>0.3f) // timeout
mijimy 1:d349d4271837 83 rpm=0;
mijimy 1:d349d4271837 84 if(t.read()>0.8f) // timeout
mijimy 1:d349d4271837 85 speed=0;
mijimy 1:d349d4271837 86 if(speed<2 || speed>300)
mijimy 1:d349d4271837 87 speed=0;
mijimy 1:d349d4271837 88 sprintf(buffer,"Speed: %3d kmh " ,speed);
mijimy 1:d349d4271837 89 print_Line(0, buffer);
mijimy 1:d349d4271837 90 if(rpm<300 || rpm >10000)
mijimy 1:d349d4271837 91 rpm=0;
mijimy 1:d349d4271837 92 sprintf(buffer,"Rev: %5d rpm" ,rpm);
mijimy 1:d349d4271837 93 print_Line(2, buffer);
mijimy 1:d349d4271837 94 wait(0.3);
mijimy 1:d349d4271837 95
mijimy 1:d349d4271837 96 }
mijimy 1:d349d4271837 97 }
ittraining 0:94c1a94c5a47 98
mijimy 1:d349d4271837 99 /*
mijimy 1:d349d4271837 100 int main()
mijimy 1:d349d4271837 101 {
mijimy 1:d349d4271837 102 confSysClock(); //Configure system clock (72MHz HSE clock, 48MHz USB clock)
ittraining 0:94c1a94c5a47 103
ittraining 0:94c1a94c5a47 104 printf("init oled\n");
ittraining 0:94c1a94c5a47 105
ittraining 0:94c1a94c5a47 106 Init_LCD();
ittraining 0:94c1a94c5a47 107 clear_LCD();
ittraining 0:94c1a94c5a47 108
ittraining 0:94c1a94c5a47 109 while (1) {
ittraining 0:94c1a94c5a47 110
ittraining 0:94c1a94c5a47 111
mijimy 1:d349d4271837 112 draw_LCD(B13);
ittraining 0:94c1a94c5a47 113 wait(2.0);
ittraining 0:94c1a94c5a47 114 clear_LCD();
ittraining 0:94c1a94c5a47 115 print_Line(0, "IT Maker Space");
ittraining 0:94c1a94c5a47 116 print_Line(1, "ARM mbed RTOS");
ittraining 0:94c1a94c5a47 117 print_Line(2, "ST Micro");
ittraining 0:94c1a94c5a47 118 print_Line(3, "ittraining.com");
ittraining 0:94c1a94c5a47 119 wait(2.0);
ittraining 0:94c1a94c5a47 120 clear_LCD();
ittraining 0:94c1a94c5a47 121
ittraining 0:94c1a94c5a47 122 }
ittraining 0:94c1a94c5a47 123
mijimy 1:d349d4271837 124 }*/
ittraining 0:94c1a94c5a47 125
ittraining 0:94c1a94c5a47 126