论坛» 活动中心» 板卡试用

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

助工
2018-12-28 15:13 1楼

设计原型基本完成

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 2楼

谢谢楼主分享

高工
2019-01-03 10:16 3楼

这两个1602用的六

共3条 1/1 1 跳转至

回复

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