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.
Diff: main.cpp
- Revision:
- 4:3aedc9246ae4
- Parent:
- 3:4249dbdf7ed3
- Child:
- 5:4e5c644d5cc3
--- a/main.cpp Wed Nov 14 09:58:13 2018 +0000
+++ b/main.cpp Wed Nov 14 15:18:12 2018 +0000
@@ -11,6 +11,7 @@
void Ph34 (void);
void Ph4(void);
void Ph41 (void);
+void GetChar (void);
Serial pc(USBTX, USBRX); // tx, rx - set up the Terraterm input from mbed
@@ -24,6 +25,7 @@
DigitalOut Phase4 (p24);
DigitalIn Button1 (p11);
+DigitalIn Button2 (p12);
DigitalOut led1(LED1);
DigitalOut led2(LED2);
@@ -37,6 +39,8 @@
int RPS = 0;
int RPM = 0;
+char c;
+
float x=0.05, y=0.02, z=1; //x=time of square wave when 1 phase energised, y=time of square wave when 2 phases energised
int main(void)
@@ -46,7 +50,7 @@
Initialisation();
wait(0.1);
t.start();
-
+
while(wheel.getRevolutions()==0)
{
switch(StateA)
@@ -71,17 +75,59 @@
StateA=0;
}
}
- }
+}
while(1)
- {
- while(wheel.getRevolutions()>0 && wheel.getPulses()>0)
+ {
+ while((led1 == 0) && (led2 == 0))
+ {
+ GetChar();
+ }
+ while((wheel.getRevolutions()>0) && (wheel.getPulses()>0) && (led1==1))
{
- StateB = (wheel.getPulses())%16;
- //pc.printf("StateA= %i\n\r", StateA);
- pc.printf("1 StateB= %i, Pulses= %i, Revs= %i\r", StateB,wheel.getPulses(),wheel.getRevolutions());
- //pc.printf("",);
- // pc.printf("",);
+ GetChar();
+ StateB = (wheel.getPulses())%16;
+ //pc.printf("1 StateB= %i, Pulses= %i, Revs= %i\r", StateB,wheel.getPulses(),wheel.getRevolutions());
+
+ switch(StateB)
+ {
+ case 0:Ph3();break;
+ case 1:Ph3();break;
+ case 2:Ph34();break;
+ case 3:Ph34();break;
+ case 4:Ph4();break;
+ case 5:Ph4();break;
+ case 6:Ph41();break;
+ case 7:Ph41();break;
+ case 8:Ph1();break;
+ case 9:Ph1();break;
+ case 10:Ph12();break;
+ case 11:Ph12();break;
+ case 12:Ph2();break;
+ case 13:Ph2();break;
+ case 14:Ph23();break;
+ case 15:Ph23();break;
+ default:break;
+ }
+
+ if(wheel.getYay()==1)
+ {
+ wheel.ResetYay();
+ TimePerClick = (t.read_us());
+ t.reset();
+ TimePerRev = TimePerClick * 400;
+ TimePerRev = TimePerRev / 1000;
+ RPS = 10000000 / TimePerRev;
+ RPM = (RPS * 60)/10000;
+ pc.printf("RPM = %d\n\r", RPM);
+ }
+ }
+
+ while(wheel.getRevolutions()>0 && wheel.getPulses()<1 && (led1==1))
+ {
+ GetChar();
+ StateB = (800+wheel.getPulses())%16;
+ //pc.printf("2 StateB= %i, Pulses= %i, Revs= %i\r", StateB,wheel.getPulses(),wheel.getRevolutions());
switch(StateB)
{
@@ -105,7 +151,7 @@
}
if(wheel.getYay()==1)
- {
+ {
wheel.ResetYay();
TimePerClick = (t.read_us());
t.reset();
@@ -113,51 +159,8 @@
TimePerRev = TimePerRev / 1000;
RPS = 10000000 / TimePerRev;
RPM = (RPS * 60)/10000;
- //pc.printf("RPM = %d\n\r", RPM);
- }
- }
-
-
- while(wheel.getRevolutions()>0 && wheel.getPulses()<1)
- {
- StateB = (800+wheel.getPulses())%16;
- //pc.printf("StateA= %i\n\r", StateA);
- pc.printf("2 StateB= %i, Pulses= %i, Revs= %i\r", StateB,wheel.getPulses(),wheel.getRevolutions());
- //pc.printf("",);
- // pc.printf("",);
-
- switch(StateB)
- {
- case 0:Ph3();break;
- case 1:Ph3();break;
- case 2:Ph34();break;
- case 3:Ph34();break;
- case 4:Ph4();break;
- case 5:Ph4();break;
- case 6:Ph41();break;
- case 7:Ph41();break;
- case 8:Ph1();break;
- case 9:Ph1();break;
- case 10:Ph12();break;
- case 11:Ph12();break;
- case 12:Ph2();break;
- case 13:Ph2();break;
- case 14:Ph23();break;
- case 15:Ph23();break;
- default:break;
- }
-
- if(wheel.getYay()==1)
- {
- wheel.ResetYay();
- TimePerClick = (t.read_us());
- t.reset();
- TimePerRev = TimePerClick * 400;
- TimePerRev = TimePerRev / 1000;
- RPS = 10000000 / TimePerRev;
- RPM = (RPS * 60)/10000;
- //pc.printf("RPM = %d\n\r", RPM);
- }
+ pc.printf("RPM = %d\n\r", RPM);
+ }
}
}
@@ -253,6 +256,21 @@
led3 = 0;
led4 = 0;
wheel.ResetYay();
-
-
+}
+
+void GetChar (void)
+{ if (pc.readable())
+ {
+ c = pc.getc();
+ if(c == 'z')
+ {
+ led1 = !led1;
+ led2 = 0;
+ }
+ if(c == 'x')
+ {
+ led1 = 0;
+ led2 = !led2 ;
+ }
+ }
}
\ No newline at end of file