2018年9月12日 星期三

DIY - ESP8266:D1 mini SG90 舵機 + 超聲波測距器雷達程式(一百一十九)

DIY - ESP8266:D1 mini SG90 舵機 + 超聲波測距器雷達程式(一百一十九):

為了加強 ESP8266 D1 mini SG90 舵機超聲波測距掃描器可讀性,筆者希望在 OLED 屏上顯示一個半圓形,並且根據舵機轉動方向角度,用圓點表示出超聲波測距的距離位置,好像雷達(Radar)測距的效果。

ESP8266 D1 mini SG90 舵機 + 超聲波測距器雷達
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);

        if (led == 0){
                        // MG995 Clockwise = 500us = 0.5ms in 20ms Def=23
                        GPIO_OUTPUT_SET(GPIO_ID_PIN(15),1);
                        os_delay_us(500);
                        GPIO_OUTPUT_SET(GPIO_ID_PIN(15),0);
                        cw_time ++;
                        } else {
                        // MG995 Counterclockwise = 2500us = 2.5ms in 20ms Def=23
                        GPIO_OUTPUT_SET(GPIO_ID_PIN(15),1);
                        os_delay_us(2500);
                        GPIO_OUTPUT_SET(GPIO_ID_PIN(15),0);
                        ccw_time --;
                        }

                        // Ultrasonic
                       timer_count=0;
                        us100_send();
                        timer_count=us100_recv();

                        sprintf(dsp_buffer, "%dmm ", timer_count/15);
                        oled_Print(0, 0, dsp_buffer, 1);
                        timer_count = timer_count /1000;
                        if (timer_count>56) timer_count=56;
                        if(cw_time  > 0) {draw_halfradar(cw_time,   timer_count, 1, 1, 0);}
                        if(ccw_time < 15) {draw_halfradar(ccw_time, timer_count, 1, 1, 0);}

                        if(cw_time>14){
                            cw_time=0; ccw_time=15; led=1;
                            oled_ClearGddram(1);
                           oled_WriteScreen(0,7);
                        }

                        if(ccw_time < 1){
                            ccw_time=15; cw_time=0; led=0;
                            oled_ClearGddram(1);
                           oled_WriteScreen(0,7);
                        }
    } // End While
}
ESP8266 程式:DIY-ESP12F-025-Servo_03_SG90+US100+Radar-201809089
 
ESP8266 D1 mini SG90 舵機 + 超聲波測距器雷達
ESP8266 D1 mini SG90 舵機 + 超聲波測距器雷達顯示
ESP8266 D1 mini SG90 舵機 + 超聲波測距器雷達 5-Pin 接線
2018年 9月 12日 天氣報告
氣溫:28.0@ 20:20
相對濕度:百分之 73%
天氣:微雨
※ 熱帶風暴百里嘉,距離香港西南偏南 162公里,中心風力每小時 85 公里,三號熱帶氣旋警告信號現正生效

沒有留言:

張貼留言