Jack Hansdampf / Mbed OS Motorino_Lib

Dependencies:   eeprom_intern LCD_i2c_GSOE MotorinoLib

Committer:
jack1930
Date:
Thu Oct 28 08:24:50 2021 +0000
Revision:
4:f863f6847c7d
Parent:
3:302df40c00e2
Child:
5:3a7f58938059
Kommentiert

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jack1930 0:4db26ffb591c 1 /* mbed Microcontroller Library
jack1930 0:4db26ffb591c 2 * Copyright (c) 2019 ARM Limited
jack1930 0:4db26ffb591c 3 * SPDX-License-Identifier: Apache-2.0
jack1930 0:4db26ffb591c 4 */
jack1930 0:4db26ffb591c 5
jack1930 0:4db26ffb591c 6 #include "mbed.h"
jack1930 0:4db26ffb591c 7 #include "platform/mbed_thread.h"
jack1930 0:4db26ffb591c 8 #include "Kanal.h"
jack1930 0:4db26ffb591c 9
jack1930 0:4db26ffb591c 10
jack1930 0:4db26ffb591c 11
jack1930 0:4db26ffb591c 12 // Blinking rate in milliseconds
jack1930 0:4db26ffb591c 13 #define BLINKING_RATE_MS 50
jack1930 0:4db26ffb591c 14
jack1930 0:4db26ffb591c 15 struct position
jack1930 0:4db26ffb591c 16 {
jack1930 4:f863f6847c7d 17 float w[6]; //6 Positonmen, Wertebereich: 0..180°, für 6 Achsen
jack1930 4:f863f6847c7d 18 int ms; //Fahrzeit in ms zur neuen Position
jack1930 0:4db26ffb591c 19 };
jack1930 0:4db26ffb591c 20
jack1930 4:f863f6847c7d 21 position schritt[3]; //Es werden 3 Positionen angefahren
jack1930 0:4db26ffb591c 22
jack1930 0:4db26ffb591c 23
jack1930 0:4db26ffb591c 24 int main()
jack1930 0:4db26ffb591c 25 {
jack1930 0:4db26ffb591c 26
jack1930 4:f863f6847c7d 27 Kanal* achse[6]; //Der Roboter hat 6 Achsen:
jack1930 4:f863f6847c7d 28 //achse[0]: Grundachse, Drehung des Roboters
jack1930 4:f863f6847c7d 29 //achse[1]: Erster Kipp-Servo auf der Drehachse
jack1930 4:f863f6847c7d 30 //achse[2]: Zweiter Kipp-Servo, von unten her
jack1930 4:f863f6847c7d 31 //achse[3]: Dritter Kipp-Servo, von unten her
jack1930 4:f863f6847c7d 32 //achse[4]: Drehachse für den Greifer
jack1930 4:f863f6847c7d 33 //achse[5]: Greifer
jack1930 4:f863f6847c7d 34 for (int i=0;i<6;i++) achse[i]=new Kanal(i); //Die Achsobjekte werden erzeugt
jack1930 0:4db26ffb591c 35 int dtc=0;
jack1930 0:4db26ffb591c 36 // Initialise the digital pin LED1 as an output
jack1930 4:f863f6847c7d 37 DigitalOut led(LED1); //Diagnose LED auf dem Nukleo
jack1930 4:f863f6847c7d 38 schritt[0].w[0]=90; //achse[0]: Grundachse, Drehung des Roboters
jack1930 4:f863f6847c7d 39 schritt[0].w[1]=90; //achse[1]: Erster Kipp-Servo auf der Drehachse
jack1930 4:f863f6847c7d 40 schritt[0].w[2]=90; //achse[2]: Zweiter Kipp-Servo, von unten her
jack1930 4:f863f6847c7d 41 schritt[0].w[3]=90; //achse[3]: Dritter Kipp-Servo, von unten her
jack1930 4:f863f6847c7d 42 schritt[0].w[4]=90; //achse[4]: Drehachse für den Greifer
jack1930 4:f863f6847c7d 43 schritt[0].w[5]=30; //achse[5]: Greifer
jack1930 4:f863f6847c7d 44 schritt[0].ms=1000; //Fahrzeit
jack1930 0:4db26ffb591c 45
jack1930 3:302df40c00e2 46 schritt[1].w[0]=30;
jack1930 4:f863f6847c7d 47 schritt[1].w[1]=120;
jack1930 4:f863f6847c7d 48 schritt[1].w[2]=130;
jack1930 3:302df40c00e2 49 schritt[1].w[3]=110;
jack1930 0:4db26ffb591c 50 schritt[1].w[4]=180;
jack1930 3:302df40c00e2 51 schritt[1].w[5]=100;
jack1930 0:4db26ffb591c 52 schritt[1].ms=500;
jack1930 0:4db26ffb591c 53
jack1930 0:4db26ffb591c 54 schritt[2].w[0]=90;
jack1930 4:f863f6847c7d 55 schritt[2].w[1]=60;
jack1930 4:f863f6847c7d 56 schritt[2].w[2]=50;
jack1930 3:302df40c00e2 57 schritt[2].w[3]=80;
jack1930 0:4db26ffb591c 58 schritt[2].w[4]=90;
jack1930 0:4db26ffb591c 59 schritt[2].w[5]=180;
jack1930 0:4db26ffb591c 60 schritt[2].ms=500;
jack1930 4:f863f6847c7d 61
jack1930 4:f863f6847c7d 62 //Grundstellung nch Start des Nucleo
jack1930 3:302df40c00e2 63 achse[0]->grundstellung(90);
jack1930 3:302df40c00e2 64 achse[1]->grundstellung(90);
jack1930 3:302df40c00e2 65 achse[2]->grundstellung(90);
jack1930 3:302df40c00e2 66 achse[3]->grundstellung(90);
jack1930 3:302df40c00e2 67 achse[4]->grundstellung(90);
jack1930 3:302df40c00e2 68 achse[5]->grundstellung(90);
jack1930 0:4db26ffb591c 69 while (true) {
jack1930 0:4db26ffb591c 70 led = !led;
jack1930 3:302df40c00e2 71
jack1930 3:302df40c00e2 72 for (int j=0;j<2;j++) //Schritte
jack1930 0:4db26ffb591c 73 {
jack1930 4:f863f6847c7d 74 //alle Achsen mit neuen Zielen versorgen und starten
jack1930 4:f863f6847c7d 75 for (int i=0;i<6;i++)
jack1930 0:4db26ffb591c 76 {
jack1930 4:f863f6847c7d 77 //Operstion go(´float Zielwinkel, int fahrzeit
jack1930 4:f863f6847c7d 78 achse[i]->go(schritt[j].w[i],schritt[j].ms);
jack1930 0:4db26ffb591c 79 }
jack1930 4:f863f6847c7d 80 //warten, dass alle Achsen fertig werden
jack1930 4:f863f6847c7d 81 for (int i=0;i<6;i++)
jack1930 0:4db26ffb591c 82 {
jack1930 4:f863f6847c7d 83 //Operation bool isBusy()
jack1930 4:f863f6847c7d 84 //true=Achse bewegt sich noch, false=Achse hat Bewegung beendet
jack1930 4:f863f6847c7d 85 while(achse[i]->isBusy()); //-> gleichbedeutend mit .-Operator
jack1930 0:4db26ffb591c 86 }
jack1930 0:4db26ffb591c 87 }
jack1930 4:f863f6847c7d 88
jack1930 0:4db26ffb591c 89 }
jack1930 0:4db26ffb591c 90 }