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:
- 2:ddf95aa94826
- Parent:
- 1:f3303de6e057
--- a/main.cpp Mon Jan 17 16:27:53 2022 +0000
+++ b/main.cpp Tue Jan 18 12:05:29 2022 +0000
@@ -22,12 +22,42 @@
PortOut saft(PortC,0b01100110); //Stromversorgung der Servos über den L293D
AnalogIn poti(PA_0); //wird nicht gebraucht
+
+float wg,wg0=140,wg1=100,ag; //Winkel Greifer, Anfangswert, Endwert, Interpolation
+float wh,wh0=90,wh1=90,ah; //Winkel Heber, Anfangswert, Endwert, Interpolation
+float ws,ws0=90,ws1=90,as; //Winkel Schwenker, Anfangswert, Endwert, Interpolation
+float wd,wd0=90,wd1=90,ad; //Winkel Dreher, Anfangswert, Endwert, Interpolation
+int schritte=50; //Eine Bewegung dauert 50 * 20ms = 1s
+
+void go()
+{
+ //Geadeninterpolation
+ ag=(wg1-wg0)/schritte;
+ ah=(wh1-wh0)/schritte;
+ as=(ws1-ws0)/schritte;
+ ad=(wd1-wd0)/schritte;
+ //Fahren
+ for (float i=0;i<schritte;i++)
+ {
+ wg=ag*i+wg0;
+ wh=ah*i+wh0;
+ ws=as*i+ws0;
+ wd=ad*i+wd0;
+ greifer=0.025+(wg/180.0)*0.1;
+ heber=0.025+(wh/180.0)*0.1;
+ schwenker=0.025+(ws/180.0)*0.1;
+ dreher=0.025+(wd/180.0)*0.1;
+ HAL_Delay(20);
+ }
+ //Startposition für nächsten Schritt = Endposition des vorherigen Schritts
+ wg0=wg1;
+ wh0=wh1;
+ ws0=ws1;
+ wd0=wd1;
+}
+
int main()
{
- float wg,wg0=140,wg1=100,ag; //Winkel Greifer, Anfangswert, Endwert, Interpolation
- float wh,wh0=90,wh1=90,ah; //Winkel Heber, Anfangswert, Endwert, Interpolation
- float ws,ws0=90,ws1=90,as; //Winkel Schwenker, Anfangswert, Endwert, Interpolation
- float wd,wd0=90,wd1=90,ad; //Winkel Dreher, Anfangswert, Endwert, Interpolation
int schritte=50; //Eine Bewegung dauert 50 * 20ms = 1s
saft=0b01100110; //Servos mit Strom versorgen.
//PWM-Periode einstellen
@@ -52,30 +82,8 @@
wh1=90;
ws1=70;
wd1=150;
- //Geadeninterpolation
- ag=(wg1-wg0)/schritte;
- ah=(wh1-wh0)/schritte;
- as=(ws1-ws0)/schritte;
- ad=(wd1-wd0)/schritte;
- //Fahren
- for (float i=0;i<schritte;i++)
- {
- wg=ag*i+wg0;
- wh=ah*i+wh0;
- ws=as*i+ws0;
- wd=ad*i+wd0;
- greifer=0.025+(wg/180.0)*0.1;
- heber=0.025+(wh/180.0)*0.1;
- schwenker=0.025+(ws/180.0)*0.1;
- dreher=0.025+(wd/180.0)*0.1;
- HAL_Delay(20);
- }
- //Startposition für nächsten Schritt = Endposition des vorherigen Schritts
- wg0=wg1;
- wh0=wh1;
- ws0=ws1;
- wd0=wd1;
-
+ go();
+
mylcd.cursorpos(0);
mylcd.printf("Schritt 1");
@@ -83,27 +91,8 @@
wh1=110;
ws1=70;
wd1=150;
- ag=(wg1-wg0)/schritte;
- ah=(wh1-wh0)/schritte;
- as=(ws1-ws0)/schritte;
- ad=(wd1-wd0)/schritte;
- for (float i=0;i<schritte;i++)
- {
- wg=ag*i+wg0;
- wh=ah*i+wh0;
- ws=as*i+ws0;
- wd=ad*i+wd0;
- greifer=0.025+(wg/180.0)*0.1;
- heber=0.025+(wh/180.0)*0.1;
- schwenker=0.025+(ws/180.0)*0.1;
- dreher=0.025+(wd/180.0)*0.1;
- HAL_Delay(20);
- }
-
- wg0=wg1;
- wh0=wh1;
- ws0=ws1;
- wd0=wd1;
+ go();
+
mylcd.cursorpos(0);
mylcd.printf("Schritt 2");
@@ -112,27 +101,8 @@
wh1=110;
ws1=70;
wd1=150;
- ag=(wg1-wg0)/schritte;
- ah=(wh1-wh0)/schritte;
- as=(ws1-ws0)/schritte;
- ad=(wd1-wd0)/schritte;
- for (float i=0;i<schritte;i++)
- {
- wg=ag*i+wg0;
- wh=ah*i+wh0;
- ws=as*i+ws0;
- wd=ad*i+wd0;
- greifer=0.025+(wg/180.0)*0.1;
- heber=0.025+(wh/180.0)*0.1;
- schwenker=0.025+(ws/180.0)*0.1;
- dreher=0.025+(wd/180.0)*0.1;
- HAL_Delay(20);
- }
-
- wg0=wg1;
- wh0=wh1;
- ws0=ws1;
- wd0=wd1;
+ go();
+
mylcd.cursorpos(0);
mylcd.printf("Schritt 3");
@@ -141,27 +111,7 @@
wh1=60;
ws1=100;
wd1=150;
- ag=(wg1-wg0)/schritte;
- ah=(wh1-wh0)/schritte;
- as=(ws1-ws0)/schritte;
- ad=(wd1-wd0)/schritte;
- for (float i=0;i<schritte;i++)
- {
- wg=ag*i+wg0;
- wh=ah*i+wh0;
- ws=as*i+ws0;
- wd=ad*i+wd0;
- greifer=0.025+(wg/180.0)*0.1;
- heber=0.025+(wh/180.0)*0.1;
- schwenker=0.025+(ws/180.0)*0.1;
- dreher=0.025+(wd/180.0)*0.1;
- HAL_Delay(20);
- }
-
- wg0=wg1;
- wh0=wh1;
- ws0=ws1;
- wd0=wd1;
+ go();
mylcd.cursorpos(0);
mylcd.printf("Schritt 4");
@@ -170,27 +120,7 @@
wh1=30;
ws1=100;
wd1=30;
- ag=(wg1-wg0)/schritte;
- ah=(wh1-wh0)/schritte;
- as=(ws1-ws0)/schritte;
- ad=(wd1-wd0)/schritte;
- for (float i=0;i<schritte;i++)
- {
- wg=ag*i+wg0;
- wh=ah*i+wh0;
- ws=as*i+ws0;
- wd=ad*i+wd0;
- greifer=0.025+(wg/180.0)*0.1;
- heber=0.025+(wh/180.0)*0.1;
- schwenker=0.025+(ws/180.0)*0.1;
- dreher=0.025+(wd/180.0)*0.1;
- HAL_Delay(20);
- }
-
- wg0=wg1;
- wh0=wh1;
- ws0=ws1;
- wd0=wd1;
+ go();
mylcd.cursorpos(0);
mylcd.printf("Schritt 5");
@@ -199,27 +129,7 @@
wh1=30;
ws1=100;
wd1=30;
- ag=(wg1-wg0)/schritte;
- ah=(wh1-wh0)/schritte;
- as=(ws1-ws0)/schritte;
- ad=(wd1-wd0)/schritte;
- for (float i=0;i<schritte;i++)
- {
- wg=ag*i+wg0;
- wh=ah*i+wh0;
- ws=as*i+ws0;
- wd=ad*i+wd0;
- greifer=0.025+(wg/180.0)*0.1;
- heber=0.025+(wh/180.0)*0.1;
- schwenker=0.025+(ws/180.0)*0.1;
- dreher=0.025+(wd/180.0)*0.1;
- HAL_Delay(20);
- }
-
- wg0=wg1;
- wh0=wh1;
- ws0=ws1;
- wd0=wd1;
+ go();
mylcd.cursorpos(0);
mylcd.printf("Schritt 6");
@@ -228,26 +138,6 @@
wh1=60;
ws1=100;
wd1=30;
- ag=(wg1-wg0)/schritte;
- ah=(wh1-wh0)/schritte;
- as=(ws1-ws0)/schritte;
- ad=(wd1-wd0)/schritte;
- for (float i=0;i<schritte;i++)
- {
- wg=ag*i+wg0;
- wh=ah*i+wh0;
- ws=as*i+ws0;
- wd=ad*i+wd0;
- greifer=0.025+(wg/180.0)*0.1;
- heber=0.025+(wh/180.0)*0.1;
- schwenker=0.025+(ws/180.0)*0.1;
- dreher=0.025+(wd/180.0)*0.1;
- HAL_Delay(20);
- }
-
- wg0=wg1;
- wh0=wh1;
- ws0=ws1;
- wd0=wd1;
+ go();
}
}