Jack Hansdampf / Mbed OS Motorino_Lib

Dependencies:   eeprom_intern LCD_i2c_GSOE MotorinoLib

main.cpp

Committer:
jack1930
Date:
2021-10-28
Revision:
4:f863f6847c7d
Parent:
3:302df40c00e2
Child:
5:3a7f58938059

File content as of revision 4:f863f6847c7d:

/* mbed Microcontroller Library
 * Copyright (c) 2019 ARM Limited
 * SPDX-License-Identifier: Apache-2.0
 */

#include "mbed.h"
#include "platform/mbed_thread.h"
#include "Kanal.h"



// Blinking rate in milliseconds
#define BLINKING_RATE_MS                                                    50

struct position
{
    float w[6]; //6 Positonmen, Wertebereich: 0..180°, für 6 Achsen
    int ms;     //Fahrzeit in ms zur neuen Position
};

position schritt[3]; //Es werden 3 Positionen angefahren


int main()
{
    
    Kanal* achse[6];    //Der Roboter hat 6 Achsen:
    //achse[0]: Grundachse, Drehung des Roboters
    //achse[1]: Erster Kipp-Servo auf der Drehachse 
    //achse[2]: Zweiter Kipp-Servo, von unten her
    //achse[3]: Dritter Kipp-Servo, von unten her
    //achse[4]: Drehachse für den Greifer
    //achse[5]: Greifer
    for (int i=0;i<6;i++) achse[i]=new Kanal(i); //Die Achsobjekte werden erzeugt
    int dtc=0;
    // Initialise the digital pin LED1 as an output
    DigitalOut led(LED1);   //Diagnose LED auf dem Nukleo
    schritt[0].w[0]=90; //achse[0]: Grundachse, Drehung des Roboters
    schritt[0].w[1]=90; //achse[1]: Erster Kipp-Servo auf der Drehachse 
    schritt[0].w[2]=90; //achse[2]: Zweiter Kipp-Servo, von unten her
    schritt[0].w[3]=90; //achse[3]: Dritter Kipp-Servo, von unten her
    schritt[0].w[4]=90; //achse[4]: Drehachse für den Greifer
    schritt[0].w[5]=30; //achse[5]: Greifer
    schritt[0].ms=1000; //Fahrzeit
    
    schritt[1].w[0]=30;
    schritt[1].w[1]=120;
    schritt[1].w[2]=130;
    schritt[1].w[3]=110;
    schritt[1].w[4]=180;
    schritt[1].w[5]=100;
    schritt[1].ms=500;

    schritt[2].w[0]=90;
    schritt[2].w[1]=60;
    schritt[2].w[2]=50;
    schritt[2].w[3]=80;
    schritt[2].w[4]=90;
    schritt[2].w[5]=180;
    schritt[2].ms=500;
    
    //Grundstellung nch Start des Nucleo
    achse[0]->grundstellung(90);
    achse[1]->grundstellung(90);
    achse[2]->grundstellung(90);
    achse[3]->grundstellung(90);
    achse[4]->grundstellung(90);
    achse[5]->grundstellung(90);
    while (true) {
        led = !led;
        
        for (int j=0;j<2;j++) //Schritte
        {
            //alle Achsen mit neuen Zielen versorgen und starten
            for (int i=0;i<6;i++)   
            {
                //Operstion go(´float Zielwinkel, int fahrzeit
                achse[i]->go(schritt[j].w[i],schritt[j].ms); 
            }
            //warten, dass alle Achsen fertig werden
            for (int i=0;i<6;i++)   
            {
                //Operation bool isBusy() 
                //true=Achse bewegt sich noch, false=Achse hat Bewegung beendet
                while(achse[i]->isBusy()); //-> gleichbedeutend mit .-Operator
            }            
        }

    }
}