字体是正常了但是又,变得很大。希望明天通过进一步的学习可以想怎么弄就怎么弄。
我为什么要做这个呢?因为我想把超声波测出的距离显示在OLED屏幕上,所以下面贴出我最终实现的代码,#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11, 13);
int _ABVAR_1_t1 = 0 ;
int ardublockUltrasonicSensorCodeAutoGeneratedReturnCM(int trigPin, int echoPin)
{
long duration;
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(20);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
duration = duration / 59;
if ((duration < 2) || (duration > 300)) return false;
return duration;
}
void draw(void) {
// graphic commands to redraw the complete screen should be placed here
//u8g.setFont(u8g_font_unifont);
u8g.setFont(u8g_font_o***21);
//u8g.drawStr( 0, 38, "First!");
u8g.setPrintPos(5,50);
u8g.print(_ABVAR_1_t1);
u8g.setFont(u8g_font_o***21);
u8g.drawStr( 5, 25, "Distance:");
u8g.setFont(u8g_font_o***21);
u8g.drawStr( 60, 50, "CM");
}
void setup()
{
digitalWrite( 7 , LOW );
digitalWrite( 8 , LOW );
Serial.begin(9600);
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // white
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); // max intensity
}
else if ( u8g.getMode() == U8G_MODE_BW ) {
u8g.setColorIndex(1); // pixel on
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
u8g.setHiColorByRGB(255,255,255);
}
}
void loop()
{
_ABVAR_1_t1 = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 7 , 8 ) ;
Serial.print("distance:");
Serial.print(" ");
Serial.print(_ABVAR_1_t1);
Serial.print(" ");
Serial.println();
delay( 1000 );
// picture loop
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
// rebuild the picture after some delay
delay(50);
}
主要就是把我们蓝宙大哥写的测距代码和显示结合起来了,通过这个实验我又学会了怎么显示变量,之前只会字符串。
这里是我测距结果的几张图片,
可以看到测量出的实际距离
蓝宙的模块测出的距离很准,我们平时的要求肯定是够了,没有任何问题。
既然现实我已经会了,接下来打算用蓝宙的摇杆模块做一个贪吃蛇的小游戏
,
这小摇杆看着就带感,不用他做个游戏玩玩都觉得可惜,哈哈~
感谢蓝宙给我这么多新奇的小玩意~
视频还在被审核,明天补上来~
U8glib这个库我放在附件里了,需要下载的小伙伴赶快行动吧~