mirror of
https://gitlab.dit.htwk-leipzig.de/phillip.kuehne/dezibot.git
synced 2025-08-24 10:48:37 +02:00
Merge branch 'feature/#14-implement-motion-detection' of https://git.imn.htwk-leipzig.de/wagner/lib into feature/#14-implement-motion-detection
This commit is contained in:
@@ -18,4 +18,5 @@ Dezibot::Dezibot():multiColorLight(),motionDetection(){
|
||||
void Dezibot::begin(void) {
|
||||
motion.begin();
|
||||
multiColorLight.begin();
|
||||
motionDetection.begin();
|
||||
};
|
||||
|
@@ -5,22 +5,19 @@ MotionDetection::MotionDetection(){//:handler(FSPI){
|
||||
};
|
||||
|
||||
void MotionDetection::begin(void){
|
||||
pinMode(34,OUTPUT);
|
||||
digitalWrite(34,HIGH);
|
||||
handler->begin(36,37,35,34);
|
||||
|
||||
|
||||
//handler->beginTransaction(SPISettings(frequency,SPI_MSBFIRST,SPI_MODE0));
|
||||
|
||||
digitalWrite(34,LOW);
|
||||
// set Accel and Gyroscop to Low Noise
|
||||
handler->transfer(0x1F);
|
||||
handler->transfer(0x0F);
|
||||
//busy Wait for startup
|
||||
delayMicroseconds(200);
|
||||
|
||||
pinMode(34,OUTPUT);
|
||||
digitalWrite(34,HIGH);
|
||||
//handler->endTransaction();*/
|
||||
handler->begin(36,37,35,34);
|
||||
|
||||
handler->beginTransaction(SPISettings(frequency,SPI_MSBFIRST,SPI_MODE0));
|
||||
digitalWrite(34,LOW);
|
||||
// set Accel and Gyroscop to Low Noise
|
||||
handler->transfer(0x1F);
|
||||
handler->transfer(0x0F);
|
||||
//busy Wait for startup
|
||||
delayMicroseconds(200);
|
||||
digitalWrite(34,HIGH);
|
||||
handler->endTransaction();
|
||||
};
|
||||
void MotionDetection::end(void){
|
||||
handler->beginTransaction(SPISettings(frequency,SPI_MSBFIRST,SPI_MODE0));
|
||||
@@ -33,34 +30,27 @@ void MotionDetection::end(void){
|
||||
};
|
||||
IMUResult MotionDetection::getAcceleration(){
|
||||
IMUResult result;
|
||||
handler->beginTransaction(SPISettings(frequency,SPI_MSBFIRST,SPI_MODE0));
|
||||
digitalWrite(34,LOW);
|
||||
result.x = handler->transfer16(cmdRead(ACCEL_DATA_X_HIGH,ACCEL_DATA_X_LOW));
|
||||
result.y = handler->transfer16(cmdRead(ACCEL_DATA_Y_HIGH,ACCEL_DATA_Y_LOW));
|
||||
result.z = handler->transfer16(cmdRead(ACCEL_DATA_Z_HIGH,ACCEL_DATA_Z_LOW));
|
||||
digitalWrite(34,HIGH);
|
||||
handler->endTransaction();
|
||||
result.x = readRegister(ACCEL_DATA_X_HIGH)<<8;
|
||||
result.x |= readRegister(ACCEL_DATA_X_LOW);
|
||||
result.y = readRegister(ACCEL_DATA_Y_HIGH)<<8;
|
||||
result.y |= readRegister(ACCEL_DATA_Y_LOW);
|
||||
result.z = readRegister(ACCEL_DATA_Z_HIGH)<<8;
|
||||
result.z |= readRegister(ACCEL_DATA_Z_LOW);
|
||||
return result;
|
||||
};
|
||||
IMUResult MotionDetection::getRotation(){
|
||||
IMUResult result;
|
||||
handler->beginTransaction(SPISettings(frequency,SPI_MSBFIRST,SPI_MODE0));
|
||||
digitalWrite(34,LOW);
|
||||
result.x = handler->transfer16(cmdRead(GYRO_DATA_X_HIGH,GYRO_DATA_X_LOW));
|
||||
result.y = handler->transfer16(cmdRead(GYRO_DATA_Y_HIGH,GYRO_DATA_Y_LOW));
|
||||
result.z = handler->transfer16(cmdRead(GYRO_DATA_Z_HIGH,GYRO_DATA_Z_LOW));
|
||||
digitalWrite(34,HIGH);
|
||||
handler->endTransaction();
|
||||
result.x = readRegister(GYRO_DATA_X_HIGH) <<8;
|
||||
result.x |= readRegister(GYRO_DATA_X_LOW);
|
||||
result.y = readRegister(GYRO_DATA_Y_HIGH)<<8;
|
||||
result.y |= readRegister(GYRO_DATA_Y_LOW);
|
||||
result.z = readRegister(GYRO_DATA_Z_HIGH)<<8;
|
||||
result.z |= readRegister(GYRO_DATA_Z_LOW);
|
||||
return result;
|
||||
};
|
||||
float MotionDetection::getTemperature(){
|
||||
handler->beginTransaction(SPISettings(frequency,SPI_MSBFIRST,SPI_MODE0));
|
||||
digitalWrite(34,LOW);
|
||||
handler -> write(cmdRead(REG_TEMP_HIGH,REG_TEMP_LOW));
|
||||
int16_t raw_temperatur = handler->transfer16(cmdRead(REG_TEMP_HIGH,REG_TEMP_LOW));
|
||||
|
||||
digitalWrite(34,HIGH);
|
||||
handler->endTransaction();
|
||||
int16_t raw_temperatur = readRegister(REG_TEMP_HIGH)<<8;
|
||||
raw_temperatur |= readRegister(REG_TEMP_LOW);
|
||||
return raw_temperatur/128 +25;
|
||||
};
|
||||
|
||||
@@ -68,14 +58,6 @@ int8_t MotionDetection::getWhoAmI(){
|
||||
return readRegister(WHO_AM_I);
|
||||
};
|
||||
|
||||
|
||||
|
||||
uint16_t MotionDetection::cmdRead(uint8_t regHigh,uint8_t regLow){
|
||||
return (CMD_READ | (regHigh & ADDR_MASK))<<8 & (CMD_READ | regLow & ADDR_MASK);
|
||||
};
|
||||
uint16_t MotionDetection::cmdWrite(uint8_t regHigh,uint8_t regLow){
|
||||
return (CMD_WRITE | (regHigh & ADDR_MASK))<<8 & (CMD_WRITE | regLow & ADDR_MASK);
|
||||
};
|
||||
uint8_t MotionDetection::cmdRead(uint8_t reg){
|
||||
return (CMD_READ | (reg & ADDR_MASK));
|
||||
};
|
||||
@@ -92,8 +74,4 @@ int8_t MotionDetection::readRegister(uint8_t reg){
|
||||
digitalWrite(34,HIGH);
|
||||
handler->endTransaction();
|
||||
return result;
|
||||
};
|
||||
|
||||
int16_t MotionDetection::readDoubleRegister(uint8_t lowerReg){
|
||||
return 0;
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user