PowerOff::PowerOff(PinName pwrint_name, PinName request_name, PinName ready_name, PinName pwrkill_name, const std::vector<PinName>& led_names) : pwrint_(pwrint_name, DigitalIn::PullNone, DigitalIn::InterruptFalling) , request_(request_name, DigitalOut::OutputDefault, DigitalOut::PullDefault, 0) , ready_(ready_name, DigitalIn::PullNone, DigitalIn::InterruptFalling) , pwrkill_(pwrkill_name, DigitalOut::OutputDefault, DigitalOut::PullDefault, 1) { for (auto name : led_names) leds_.push_back(DigitalOut(name)); pwrint_.callback(this, &PowerOff::initiate); ready_.callback(this, &PowerOff::shutdown); }
#include "main.h" #include "SevenSeg.h" const char test1[8] = {0x40, 0x02, 0x01, 0x20, 0x40, 0x04, 0x08, 0x10}; const char test2[8] = {0x3F, 0x7D, 0x7E, 0x5F, 0x3F, 0x7B, 0x77, 0x6F}; const char test3[6] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20}; // Ticker for base timer Ticker tick(TIM16); // Array of digital out (segment) DigitalOut segment[] = {DigitalOut(PA0), DigitalOut(PA1), DigitalOut(PA4), DigitalOut(PF5), DigitalOut(PF4), DigitalOut(PA2), DigitalOut(PA3), DigitalOut(PA5)}; // Array of digital out (digit) DigitalOut digit[] = {DigitalOut(PB0, GPIO_OType_OD), DigitalOut(PB1, GPIO_OType_OD), DigitalOut(PB2, GPIO_OType_OD), DigitalOut(PB10, GPIO_OType_OD), DigitalOut(PB11, GPIO_OType_OD), DigitalOut(PB12, GPIO_OType_OD)}; // One seven segment is composed of an array of segment and one digit pin SevenSeg sevenSeg0(segment, &digit[0]); SevenSeg sevenSeg1(segment, &digit[1]); SevenSeg sevenSeg2(segment, &digit[2]); SevenSeg sevenSeg3(segment, &digit[3]); SevenSeg sevenSeg4(segment, &digit[4]); SevenSeg sevenSeg5(segment, &digit[5]); // Create group of seven segment SevenSegGroup sevenSegGroup; int delay = 0;
#define START_TRANS 'B' #define END_TRANS 0xFFFF1111 Serial pc(USBTX, USBRX); // tx, rx DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); DigitalIn goto_draw_height(p16); DigitalIn troll_up(p15); DigitalIn troll_down(p14); DigitalIn start_pat(p13); DigitalOut enablers[] = {DigitalOut(p27), DigitalOut(p28), DigitalOut(p29)}; volatile U08 serial_buffer[16]; volatile S32 sbuffer_index; static F32 draw_z = MIN_Z + 0.6; // inches bool pen_needs_reset = false; Planner planner; void serial_callback() { serial_buffer[sbuffer_index++] = pc.getc(); } void startup_steppers() { enablers[0] = 0;
#include "Xbee.h" #include "CRC32.h" #include "SendConfDataPck.h" #include "RequiredMsgTypeDataPck.h" #include "DataPckTypes.h" #include "DataPckTypeBase.h" #include "MessageResponceMapper.h" const int CRCTypeSize = 4; const int StartEndMarkerSize = 1; const int ActualDataSize = CommTypes::DataPacketSize - CRCTypeSize; const int DataSynchPckSize = 3; const char SynchPck[] = "##\0"; DigitalOut heartBeat = DigitalOut(LED1); Xbee::Xbee(PinName tx, PinName rx, PinName rst, DebugLoggerBase* debugLogger, CommsStatus::CommsStatusStruct* commsStatus) : uartPort(tx,rx), rst(rst), test(LED1) { this->waitingSendConf = false; this->uartPort.format(8, Serial::None, 1); this->uartPort.baud(9600); this->uartPort.rxBufferFlush(); this->uartPort.txBufferFlush(); this->expectedResponce = -1; this->lastMsgReceived = -1; //Configure receive buffer this->ResetReceiveBuffer(); this->gotRespnce = false; this->isReading = false; this->msgReady = false; this->isSynch = false; this->commsStatus = commsStatus;
const static float defaultMax = 128.0; const static int attitudeFrequency = 100; // Attitude and Control Frequency in Hz const static int remoteFrequency = 10; // Remote Read Frequency in Hz volatile int attitudeFlag = 0; // Attitude Execution Flag volatile int remoteFlag = 0; int remoteError = 0; int baseSpeed = 0; int rollTarget = 0; int pitchTarget = 0; int yawTarget = 0; int potLeft = 0; int potRight = 0; DigitalOut statusLED[] = { DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4) }; Serial pc(USBTX, USBRX); Ticker ticker; I2C i2c(p28, p27); Gyro gyro(&i2c); Acc acc(&i2c); Attitude attitude(&gyro, &acc, attitudeFrequency); Altitude altitude(&i2c); Remote remote(p6, remoteChannels); PID rollPID(defaultP, defaultI, defaultD, defaultMin, defaultMax); PID pitchPID(defaultP, defaultI, defaultD, defaultMin, defaultMax); Motor motor(&i2c); template <typename T> T map(T x, T in_min, T in_max, T out_min, T out_max) {
void DigitalOutState(int mask) { int i; for(i=0;i<8;i++) if(g_DigitalConfigMask & (1<<i)) DigitalOut(i,mask&(1<<i)); }
static void hal_io_init () { pinMode(pins.nss, OUTPUT); pinMode(pins.rxtx, OUTPUT); pinMode(pins.rst, OUTPUT); pinMode(pins.dio[0], INPUT); pinMode(pins.dio[1], INPUT); pinMode(pins.dio[2], INPUT); } #else uint64_t clock_ms() { return us_ticker_read() / 1000; } #ifdef TARGET_NUCLEO_F411RE SPI device(SPI_MOSI, SPI_MISO, SPI_SCK); lmic_pinmap pins { /*pins.nss*/ DigitalOut(PB_6), /*pins.rxtx*/ DigitalOut(PC_1), /*pins.rst*/ DigitalInOut(PA_0, PIN_INPUT, PullNone, 1), { DigitalInOut(PA_10, PIN_INPUT, PullUp, 1), DigitalInOut(PB_3, PIN_INPUT, PullUp, 1), DigitalInOut(PB_5, PIN_INPUT, PullUp, 1), DigitalInOut(PB_4, PIN_INPUT, PullUp, 1), DigitalInOut(PA_9, PIN_INPUT, PullUp, 1), //DigitalInOut(PC_7, PIN_INPUT, PullUp, 1), } }; #elif defined(TARGET_KL25Z) SPI device(PTD2, PTD3, PTD1); lmic_pinmap pins {
/* * Enter a hex number [0-9a-fA-F]; Decode it in 4-bit binary format and display them on 4 on board leds. * * What is the address of ledArr[0]? * What is the address of ch? * */ #include "mbed.h" Serial pc(USBTX, USBRX); // tx, rx DigitalOut ledArr[4] = {DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4)}; Serial uart(p9, p10); #define dprintf uart.printf void DisplayLed(int ch) { int i=0; if(ch>='0' && ch<='9') ch-='0'; else if(ch>='A' && ch<='F') { ch-='A'; ch+=10; } else if(ch>='a' && ch<='f') { ch-='a'; ch+=10; } else {ch=0;} for(i=0; i<4; i++) { if(ch& (1<<i)) { ledArr[i] = 1; } else { ledArr[i] = 0; } }
#include "mbed.h" #include "rtos.h" DigitalOut LEDs[4] = { DigitalOut(LED1), DigitalOut(LED2), DigitalOut(LED3), DigitalOut(LED4) }; void blink(void const *n) { LEDs[(int)n] = !LEDs[(int)n]; } int main(void) { RtosTimer led_1_timer(blink, osTimerPeriodic, (void *)0); RtosTimer led_2_timer(blink, osTimerPeriodic, (void *)1); RtosTimer led_3_timer(blink, osTimerPeriodic, (void *)2); RtosTimer led_4_timer(blink, osTimerPeriodic, (void *)3); led_1_timer.start(2000); led_2_timer.start(1000); led_3_timer.start(500); led_4_timer.start(250); Thread::wait(osWaitForever); }