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.
Dependencies: MMA7660 Serial_HL mbed
Diff: AccelTest3.cpp
- Revision:
- 1:0c47899d1aba
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/AccelTest3.cpp Thu Nov 15 17:22:07 2018 +0000
@@ -0,0 +1,87 @@
+
+#include "mbed.h"
+#include "MMA7660.h"
+#include "Serial_HL.h"
+#include "TP1Ord_18.h"
+
+SerialBLK pc(USBTX, USBRX); //Serial Block KLasse: reine serielle Schnitstelle (Baudrate und 2 Pinnamen einstellbar)(PutChar, GetChar, Write, Read)
+SvProtocol ua0(&pc);//SvVis Protokoll Klasse
+
+void CommandHandler();
+
+MMA7660 accel(p28, p27);
+
+void Do100Hz_Work();
+
+// 3 Filter anlegen
+TP1Ord tpx, tpy, tpz;
+int accVal[3];
+
+PwmOut servo(p21);
+
+int main()
+{
+ pc.format(8,SerialBLK::None,1);
+ pc.baud(115200);
+ ua0.SvMessage("AccelTest2_2");//Meldung zum PC senden (SvVis)
+ //ua0.SvPrintf("TestIntegerwerte: %i %i", int1, int2);//Werte zum PC senden (SvVis)
+
+ accel.setSampleRate(120);
+ Timer stw; stw.start();
+
+ servo.period_ms(20);
+ servo.pulsewidth_us(1000);//voll links
+ servo.pulsewidth_us(2000);//voll rechts
+
+ while(1)
+ {
+ CommandHandler();
+ if( stw.read_ms()>10 ) { // 100Hz
+ stw.reset();
+ Do100Hz_Work();
+ if( ua0.acqON ) {
+ ua0.WriteSvI16(1, accVal[0]); // X,Y,Z zum PC senden (SvVis)
+ ua0.WriteSvI16(2, tpx.y);//die Achse mit Filter ans HTerm schicken (Tiefpass) Unterschied: mit Tiefpass ändern sich die Werte nicht so schnell (z.B. gegen Vibrationen)
+ //ua0.WriteSvI16(2, tpy.y);
+ //ua0.WriteSvI16(3, tpz.y);
+
+
+
+ // ua0.WriteSvI16(3, accVal[1]);
+ // ua0.WriteSvI16(4, tpy.y);
+ }
+ }
+ }
+}
+
+void Do100Hz_Work()
+{
+ accel.readData(accVal); // X,Y,Z vom sensor lesen
+ tpx.CalcOneStep(accVal[0]);
+ tpy.CalcOneStep(accVal[1]);
+ tpz.CalcOneStep(accVal[2]);
+}
+
+void CommandHandler()
+{
+ uint8_t cmd;
+ if( !pc.IsDataAvail() )
+ return;
+ cmd = ua0.GetCommand();
+
+ if (cmd==2)
+ {
+ float alpha = ua0.ReadF();
+ tpx.SetAlpha(alpha);
+ tpy.SetAlpha(alpha);
+ tpz.SetAlpha(alpha);
+ }
+
+ if (cmd==3)
+ {
+ //im SvVis3 0...1000 eingeben
+ servo.pulsewidth_us(1000 + ua0.ReadI16());
+ }
+
+}
+