first try working module - fail
This commit is contained in:
@@ -11,41 +11,69 @@
|
||||
|
||||
#include "controlPad.h"
|
||||
|
||||
ControlPad::ControlPad() {
|
||||
ControlPad::ControlPad(SPIClass *spiPort, uint8_t cePin, uint8_t csnPin) {
|
||||
this->radio = new RF24(cePin, csnPin);
|
||||
|
||||
std::cout << "ControlPad::ControlPad: sizeof ControlPadInput in byte: " << sizeof(ControlPadInput) << std::endl;
|
||||
|
||||
|
||||
if (!this->radio->begin(spiPort)) {
|
||||
std::cout << "ControlPad::ControlPad: Error radio->begin!" << std::endl;
|
||||
while(true);
|
||||
}
|
||||
|
||||
// this->radio->setAddressWidth(5);
|
||||
// this->radio->setChannel(7);
|
||||
// this->radio->setDataRate(RF24_1MBPS);
|
||||
// this->radio->setAutoAck(true);
|
||||
// this->radio->enableDynamicPayloads();
|
||||
// this->radio->enableAckPayload();
|
||||
// this->radio->setCRCLength(RF24_CRC_16);
|
||||
|
||||
this->radio->setPALevel(RF24_PA_LOW);
|
||||
|
||||
// this->radio->openWritingPipe(this->address[1]);
|
||||
this->radio->openReadingPipe(0, this->address[0]);
|
||||
|
||||
this->radio->startListening();
|
||||
|
||||
// this->radio->printPrettyDetails();
|
||||
this->radio->printPrettyDetails();
|
||||
}
|
||||
|
||||
bool ControlPad::loop() {
|
||||
this->receiveData();
|
||||
|
||||
if (millis() - this->lastLoopMillis < this->loopDelay)
|
||||
return false;
|
||||
this->lastLoopMillis = millis();
|
||||
|
||||
if(!this->connected)
|
||||
return false;
|
||||
// if(!this->connected)
|
||||
// return false;
|
||||
|
||||
if (millis() - this->lastMessageReceive > this->disconnectTime) {
|
||||
this->connected = false;
|
||||
return false;
|
||||
}
|
||||
// if (millis() - this->lastMessageReceive > this->disconnectTime) {
|
||||
// this->connected = false;
|
||||
// return false;
|
||||
// }
|
||||
|
||||
if (this->menuControl && this->controlInput.buttons > 0 && this->updated)
|
||||
if (!this->firstButtonPress)
|
||||
this->menuControl->printMenu();
|
||||
// if (this->menuControl && this->controlInput.buttons > 0 && this->updated)
|
||||
// if (!this->firstButtonPress)
|
||||
// this->menuControl->printMenu();
|
||||
|
||||
if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Left))
|
||||
this->menuControl->left();
|
||||
else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Right))
|
||||
this->menuControl->right();
|
||||
else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Up))
|
||||
this->menuControl->up();
|
||||
else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Down))
|
||||
this->menuControl->down();
|
||||
else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Yes))
|
||||
this->menuControl->yes();
|
||||
else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::No))
|
||||
this->menuControl->no();
|
||||
// if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Left))
|
||||
// this->menuControl->left();
|
||||
// else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Right))
|
||||
// this->menuControl->right();
|
||||
// else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Up))
|
||||
// this->menuControl->up();
|
||||
// else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Down))
|
||||
// this->menuControl->down();
|
||||
// else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::Yes))
|
||||
// this->menuControl->yes();
|
||||
// else if (ControlPadButton::isControlPadButtonPressed(&this->controlInput, ControlPadButton::PadButton::No))
|
||||
// this->menuControl->no();
|
||||
|
||||
this->menuControl->update();
|
||||
// this->menuControl->update();
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -55,3 +83,12 @@ const ControlPadInput * ControlPad::getControlPadDataPtr(uint16_t maxElapsedTime
|
||||
return nullptr;
|
||||
return &this->controlInput;
|
||||
}
|
||||
|
||||
void ControlPad::receiveData() {
|
||||
this->radio->startListening();
|
||||
if (this->radio->available()) {
|
||||
ControlPadInput lastInput = this->controlInput;
|
||||
this->radio->read(&this->controlInput, sizeof(ControlPadInput));
|
||||
std::cout << "Data RF24: " << this->controlInput.counter << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,12 +12,16 @@
|
||||
#pragma once
|
||||
|
||||
#include <menuControl.h>
|
||||
#include <nRF24L01.h>
|
||||
#include <RF24.h>
|
||||
#include <SPI.h>
|
||||
// #include <printf.h>
|
||||
|
||||
#include "controlPadInput.h"
|
||||
|
||||
class ControlPad {
|
||||
public:
|
||||
ControlPad();
|
||||
ControlPad(SPIClass *spiPort, uint8_t cePin, uint8_t csnPin);
|
||||
|
||||
bool loop();
|
||||
|
||||
@@ -29,12 +33,17 @@ class ControlPad {
|
||||
|
||||
private:
|
||||
MenuControl* menuControl = nullptr;
|
||||
RF24* radio;
|
||||
ControlPadInput controlInput;
|
||||
|
||||
void receiveData();
|
||||
|
||||
bool connected = false;
|
||||
bool updated = false;
|
||||
bool firstButtonPress = false;
|
||||
|
||||
const uint8_t address[2][6] = { "rover", "ardui" };
|
||||
|
||||
uint16_t disconnectTime = 50;
|
||||
uint16_t loopDelay = 5;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user