MicroMV 物品分拣台

来自Microduino Wikipedia
Radiumray9@gmail.com讨论 | 贡献2018年5月16日 (三) 09:23的版本 (创建页面,内容为“=='''基本原理'''== *MicroMV扫描到二维码后,通过串口发送给microduino *microduino接收数据后控制舵机电机 =='''MicroMV的代码准备'''==…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

基本原理

  • MicroMV扫描到二维码后,通过串口发送给microduino
  • microduino接收数据后控制舵机电机

MicroMV的代码准备

把以下代码替换到MicroMV生成的U盘空间中的main.py做为主程序

import sensor, image, lcd, time
from pyb import UART
uart = UART(4, 115200)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA2) # can be QVGA on M7...
sensor.skip_frames(30) # 修改sensor配置之后, 跳过30帧
sensor.set_auto_gain(False) # must turn this off to prevent image washout...
sensor.set_brightness(2)
lcd.init() # Initialize the lcd screen.
while(True):
    lcd.display(sensor.snapshot())
    img = sensor.snapshot()
    img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
    for code in img.find_qrcodes():
        time.sleep(1000)
        uart.write(code[4]+'\n')
        print(code[4])

IDE运行效果为


屏幕中会扫描二维码

Microduino的代码准备

#include <Servo.h>
Servo myservo;
#define servoPin   6
#define startAngle 90
#define runAngle   28
String msg = "";
void setup() {
  Serial.begin(115200);
  myservo.attach(servoPin);
  myservo.write(startAngle);
}
void loop() {
  if (Serial.available() > 0) {
    msg = Serial.readStringUntil('\n');
    Serial.println(msg);
    if (msg == "mCookie") {
      myservo.write(startAngle - runAngle);
      delay(3000);
      myservo.write(startAngle);
    }
    else if (msg == "mPie") {
      myservo.write(startAngle + runAngle);
      delay(3000);
      myservo.write(startAngle);
    }
    msg="";
  }
}