Dependents: Motorino_Lib xxx_Motorino_Lib
Motorino.cpp
- Committer:
- jack1930
- Date:
- 2021-09-28
- Revision:
- 0:9d4d08d4e918
File content as of revision 0:9d4d08d4e918:
#include "Motorino.h" Motorino* Motorino::meinMotorino=NULL; Motorino::Motorino(PinName sda, PinName scl) { motorino=new I2C(sda,scl); init(); } Motorino* Motorino::gibMotorino() { printf("gibMotorino\r\n"); if (meinMotorino==NULL) { meinMotorino=new Motorino(SDA,SCL); } return meinMotorino; } char Motorino::getLED_ON_L(int nr) { return LED0_ON_L+4*nr; } char Motorino::getLED_ON_H(int nr) { return LED0_ON_L+4*nr+1; } char Motorino::getLED_OFF_L(int nr) { return LED0_ON_L+4*nr+2; } char Motorino::getLED_OFF_H(int nr) { return LED0_ON_L+4*nr+3; } void Motorino::WriteToASpecificRegister(char RegAdr,char Wert) { char daten[2]; daten[0]=RegAdr; daten[1]=Wert; motorino->write(adresse,daten, 2, 0); } void Motorino::setDutyCycle(float dtc, int lednr) { unsigned int on,off; unsigned char onL,offL,onH,offH; on=0; off=4095*dtc/100; onL=on&0xFF; onH=on>>8&0xf; offL=off&0xFF; offH=off>>8&0xf; WriteToASpecificRegister(getLED_ON_L(lednr),onL); WriteToASpecificRegister(getLED_ON_H(lednr),onH); WriteToASpecificRegister(getLED_OFF_L(lednr),offL); WriteToASpecificRegister(getLED_OFF_H(lednr),offH); } void Motorino::init() { printf("Motorino Init\r\n"); WriteToASpecificRegister(MODE1,SLEEP); WriteToASpecificRegister(PRE_SCALE,121); //50Hz Wert=Runden(25MHz/4096/50)-1 WriteToASpecificRegister(MODE1,EXTCLK); //Switch to external 25MHz Clock setDutyCycle(25,0); } void Motorino::servo(float pos,int nr,float start, float end) //pos 0..180° { while(busy); busy=true; setDutyCycle(start+(end-start)*pos/180.0,nr); busy=false; }