ESP8266 D1 mini SG90 舵機超聲波測距器程式是分 2個部分,第一個是要驅動舵機轉動,當舵機轉動時,超聲波測距器便會發出訊號,然後等待反射回來的訊號,計算距離,並顯示在 OLED 屏上,然後繼續轉動和測量距離。
ESP8266 D1 mini SG90 舵機 + 超聲波測距器控制板 |
// ESP8266 D1 mini GPIO15=D8
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U,
FUNC_GPIO15);
// Ultrasonic US100 Echo
(Input) GPIO12 I/O Definit (D6)
#define us100_echo_MUX PERIPHS_IO_MUX_MTDI_U
#define us100_echo_FUNC FUNC_GPIO12
#define us100_echo_PIN 12
// Ultrasonic US100 Trig (Output) GPIO13 I/O
(D7)
#define us100_trig_MUX PERIPHS_IO_MUX_MTCK_U
#define us100_trig_FUNC FUNC_GPIO13
#define us100_trig_PIN 13
|
ESP8266 D1 mini SG90 + 超聲波測距器程式:
// RTOS Task
void LED_Blink_Task (void
*pvParameters)
{
while(1)
{
vTaskDelay (200/portTICK_RATE_MS);
// Ultrasonic
timer_count=0;
us100_send();
timer_count=us100_recv();
sprintf(dsp_buffer, "LED=%d CW=%d CCW=%d ", led, cw_time, ccw_time );
oled_Print(0, 2, dsp_buffer, 1);
sprintf(dsp_buffer, "Echo Time=%d ", timer_count );
oled_Print(0, 3, dsp_buffer, 1);
sprintf(dsp_buffer, "Distance=%dmm ", timer_count/15 );
oled_Print(0, 4, dsp_buffer, 1);
sprintf(dsp_buffer, "Echo Time=%d
Distance=%dmm\r\n", timer_count,timer_count/15 );
printf(dsp_buffer);
if(cw_time>19){
cw_time=0; led=1;
}
if(ccw_time>19){
ccw_time=0; led=0;
}
}
}
|
ESP8266 程式:DIY-ESP12F-018-Servo_04_US100_SG90-20180906
ESP8266 D1 mini SG90 舵機 + 超聲波測距器控制板 |
ESP8266 D1 mini SG90 舵機 + 超聲波測距器控制板顯示 |
ESP8266 D1 mini SG90 舵機 + 超聲波測距器 100mm 波形 |
ESP8266 D1 mini SG90 舵機 + 超聲波測距器 200mm 波形 |
2018年 9月 11日 天氣報告
氣溫:27.0度 @ 19:30
相對濕度:百分之 62%
天氣:天色大致良好
沒有留言:
張貼留言