2024年5月12日日曜日

PIC16F1827で超音波距離/esp01sをAT/3端子レギュレータ

/* 

 *  超音波センサモジュールHC-SR04をタイマ1のゲート制御で 【16F1827】

 *    timer1_gate/main.c  Created on 2024/04/23, 9:04

 */

// config1

#pragma config FOSC = INTOSC , WDTE = OFF , PWRTE = ON , MCLRE = ON , CP = OFF , CPD = OFF

#pragma config BOREN = OFF , CLKOUTEN = OFF , IESO = OFF , FCMEN = OFF

// config2

#pragma config WRT = OFF , PLLEN = OFF , STVREN = ON , LVP = OFF 

#include <xc.h>

#include <stdio.h>

#include "aqm1602.h"

#define _XTAL_FREQ 8000000

long echo_time;

long dist;

char title[] = "Distance";

char data[16];

int main(void){

    OSCCON = 0x72;          // 8MHz    

    ANSELA = 0;

    ANSELB = 0;

    TRISA = 0b00010000;     // RA5:MCLR RA0:Trig

    TRISB = 0b00010011;     // RB0:Echo RB1:SDA1 RB4:SCL1 

    PORTA = 0;

    PORTB = 0;

    

    T1CON  = 0b00010001 ;   // FOSC/4を選択 分周比1/2 タイマー1開始

    T1GCON = 0b11010000 ;   

 // ゲート有効、Hiでカウント、シングルパルス、ゲートピン(RB0)

    LCD_Init();             // LCDの初期化9iu8u0

    // whileの直前においた

    while (1){

        // タイマ1のカウンタ準備

        TMR1 = 0;       // カウンタの初期化

        T1GGO = 1;      // シングルパルス検出待ち(ゲート制御開始))

        // トリガ送信(10us)

        RA0 = 1;

        __delay_us( 10 );

        RA0 = 0;

        // エコー信号のON待ち

        while (RB0 == 0){}     

        // エコー信号のOFF待ち

        while (RB0 == 1){}

        // 超音波の往復時間を取得

        echo_time = TMR1;

        // パルス時間から距離(cm)に変更

        dist = (echo_time / 2) * 34 / 1000;

       

        // 数値を文字列に変換 

        sprintf(data, "%ld", dist);


        LCD_clear();  

      LCD_home();

        LCD_str(title);

        LCD_locate(2,2);

        LCD_str(data);

        LCD_locate(2,6);

        LCD_str("cm");     

        __delay_ms( 1000 );

    }

}

// 吉野さんオリジナルだが 超音波距離センサ | DIYのホームページ (ease-labs.com)

// も参考にした whileのたびにlcd_initは冗長なのでwhile直前においた

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

 ch340が乗っているUSB書き込み機でprogにしてファームウエア書き込む  いつのまにか。。。。。

---------------------------------------------------------------------------

3.3Vレギュレーターとの接続方法 (hiramine.com) 7223の使い方

もう一つの小さい2950は以下を参考に




0 件のコメント:

コメントを投稿