电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 4、主要部件组装和原型设计

共3条 1/1 1 跳转至

4、主要部件组装和原型设计

助工
2018-12-28 15:13:59    评分

设计原型基本完成

1、使用mbed在逻辑上比较简单,不过在程序调试就花了很多时间,因为没有断点,也不能跟踪,对于板卡端口的设置调试也比较不方便。

只能采用输出监测的方式来看,还好基本调试成功。在下面的显示,


ezgif.com-crop.gif


2. 首先外壳采用纸壳,这样比较便于造型和尺寸测试,这次的两个开孔高度不同个,主要是因为LCD屏使用了不同的方式,其中用了arduino扩展口的扩展板,另一个是单独的lCD1602,距离略有不同,这样也是一种被动的设计吧。而且因为2个LCD屏的底色不同,好像两只不同的眼睛。


IMG_20181228_144626.jpg

3. 设计中使用了2个LCD1602屏和2个HCSR-04超声波距离传感器,安装在反面的效果,固定暂时用胶带,

IMG_20181228_145329.jpg

上电以后的正面图。


IMG_20181228_145609.jpg


演示的视频如下,

VID_20181228_145627.rar

4、程序设计。

4.1 在mbed设计的页面如下


1.JPG


4.2 代码如下。

#include "mbed.h"
#include "TextLCD.h"    // LCD1602
#include "HCSR04.h"

// Nucleo pins
TextLCD lcd(D8, D9, D4, D5, D6, D7);
TextLCD leftlcd(D10, D11, D0, D1, D2, D3);

HCSR04 sonar_left(D12, D13);
HCSR04 sonar_right(PA_11, PA_12);
// display text on LCD

void textLCD(char *text, int line) {
    char tmpBuf[16];
    for (int i = 0; i < 16; i++) tmpBuf[i] = 0x20;
    for (int i = 0; i < strlen(text); i++) {
        if (i < 16) tmpBuf[i] = text[i];
        lcd.locate(i, line);
        lcd.putc(tmpBuf[i]);
        // Left LCD blink too
        leftlcd.locate(i, line);
        leftlcd.putc(tmpBuf[i]);
    }
}


void happyLCD() {
           textLCD("/^^^^^^^^^^^^^^|", 0);
           textLCD("|______________/", 1);
}

void frawnLCD() {
           textLCD("................", 0);
           textLCD("................", 1);
}

void closeLCD() {
           textLCD("", 0);
           textLCD("", 1);
}

int main(){

    lcd.cls();
    float sona_l=0;
    float sona_r=0;
    float DISTANCE=10;
    sona_l=sonar_left.getCm();
    sona_r=sonar_right.getCm();
    
           //textLCD("  ARM Sheffield ", 0);
           //textLCD("Ada Lovelace Day", 1);
           wait (2);            
            happyLCD();
           wait (2);
            frawnLCD();
           wait (2);
           closeLCD();
           wait (2);  
    while(1){
        if (sona_l < DISTANCE) {        
            happyLCD();
           wait (2);
            }
            else{
            frawnLCD();
            }   
            
        if (sona_r < DISTANCE) {
            happyLCD();
            }            
            else{
            frawnLCD();
            }   
        
             
    } // while
}    //main

5. 上传的代码和工程如下。


含编译后的bin文件。

BlinkingEyes_uvision5_nucleo_f410rb.zip






管理员
2018-12-31 09:22:36    评分
2楼

谢谢楼主分享 


高工
2019-01-03 10:16:25    评分
3楼

这两个1602用的六


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]