Projeto exemplo, vamos testar a conexão do nosso projeto com o app mRobots fazendo com que um LED acenda caso nosso acelerador (canal 4) saia da posição 0 (zero).
Hardware necessário:
mBattery
mCookie Core+
mCookie Hub
LED colorido (qualquer cor)
Becoming a super hero is a fairly straight forward process:
$ give me super-powers
Super-powers are granted randomly so please submit an issue if you're not happy with yours.
Once you're strong enough, save the world:
#include<Microduino_Protocol.h>#include<Microduino_Motor.h>#define_DEBUG //DEBUG调试#defineBLE_SPEED57600 //velocidade transmissão da porta#defineCHANNEL_NUM8 //número de canais #defineSAFE_TIME_OUT250 //timeout de segurança#defineMAX_THROTTLE255 //valor output acelerador < 255#defineMAX_STEERING512 //valor máximo direção < 512#defineCHANNEL_THROTTLE1 //definir canal do acelerador#defineCHANNEL_STEERING0 //definir canal da direçãoMotor MotorLeft(MOTOR0_PINA, MOTOR0_PINB);Motor MotorRight(MOTOR1_PINA, MOTOR1_PINB);#defineProSerial SerialProtocolSer bleProtocol(&ProSerial,16); //utiliza ProSerial,protocol de 16 bytes///////////////////////////////////////////////////////////uint16_t channalData[CHANNEL_NUM]; //8 canais (ver define linha 7)int16_t throttle =0; //aceleradorint16_t steering =0; //direçãounsignedlong safe_ms =millis();uint8_t recCmd;voidsetup() {bleProtocol.begin(BLE_SPEED);pinMode(D6,OUTPUT);MotorLeft.begin(); //valor inicial motor esquerdoMotorRight.begin(); //valor inicial motor direito}voidloop() {if (bleProtocol.available()) {bleProtocol.readWords(&recCmd, channalData,8); throttle =map(channalData[CHANNEL_THROTTLE],1000,2000,-MAX_THROTTLE, MAX_THROTTLE); steering =map(channalData[CHANNEL_STEERING],1000,2000,-MAX_STEERING, MAX_STEERING);MotorLeft.setSpeed((throttle + steering /2));MotorRight.setSpeed(-(throttle - steering /2));#ifdef_DEBUGSerial.print("DATA OK :[");for (int a =0; a < CHANNEL_NUM; a++) {Serial.print(channalData[a]);Serial.print(" "); }Serial.print("],throttle:");Serial.print(throttle); //+153Serial.print(",steering:");Serial.println(steering);if(abs(throttle)>128) {digitalWrite(D6,HIGH); }else {digitalWrite(D6,LOW); }#endif safe_ms =millis(); }if (safe_ms >millis()) safe_ms =millis();if (millis()- safe_ms > SAFE_TIME_OUT) {MotorLeft.setSpeed(FREE); //definir a posição do motor esquerdo como livre,ou seja velocidade=0MotorRight.setSpeed(FREE); //definir a posição do motor direito como livre,ou seja velocidade=0 }}