jl7gmnのblog

yahooブログから移行してきました。アマチュア無線を中心としたブログです。

Linux

MODEL 1200FXローテーターその3

ローテーターの角度表示が上手くいったので、次のステップとしてスマフォからのコントロールをやってみることにしました。
結果から言うと上手くゆきました。

スマフォでのコントロール

ESP32のUDP通信機能を使い、スマフォで使えるUDP TCP Serverという素晴らしいアプリケーションがアンドロイド用にあります。ほかにも幾つかありましたが、他のものではエラーデータが時々発生して上手くなくこのUDP TCP Serverアプリがとても安定したアプリでしたので採用しました。
参考にしたWebです。

CIMG9529
今回はローテーターの角度表示のESP32DivKitCとは別のESP32DivKitCボードを使い実験しました。
上手くいったので、後で表示用のESP32に移植します。(ポートを選んで組込)表示用のESP32はTFT接続ポートも結構あり、他A/Dポートの関連で2つのポートもあります。これら以外で2つのポートを選んで組込します。

CIMG9526

スマフォからのUDP通信で アスキーデータをESP32で受けてフマフォのCCWボタン、CWボタン、OFFボタン対応のアスキーデータをデコードして、ポートに出力するという単純な動作です。ポートにはNPNトランジスタスィッチング回路が繋がって、オープンコレクタ出力がREMOTE端子へ繋がりON/OFFSW代わりとなります。CWとCCWの2つのトランジスタのスィッチング回路で対応です。

ESP32DevKitCのスケッチです。

// ESP32_WiFiUDP
// 2022APR16

#include <WiFi.h>
#include <WiFiUdp.h>

const char ssid[] = "***************"; //ご自分のルーターのSSIDに書き換えてください
const char pass[] = "***************"; //ご自分のルーターのパスワードに書き換えてください

const int localPort = 9999;      // ポート番号

const IPAddress ip(192, 168, 4, 3);       // IPアドレス(ゲートウェイも兼ねる)
const IPAddress subnet(255, 255, 255, 0); // サブネットマスク

WiFiUDP udp;
const int ledccw = 4;
const int ledcw = 0;

void setup() {
  Serial.begin(115200);

  WiFi.softAP(ssid, pass);           // SSIDとパスの設定
  delay(100);                        // 追記:このdelayを入れないと失敗する場合がある
  WiFi.softAPConfig(ip, ip, subnet); // IPアドレス、ゲートウェイ、サブネットマスクの設定

  Serial.print("AP IP address: ");
  IPAddress myIP = WiFi.softAPIP();
  Serial.println(myIP);

  Serial.println("Starting UDP");
 
  udp.begin(localPort);  // UDP通信の開始(引数はポート番号)

  Serial.print("Local port: ");
  Serial.println(localPort);
  pinMode(ledccw,OUTPUT);
  pinMode(ledcw,OUTPUT);
}

void loop() {
  int j,k;
  char i[64];
  while(1){
    if (udp.parsePacket())
    {
      j = udp.read(i,64);
      i[j]='\0';
      Serial.print(i[0]);
      Serial.print("\n");
   
      k = atoi(i);
      Serial.print("k= ");
      Serial.println(k);

      switch(k){
        case 0:
          digitalWrite(ledccw,0);
          digitalWrite(ledcw,0);
          break;
        case 1:
          digitalWrite(ledccw,1);
          digitalWrite(ledcw,0);
          break;
        case 2:
          digitalWrite(ledcw,1);
          digitalWrite(ledccw,0);
          break;
        case 3:
          digitalWrite(ledccw,0);
          digitalWrite(ledcw,0);
          break;
        case 4:
          digitalWrite(ledccw,0);
          digitalWrite(ledcw,0);
          break;
        case 5:
          digitalWrite(ledccw,0);
          digitalWrite(ledcw,0);
          break;
       default:
          break;
      }
    }
    delay(100);
  }
}

スマフォでの使用は0,1,2の3つです。
0:停止
1:CCW
2:CW
数値3から5までは予備ボタンスケッチで0と同じ停止です。(停止コマンドとして設定)
スマフォのアプリではNumber of buttons in use で表示ボタンを任意に決めることが出来ます。ここで表示しない設定なのでスケッチがあっても問題はありません。
ESP32の出力ポートについてですが、そのままでの動作では同時出力もなりますので、ポート出力(CW,CCW)は排他的にしなければなりませんので、動作メイン設定以外の出力ポートはあえて強制停止としてスケッチしてあります。

簡単なリモコンができました。
これだけでも便利で当分使用出来ると思います。
先ずは実際に試してみたいと思います。
まだまだESP32の表示部への組込等、ステップアップは続きます。

つづく?

MODEL 1200FXローテーターその2

ESP32DevKitCのADコンバーターの精度の良い2.5DBアッテネーションを使い誤差を調べての簡易補正を行なったREMOTE端子の角度に対しての出力電圧を角度計算して表示した動画です。

かなり角度と指針位置の精度が取れています。補正前はかなりのズレがありましたが、補正後はほとんど±1カウント以内ぐらいです、多くても±2カウント以内に収まっています。ただし、これは見る角度とかでも多少代わりますし、進めて戻って、または戻って進めてをやると±2カウントぐらいの誤差になります。(とても指針表示にヒステリシス、またはバックラッシュがあるローテーターです。)またスピード設定を早くすると止める位置が難しくなりますし、最初と終わりの止まる位置が勢いがあるのでスピードが遅い時のAD変換値とスピードが速い時のエッヂのAD変換値は多少異なります。通常の仕様を標準とするのでスピードはセンターで設計しています。SWの操作はスピードが遅い程目的の角度で止めやすいです。


大まかな事ですが、指針は−10°〜から+379°まで表示範囲があります。その中の0°から360°を使っています。これもエッヂ近辺の精度の悪いところを使用しない為の方策の一つであるのと、エッヂ指針設定では必ずオーバーするので余裕をもたせる意味でも広くしてあります。

0°超えた左回転時のエッヂ位置 (角度でー10°のゆとり)
CIMG9524

360°を超えた右回転時のエッヂ位置(角度で379°(360°から+19°))
CIMG9525

ここまでは上手くいった指針とTFT液晶への角度表紙動画と写真説明で終了です。
TFT液晶表示関係のスケッチやTFT液晶を使う場合の設定についての重要と思われた点,等を私自身の忘備録して記します。

今回使用したTFT液晶は1.8インチのものです。
仕様としてwidth 128 x height 160 typeがST7735REDTAB 中華製でALIEXPRESSで購入したものです。とても使いやすいTFT液晶ですが、使うためには使用するESP32DevKitCの端子の指定と使用するフォントとかをドライバー設定のように予め設定を行う必要があります。それは User_Setup.h のヘッダーファイルの設定です。
Arduinoの中のlibrariesフォルダの中のTFT_eSPIのフォルダの中にあります。
先ずは仕様のWIDTHと HEIGHTを自分の液晶の物に合わせてコメントアウトを外し設定します。
define the pixel width and height in portrait orientation とあります。

#define TFT_WIDTH  128
#define TFT_HEIGHT 160

次に液晶のtypeも自分の液晶に合わせてコメントアウトを外して設定します。たくさん種類がある中から自分の使う液晶のtypeを選びます。
define the type of display とあります。

#define ST7735_REDTAB

次はESP32 のDev board pinセットアップです。ここが一番厄介でした。というのもWebのスケッチで動作しているものと、この設定が違う事がある為、オリジナルの設定では表示できない事が起きえます。ある程度の自由度(ポート選択可能)があるためです。自分のTFT液晶とESP32Dev boardではいつも同じポート設定で行ないたいのが心情ですが、Webで気に入ったスケッチで動作している物に合わせて設定を変えてしまうのが手です。私はそうしてます。ブログで作成したTS-820 DDS-VFOでも同じTFT液晶を使っていますので、これと同じポート設置に書きかえています。すると全部同じ接続で新たなスケッチでの液晶表示も悩まずに組んで行けます。
下記のTFT_CS  5,  TFT_RST 15 の2つは書き換えてあります。元はそれぞれ 15 と 4です。

// ###### EDIT THE PIN NUMBERS IN THE LINES FOLLOWING TO SUIT YOUR ESP32 SETUP   ######

// For ESP32 Dev board (only tested with ILI9341 display)
// The hardware SPI can be mapped to any pins

#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18

#define TFT_CS    5  // Chip select control pin 15
#define TFT_DC    2  // Data Command control pin
#define TFT_RST  15  // Reset pin (could connect to RST pin) 4

次は使うフォントを指定します。面倒なので使える物全部指定しておきます。
// ##################################################################################
//
// Section 3. Define the fonts that are to be used here
//
// ##################################################################################

// Comment out the #defines below with // to stop that font being loaded
// The ESP8366 and ESP32 have plenty of memory so commenting out fonts is not
// normally necessary. If all fonts are loaded the extra FLASH space required is
// about 17Kbytes. To save FLASH space only enable the fonts you need!

#define LOAD_GLCD   // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2  // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4  // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6  // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7  // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:-.
#define LOAD_FONT8  // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
//#define LOAD_FONT8N // Font 8. Alternative to Font 8 above, slightly narrower, so 3 digits fit a 160 pixel TFT
#define LOAD_GFXFF  // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts

// Comment out the #define below to stop the SPIFFS filing system and smooth font code being loaded
// this will save ~20kbytes of FLASH
#define SMOOTH_FONT

残りの設定はオプションです。これは次の2つを設定します。
ST7735は27MHzより上では動作しない(スプリアスピクセルライン障害)とコメントあります。なので最大である27MHzの設定なのでしょう!
// With a ST7735 display more than 27MHz may not work (spurious pixels and lines)

#define SPI_FREQUENCY  27000000

これはおまじない?
#define SPI_TOUCH_FREQUENCY  2500000

これで設定する箇所の全部です。
一度設定しておくと同じ液晶とESP32Dev ボードの接続は代わりませんので、スケッチがしやすくなります。

User_Setup.hの設定が終わったら次は今回の1200FXの角度の液晶への表示方法のスケッチについてです。TFT液晶の表示についてのみ特化して記します。

ヘッダーのロードを設定します。
//TFT1.8
#include <SPI.h>
#include <TFT_eSPI.h>

TFT_eSPI tft = TFT_eSPI(); // Invoke library, pins defined in User_Setup.h

次にセットアップでの設定です。
void setup(){
    Serial.begin(115200);

    //TFT setting -----------------------------------------------
    tft.init();
    tft.setRotation(1);
    tft.fillScreen(TFT_BLACK);
    //-----------------------------------------------------------


void loop(){ での設定です。
ミソはlongの数値はcharに変換して表示することです。
 char cc[6];で文字配列を用意して  sprintfで数値を文字変換します。
 sprintf(cc,"%3d",((deg*1)+dd)); 
上は変換時に補正した角度を入れています。
後はTFTのテキストカラーを指定(白)、テキストサイズ設定(5)、セットする位置設定(0,50)で後は数値をccに変換し、後はccをTFTで表示するだけです。
    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setTextSize(5);
    tft.setCursor(0,50);
    char cc[6];
    sprintf(cc,"%3d",((deg*1)+dd)); 
    tft.print(cc);


以下 void loop 全スケッチです
void loop(){
    uint32_t voltage;
    // ADC1_CH6の電圧値を取得
    esp_adc_cal_get_voltage(ADC_CHANNEL_6, &adcChar, &voltage);

    long d =0;
    for(int i=0 ;i<2000;i++){
      d +=analogRead(34);
    }
    
    long deg =0;
    long dd =0;
  
    // deg=((((d-78)/2000)-14)/15.27)*1.02;
    // Serial.print("deg = ");
    // Serial.println(deg*5);
    
    // deg=((((d-78)/2000)-14)/1.52);
    // Serial.print("deg = ");
    // Serial.println(deg*0.5);

    deg=(((d/2000)-62)/2.83);
    Serial.print("deg = ");
    Serial.println(deg*1.0);

    //hosei
    dd=-1*0.000123456*deg*deg+0.0444444*deg;
    char cd[6];
    sprintf(cd,"%4d",dd);
    Serial.print("HOSEI:");
    Serial.println(cd);

    tft.setTextColor(TFT_WHITE,TFT_BLACK);
    tft.setTextSize(5);
    tft.setCursor(0,50);
 

    char cc[6];
    sprintf(cc,"%3d",((deg*1)+dd));
    tft.print(cc);
 
    Serial.println(((d)/2000));
     delay(10);
}

以上で角度の数値変換値は液晶表示できます。
--------------------------------------------------------------------------------------------------------------------------------------


AD変換のスケッチ設定についてはお決まりなので、しかも説明付きのサンプルですので省略します。
ADC用のヘッダーのインクルードを2つします。
//adc header ----------------------------
#include "driver/adc.h"
#include "esp_adc_cal.h"

esp_adc_cal_characteristics_t    adcChar;

ADCのATTの設定が11dB1つしかなかったので,コメントアウトで全部の設定を載せました。
使用出来る電圧のフルスケールは便利です。
今回は2.5dB設定で使用しましたので1.5Vフルスケールです。

void setup(){
    Serial.begin(115200);

    //TFT setting -----------------------------------------------
    tft.init();
    tft.setRotation(1);
    tft.fillScreen(TFT_BLACK);
    //-----------------------------------------------------------
    // ADCを起動(ほかの部分で明示的にOFFにしてなければなくても大丈夫)
    adc_power_on();
 
    // ADC1_CH6を初期化
    adc_gpio_init(ADC_UNIT_1, ADC_CHANNEL_6);// GPIO 34
   
    // ADC1の解像度を12bit(0~4095)に設定
    adc1_config_width(ADC_WIDTH_BIT_12);
   
    // ADC1の減衰を11dBに設定
   // adc1_config_channel_atten(ADC1_CHANNEL_6, ADC_ATTEN_DB_11);
    
   //ADC_ATTEN_DB_0     //FULL SCALE 1.1V
   //adc1_config_channel_atten(ADC1_CHANNEL_6, ADC_ATTEN_DB_0);
   //ADC_ATTEN_DB_2_5   //FULL SCALE 1.5V
   adc1_config_channel_atten(ADC1_CHANNEL_6, ADC_ATTEN_DB_2_5);
   //ADC_ATTEN_DB_6     //FULL SCALE 2.2V
   //adc1_config_channel_atten(ADC1_CHANNEL_6, ADC_ATTEN_DB_6);
   //ADC_ATTEN_DB_11    //FULL SCALE 3.9V
   //adc1_config_channel_atten(ADC1_CHANNEL_6, ADC_ATTEN_DB_11);
 

  hiZ(25);
  dacWrite(25,9);//9
   
    // 電圧値に変換するための情報をaddCharに格納
    esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_2_5, ADC_WIDTH_BIT_12, 1100, &adcChar);

}

次にADC変換時入力感度特性でゼロボルト付近のオフセットが(不感帯)が大きい回避策としてですが、ラジオペンチのWebを参考にしました。とても素晴らしい方法かと思います。


回路図も全く同じポートを使っていますので、すべて引用させていただきました。
範囲を選択_279

スケッチ上でのポートD25の設定と出力の下記の2つの処理です。

    hiZ(25);
    dacWrite(25,9);//9

上記のサブルーチンhiZ();
void hiZ(int n) {               // 指定ピンをHi-Zに設定 set the pin to hi-z
  pinMode(n, INPUT);            // 入力にして set INPUT
  digitalWrite(n, LOW);         // 念のためにプルアップを解除 no pull up
}
dacWriteではポート25に9を出力しています。出力は0,1,、、、7,8,9などと入れてみてオフセットの不感地帯がなくなる補正電圧値を見つけます。通常時は78mV出力がありますが、私の場合は以下の電圧値でした。9の97mVを採用しました。

2の出力時 78mV
3の出力時   78mV
4の出力時 78mV
5の出力時   79mV
6の出力時 83mV
7の出力時    89mV
8の出力時 93mV
9の出力時    97mV

補正電圧は差し引きして使います。
不感地帯はローテーターの0°から増加時の数値の変化が突然数値が上がる様な感じの所を言っています。上記の出力設定の状態で0°近辺でもADC出力値が変化する様になり変換値も同様に変化します。不感帯はキャンセルされています。

平均値化の為のスケッチです。アナログポートからの電圧の読み込みです。
void loop(){
    uint32_t voltage;
    // ADC1_CH6の電圧値を取得
    esp_adc_cal_get_voltage(ADC_CHANNEL_6, &adcChar, &voltage);

    long d =0;
    for(int i=0 ;i<2000;i++){
      d +=analogRead(34);
    }

dは2000回のDACの入力値の和算値が入ります。1000回ではバラツキが顕著だったので変えました。
平均値化する事でノイズ的な突飛な値が押さえられるのでバラツキがなくなります。
2000で割ることで平均値となります。
0°の時の電圧値分をひきます。
0°で62mV 360°で1084mV   0°分を引く処理で 0mV〜1022mVの電圧範囲を検出します。
2.83は360°のADC変換値の1022を360°分割した1°当たりのADC変換値です。各角度時のADC変換値を2.83で割ることで角度が算出されます。

deg=(((d/2000)-62)/2.83);

残りは補正の式のスケッチですが、単にコーディングするだけです。桁数は電卓の桁です。
求めた補正の計算式をスケッチ様に書きます。

dd=−0.000123456deg^2+(−360)*(−0.000123456)*deg
上を更にまとめると
dd=−0.000123456deg^2+0.04444416*deg

上をスケッチ用に書き換えます。
//hosei
  dd=-1*0.000123456*deg*deg+0.04444416*deg;

補正をかけるスケッチ箇所(ddを足す箇所)
TFT液晶の所でも取り上げています下記の箇所です。
 char cc[6];
    sprintf(cc,"%3d",((deg*1)+dd));
    tft.print(cc);

以上です。
ESP32DevKitCのADCでローテーターのリモート端子を用いた指示角度表示が短いスケッチで簡単に作製することが出来ます。

つづく?

TS820 DDS-VFOその22

TS820 DDS-VFOの1.8インチTFT液晶表示の周波数フォントサイズが小さいと思いスケッチを見ていたらサイズの少し大きなフォントも用意してあるようなので、少し大きなフォントに変える事にしました。変更するのは単にコールするフォントサブルーチンを周波数、単位で変えるだけです。そのままでは周波数と単位が重なるので、合わせて周波数と単位の2つの位置調整も必要です。整数部は1桁と2桁の周波数があるので2桁の周波数で位置合わせです。(14MHzでの表示位置調整です。)

TS820のフロントから見える周波数のみのフォントサイズ変更です。他は見えませんのでそのままです。

14.150MHzの表示位置調整実施後
CIMG9507

7.150MHzの表示
CIMG9504

単にスケッチでは用意されてる各フォント用のサブルーチンで今回はサイズ20のフォント用にしました。位置調整してサブルーチンで同時に書き換えます。基本的な位置調整はX軸のみです。
周波数はフォント16から20へ、単位のMHzはフォント12から16への変更です。
■周波数と単位のフォントサイズ、位置調整
//-------- Display Digital Frquency ---------------------------------------
        sprintf(str, "%3d.%03d,%02d",  frq/1000000, (frq/1000)%1000, (frq/10)%100 );
      //disp_str16(str,17, 110, 0xffd080);   
        disp_str20(str, 3, 110, 0xffd080);              
        sprintf(str, "MHz" );
      //disp_str12(str,120, 111, 0xffd080);
        disp_str16(str,123, 111, 0xffd080);

送受信での表示フォントサイズも文字を減らした上で変更することにしました。
CIMG9509

■送信時の”T”表示フォントサイズ、位置調整
  // RIT_frq Unit Setting
        sprintf(str,"Hz");
        disp_str12(str,132,92, 0xffd080);
        // RIT DISPLAY
        sprintf(str,"RIT:");
        disp_str12(str,38,92,0xffd080);
        
        if(digitalRead(TX_SW) == HIGH){
           //sprintf(str,"RX:  RIT:");
           sprintf(str,"RX:");
           disp_str12(str,0,92,0xffd080);
        }
        else {
          if(digitalRead(TX_SW) == LOW){
            //sprintf(str,"TX:");
            sprintf(str,"T");
            //disp_str12(str,0,112,0xffd080);
            disp_str20(str,0,110,0xffd080);
          }

周波数フォント表示サイズを大きくした為表示位置が足りなくなり送信の表示も”TX”から ”T”へと必然的に短くなりました。(送信時表示の”T”のフォントサイズも12から20へ周波数と同じサイズに変更です。)
書き換えのESP32DevKitCは後で組み込んだ分と差し替えしフロントパネル窓から上手く表示出来てるかを確認です。

つづく?

TS820 DDS-VFOその20

一眠りして目が覚めたので、一昨日にTS820 DDS-VFOの3基板を本体に組込みしたので纏めます。

TS820本体の送受信時の切り替えの為に追加した2石トランジスタスイッチング回路での送信検出も問題なく動作してくれています。送受信時のRIT動作も、表示も問題ありません。回り込みでの異常動作なども全くありません。実際の試験運用の交信テストはバンドコンディションの良い21MHzで数十局のWとも問題なく出来ています。運用実績もできたので本体に組込開始です。

TS820 DDS-VFOの設置場所は元のアナログVFOの取り外しスペースで、ここに十分入ります。今回はネジ止めは基板側だけにしてL平板アングルをカットしてカウンターユニットのケースに超強力両面テープにて貼り付ける方式です。簡単に適切な位置にTS820 DDS-VFOを取り付けする事が出来ます。以下設置位置の写真です。強力な両面テープで、TFTの液晶の設置でも使った物です。HI!

■真上方向よりの写真
20220321_213518

■前方やや斜め上からの写真
20220321_213707

■右斜め上方向よりの写真
20220321_213716

■フロントの写真
20220321_213548

■フロントデジタルサブダイヤルとデジタル表示部の拡大写真
20220321_213604

先ずはDDS-VFOの全3基板を組込できました。ただしHAMLOG用のシリアル用のUSBケーブルをどうするか(コネクタ設置かケーブル引き出しか)という事とRITの設置SWの設置方法は、未だ思案中です。

つづく?

TS820 DDS-VFOその19

この間注文していたロータリーエンコーダ2個が着弾しました。
手持ちで、E6B2-CWZ6C のロータリーエンコーダは 1000P/R, 2000P/R の2つしかなかったので新たに1000P/R と500P/RのロータリーエンコーダをAliExpressにてオーダーしておいたものです。3月8日注文で3月15日到着なので1週間で届きました。1ヶ月はかかるかと思っていましたので、今の時期ではとても早い方ではないかと思います。

Φ6の連結ジョイントも付属しています。ただし重量感がなくプラスチックを使った
ケースのようで、とても軽いです。2000P/Rのものはそれに比べるとやや重量感が
あります。
CIMG9486

500 P/R   5 to 24V DC
CIMG9488

1000 P/R    5to12V DC
CIMG9487

早速ブレッドボードのTS820 DDS-VFOのロータリーエンコーダと入れ替えての
動作を確認です。接続は前のものも中華製でP/R以外は全く同じ仕様です。
全く同じ配線で使用出来ます。

型番での仕様一覧表がありました。
E6B2-CWZ6Cは 出力形式がNPNオープンコレクタ出力です。
範囲を選択_277
実際にいまブレッドボードで繫いであるのは 2000P/R です。そのまま交換してみると
全く使いづらいので、500P/R, 1000P/Rに取り替えた時の操作しやすい設定値をスケッチを変えて確認してみました。freq_step を変えてのテストです。デジタルサブダイヤルの早回しとスローでの微調整時の動作が同じようになるような設定値です。

対象となるスケッチは下記部になります。確認後// でコメント化しておきました。
//#define freq_step 10       // step[Hz]
#define freq_step  1.0      // step[Hz] 2000P/R
//#define freq_step  3.0  // step[Hz] 500P/R
//#define freq_step  1.5  // step[Hz] 1000P/R
 上記のfreq_step の設定は、デジタルサブダイヤルの早送り時と微調整の両方がバランス良く動作する値に設定するのですが、感覚的なものですのでひとによっては他の設定値の方が良いかもしれません。
とここまで、すんなり順調に確認できた様に話が進んでいますが、最初に交換しただけでは、ロータリーエンコーダを回しても、周波数の変化もなくて、まがい物を掴まされたかもなどど、勝手な思いを巡らせてました。なぜ交換しただけでは動作しなかったかと言うと、今までのロータリーエンコーダーがたまたま上手く動作していたからなのです。何かと言うと、電源の仕様です。1000P/R用の仕様の電源電圧は5Vから+24Vが動作範囲の電源電圧です。が、実際はESP32DevKitCの+3.3Vにて動作させていました。このため2000P/Rのロータリーエンコーダーはたまたま動いてくれていた事になります。ところが、500P/R と1000P/Rは+3.3Vでは動いてくれない仕様通りのロータリーエンコーダーであるということなのです。電源電圧を+5.0Vにつないで、2つとも問題なく周波数を変えることが出来ました。

つづく?
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード
  • ライブドアブログ