基于arduino的智能防疫消毒机器人源码展示
超聲波模塊源碼:
const?int?TrigPin?=?A2;
const?int?EchoPin?=?A3;
float?distance;
void?setup()?{
Serial.begin(9600);
pinMode(TrigPin,?OUTPUT);
pinMode(EchoPin,?INPUT);
Serial.println("Ultrasonic?sensor:");
}
void?loop()?{
digitalWrite(TrigPin,?LOW);
delayMicroseconds(2);
digitalWrite(TrigPin,?HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin,?LOW);
distance?=?pulseIn(EchoPin,?HIGH)?/?58.00;
Serial.print("distance?is?:");
Serial.print(distance);
Serial.print("cm");
Serial.println();
delay(1000);
}
點燈科技小愛同學語音控制源碼:
#define?BLINKER_WIFI
#define?BLINKER_MIOT_OUTLET
#include?<Blinker.h>
int?relayPin?=D1;
bool?oState?=?false;
void?miotPowerState(const?String?&?state)
{
????BLINKER_LOG("need?set?power?state:?",?state);
????if?(state?==?BLINKER_CMD_ON)?{
????????digitalWrite(D1,?HIGH);
????????BlinkerMIOT.powerState("on");
????????BlinkerMIOT.print();
????????oState?=?true;
????????delay(10000);
????}
????else?if?(state?==?BLINKER_CMD_OFF)?{
????????digitalWrite(D1,?LOW);
????????BlinkerMIOT.powerState("off");
????????BlinkerMIOT.print();
????????oState?=?false;
????}
}
void?miotQuery(int32_t?queryCode)
{
????BLINKER_LOG("MIOT?Query?codes:?",?queryCode);
????switch?(queryCode)
????{
????????case?BLINKER_CMD_QUERY_ALL_NUMBER?:
????????????BLINKER_LOG("MIOT?Query?All");
????????????BlinkerMIOT.powerState(oState???"on"?:?"off");
????????????BlinkerMIOT.print();
????????????break;
????????case?BLINKER_CMD_QUERY_POWERSTATE_NUMBER?:
????????????BLINKER_LOG("MIOT?Query?Power?State");
????????????BlinkerMIOT.powerState(oState???"on"?:?"off");
????????????BlinkerMIOT.print();
????????????break;
????????default?:
????????????BlinkerMIOT.powerState(oState???"on"?:?"off");
????????????BlinkerMIOT.print();
????????????break;
????}
}
void?dataRead(const?String?&?data)
{
????BLINKER_LOG("Blinker?readString:?",?data);
????Blinker.vibrate();
????
????uint32_t?BlinkerTime?=?millis();
????
????Blinker.print("millis",?BlinkerTime);
}
void?setup()
{
????Serial.begin(115200);
????BLINKER_DEBUG.stream(Serial);
????pinMode(D1,?OUTPUT);
????digitalWrite(D1,?LOW);
????Blinker.begin(auth,?ssid,?pswd);
????Blinker.attachData(dataRead);
????
????BlinkerMIOT.attachPowerState(miotPowerState);
????BlinkerMIOT.attachQuery(miotQuery);
}
void?loop()
{
????Blinker.run();
}
電機運行源碼:
#include<Arduino.h>
#include<Wire.h>
#include?"Emakefun_MotorDriver.h"
Emakefun_MotorDriver?mMotorDriver?=?Emakefun_MotorDriver(0x60,MOTOR_DRIVER_BOARD_V5);
Emakefun_DCMotor?*DCMotor_1?=?mMotorDriver.getMotor(M1);
Emakefun_DCMotor?*DCMotor_2?=?mMotorDriver.getMotor(M2);
void?setup()
{
??Serial.begin(9600);
??mMotorDriver.begin(50);
}
void?loop()
{
??DCMotor_1->setSpeed(255);
??DCMotor_2->setSpeed(255);
??DCMotor_1->run(FORWARD);
??DCMotor_2->run(FORWARD);
??delay(1000);
??DCMotor_1->run(BACKWARD);
??DCMotor_2->run(BACKWARD);
??delay(1000);;
??DCMotor_1->run(FORWARD);
??DCMotor_2->run(BACKWARD);
??delay(1000);
??DCMotor_1->run(BACKWARD);
??DCMotor_2->run(FORWARD);
??delay(1000);
??DCMotor_1->run(BRAKE);
??DCMotor_2->run(BRAKE);
??delay(1000);
}
#if?(ARDUINO?>=?100)
#include?"PinChangeInt.h"
#include?"Arduino.h"
#else
#include?"WProgram.h"
#endif
#include?<Wire.h>
#include?"Emakefun_MotorDriver.h"
#include?"Emakefun_MS_PWMServoDriver.h"
#if?defined(ARDUINO_SAM_DUE)
#define?WIRE?Wire1
#else
#define?WIRE?Wire
#endif
#if?(MICROSTEPS?==?8)
uint8_t?microstepcurve[]?=?{0,?50,?98,?142,?180,?212,?236,?250,?255};
#elif?(MICROSTEPS?==?16)
uint8_t?microstepcurve[]?=?{0,?25,?50,?74,?98,?120,?141,?162,?180,?197,?212,?225,?236,?244,?250,?253,?255};
#endif
Emakefun_MotorDriver::Emakefun_MotorDriver(uint8_t?addr,?uint8_t?version)?{
??_version?=?version;
??_addr?=?addr;
??_pwm?=?Emakefun_MS_PWMServoDriver(_addr);
}
void?Emakefun_MotorDriver::begin(uint16_t?freq)?{
??//?init?PWM?w/_freq
??WIRE.begin();
??_pwm.begin();
??_freq?=?freq;
??_pwm.setPWMFreq(_freq);??//?This?is?the?maximum?PWM?frequency
??for?(uint8_t?i?=?0;?i?<?16;?i++)
????_pwm.setPWM(i,?0,?0);
}
void?Emakefun_MotorDriver::setPWM(uint8_t?pin,?uint16_t?value)?{
??if?(value?>?4095)?{
????_pwm.setPWM(pin,?4096,?0);
??}?else
????_pwm.setPWM(pin,?0,?value);
}
void?Emakefun_MotorDriver::setPin(uint8_t?pin,?boolean?value)?{
??if?(value?==?LOW)
????_pwm.setPWM(pin,?0,?0);
??else
????_pwm.setPWM(pin,?4096,?0);
}
Emakefun_DCMotor?*Emakefun_MotorDriver::getMotor(uint8_t?num)?{
??if?(num?>?4)?return?NULL;
??num--;
??if?(dcmotors[num].motornum?==?0)?{
????//?not?init'd?yet!
????dcmotors[num].motornum?=?num;
????dcmotors[num].MC?=?this;
????uint8_t?pwm,?in1,?in2;
????if?(num?==?0)?{
??????if?(_version?==?MOTOR_DRIVER_BOARD_V3)?{
????????pwm?=?8;?in2?=?9;?in1?=?10;
??????}?else?if?(_version?==?MOTOR_DRIVER_BOARD_V4)?{
????????pwm?=?8;?in1?=?10;
??????}?else?if?(_version?==?MOTOR_DRIVER_BOARD_V5)?{
????????in1?=?8;?in2?=?10;
??????}
????}?else?if?(num?==?1)?{
??????if?(_version?==?MOTOR_DRIVER_BOARD_V3)?{
????????pwm?=?13;?in2?=?12;?in1?=?11;
??????}?else?if?(_version?==?MOTOR_DRIVER_BOARD_V4)?{
????????pwm?=?13;?in1?=?11;
??????}?else?if?(_version?==?MOTOR_DRIVER_BOARD_V5)?{
????????in1?=?11;?in2?=?13;
??????}
????}?else?if?(num?==?2)?{
??????if?(_version?==?MOTOR_DRIVER_BOARD_V3)?{
????????pwm?=?2;?in2?=?3;?in1?=?4;
??????}?else?if?(_version?==?MOTOR_DRIVER_BOARD_V4)?{
????????pwm?=?2;?in1?=?4;
??????}?else?if?(_version?==?MOTOR_DRIVER_BOARD_V5)?{
????????in1?=?4;?in2?=?2;
??????}
????}?else?if?(num?==?3)?{
??????if?(_version?==?MOTOR_DRIVER_BOARD_V3)?{
????????pwm?=?7;?in2?=?6;?in1?=?5;
??????}?else?if?(_version?==?MOTOR_DRIVER_BOARD_V4)?{
????????pwm?=?7;?in1?=?5;
??????}?else?if?(_version?==?MOTOR_DRIVER_BOARD_V5)?{
????????in1?=?5;?in2?=?7;
??????}
????}
????dcmotors[num].PWMpin?=?pwm;
????dcmotors[num].IN1pin?=?in1;
????dcmotors[num].IN2pin?=?in2;
??}
??return?&dcmotors[num];
?
總結
以上是生活随笔為你收集整理的基于arduino的智能防疫消毒机器人源码展示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CCSP2021分赛
- 下一篇: OpenGL3D迷宫场景设计