JH7UBCブログ

アマチュア無線 電子工作 家庭菜園など趣味のブログです

ESP32 NOKIA5110 サインカーブ

2020-01-11 07:53:58 | ESP32

 グラフィックの練習として、ESP32でNOKIA5110LCDにサインカーブを描いてみます。

 スケッチです。

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

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
 
Adafruit_PCD8544 display = Adafruit_PCD8544(14, 13, 27, 15, 26);
 
void setup() {
  display.begin();  //initialize
  display.setContrast(50);  //set contrast
  display.clearDisplay(); //clears the screen and buffer
  display.drawLine(10, 20, 80, 20, BLACK);
  display.drawLine(10, 0, 10, 40, BLACK);
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0,15);
  display.print("0");
  display.setCursor(45,0);
  display.print(" Y=sinX");
  display.display();
  
  for(int i = 0; i <= 72; i++){
    float x = i * 3.141592 /36;
    int y = 20 * sin(x);
    display.drawPixel(10+i, 20-y, BLACK);
    display.display();
  }
}
 
void loop() {
}

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

NOKIA5110の画面です。


第11回FCWA CW QSOパーティの結果発表

2020-01-10 08:37:45 | アマチュア無線

 昨年12月7日に開催された第11回FCWA CW QSOパーティ(FQP)の結果をFCWAのホームページに発表しました。

 今回のFQPには、111局のログ提出がありました。(一般部門95局、QRP部門16局)

 たくさんのCW愛好局にご参加いただき、CW交信を楽しんでいただきました。ありがとうございました。

 ログを見るとハイバンドの交信は少なく、1.9MHz,3.5MHz,7MHz,10MHzでの交信がほとんどでした。

 特に1.9MHzでの交信数が順位を決めたようです。

 なお、入賞者は、FCWA総会時(5月に開催予定)に表彰する予定です。

                   FQPマネージャー JH7UBC 畠 惠治

 


ESP32 NOKIA5110LCD グラフィック表示テスト

2020-01-09 08:04:14 | ESP32

 ESP32 DevKitCを使い、NOKIA5110LCDにグラフィックを表示するテストです。

 使用するライブラリは、Adafruit_GFX.hです。

 グラフィック関係の関数と実際の表示結果をまとめます。

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

 display.drawPixel(x,y,BLACK); //座標x,yにドットを表示します。

 例:座標(10,10)にドットを表示します。

 display.drawPixel(10, 10, BLACK);

   display.display();

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

 display.drawLine(x1,y1,x2,y2,BLACK); //座標(x1,y1)から(x2,y2)まで直線を描きます。

 例 座標(0,0)から(83,47)まで直線を描きます。

 display.drawLine(0, 0, 83, 47, BLACK);

   display.display();

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

 display.drawCircle(x,y,r,BLACK); //座標(x,y)を中心に半径rの円を描きます。

 例:座標(42,24)を中心にして、半径20の円を描きます。

 display.drawCircle(42, 24, 20, BLACK);

   display.display();

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

 display.fillCircle(x,y,r,BLACK); //座標(x,y)を中心に半径rの円を描き、中を塗りつぶします。 

 例:(42,24)を中心に半径20の円を描き、中を塗りつぶします。

 display.fillCircle(42, 24, 20, BLACK);
   display.display();

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

 display.drawRect(x,y,w,h,BLACK); //(x,y)を始点(左上)として、幅w、高さhの矩形(rectangle)を描きます。

 例:(20,10)を始点として、幅30、高さ20の矩形を描きます。

 display.drawRect(20,10,30,20,BLACK);

   display.display();

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

 display.fillRect(x,y,w,h,BLACK); //(x,y)を始点として、幅w、高さhの矩形を描き、中を塗りつぶします。

 例:(20,10)を始点として、幅30、高さ20の矩形を描き、中を塗りつぶします。

 display.fillRect(20, 10, 30, 20, BLACK);

 display.display();

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

 display.drawRoundRect(x,y,w,h,r,BLACK); //(x,y)を始点として、幅w、高さh、角の半径rの角の丸い矩形を描きます。

 例:(20,10)を始点として幅30、高さ20、角の半径5の角の丸い矩形を描きます。

 display.drawRoundRect(20, 10, 30, 20, 5,BLACK);

 display.display();

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

 display.fillRoundRect(x,y,w,h,r,BLACK); //(x,y)を始点として、幅w、高さhの角半径rの角の丸い矩形を描き、中を塗りつぶします。

 例:(20,10)を始点として幅30、高さ20、角の半径5の角の丸い矩形を描き、中を塗りつぶします。

 display.fillRoundRect(20, 10, 30, 20, 5,BLACK);

 display.display();

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

 これらを組み合わせて様々なグラフィックを表示することができます。


ESP32 NOKIA5110LCD 文字表示テスト

2020-01-08 08:50:26 | ESP32

 モノクログラフィックLCD NOKIA5110にESP32で文字(テキスト)を表示させるテストです。

 文字を表示させるスケッチの基本は、前の記事を参考にしてください。ここでは、テキスト表示関係の関数についてまとめます。

 まず、テキスト、グラフィック共通の関数

 display.begin(); //初期化します。

 display.clearDisplay();  //screenとbuffaをクリアします。

 display.display(); //buffaのデータをNOKIA5110に送り、screenに表示します。

 display.setContrast(n); //コントラスト調整、n=50程度ですが、見やすいように調整します。

 display.setRotation(n); //画面を反時計回りに回転させます。n=1で90°、n=2で180°、n=3で270°、n=0で回転なし。

 display.setRotation(1);で反時計回りに90°回転させた画面です。

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

 次にテキスト関係の関数です。

 display.setCursor(x,y); //カーソルをx,yにセットします。

 display.TextSize(n); //文字の大きさを指定します。n=1~5

 1行目TextSize(1)、2行目TextSize(2)、3行目TextrSize(3)です。

 左側TextSize(4)、右側TextSize(5)です。

 display.setTextColor(BLACK or WHITE,BLACK); //BLACKの場合、黒文字。WHITE,BLACKにすると白黒反転します。

 上の文字を反転させてみます。

 display.print(n); //nは文字列または数値、変数で、改行なしで表示します。

 diplay.println(n);//上記と同じですが、文字を表示後改行します。

 ただし、nが実数(浮動小数点)の場合、小数点以下2桁までしか表示しません。

  1行目は、display.println("3.141592");で表示

 2行目は、display.println(3.141592);で表示

 他にdisplay.write(n); //nはアスキーコード。でアスキーコードに対応した文字を表示することができます。

 


ESP32 NOKIA5110表示テスト

2020-01-07 12:27:13 | ESP32

 NOKIA5110LCDは、NOKIA携帯5110に使われていたモノクロ・グラフィック液晶モジュールで、現在もAmazonなどで入手可能です。

 解像度は、48×84ドットでVcc=2.7V~3.3Vですので、ESP32に直結できます。コントローラチップは、モトローラのPCD8544です。

 ArduinoやSTM32では、LCD5110_Basicというライブラリ(Rinky-Drink Electronicsというサイトからダウンロードできます)を使いましたが、ESP32では、コンパイル時にエラーがでてしまい、利用できません。(Arduino IDEを使っています)

 そこで、GitHubからAdafruit PCD8544 Nokia 5110 LCD LibraryAdafruit GFX Libraryをダウンロードして、Arduino IDEのライブラリーにインストールして利用しました。

ESP32-DevKitCとNOKIA5110の接続は、次の通りです。

GPIO14(HSPI SCK)------CLK

GPIO13(HSPI MOSI)-----DIN

GPIO27-------------------D/C

GPIO15(HSPI SS)--------CE(CS)

GPIO26-------------------RST

3V3-----------------------Vcc

GND----------------------LIGHT,GND(5110のLIGHTは、GNDに接続するものとVccに接続するものがあるので要確認)

 

回路図です。

 ライブラリーのサンプルプログラムをコンパイル・書き込むと表示デモが表示されました。

 写真のイメージが表示された後、グラフィック表示やテキスト表示のサンプルが次々に表示されました。

 勉強のために、いつものように「Hello world!」を表示させてみます。

 NOKIA5110のCE(CS)をGNDに接続すると配線が1本少なくなります。回路図です。

 この回路でテストします。

 サンプルのスケッチを見ながら、必要な部分を抜き出したスケッチです。

 これで、このライブラリの基本的な使い方が分かります。

 setContrast()の数値は、50くらいが適当でした。

 最初のdiplay.display();で花のイメージが表示されます。続いて、TextSize(1)で黒文字で「Hello world!」が表示されました。

 

 表示の仕組みですが、display.println("Hello world!");でバッファにイメージが作られ、次の行のdisplay.display();でNOKIA5110にデータが送られて表示されます。

 テキスト表示、グラフィック表示についてもう少し調べて、次回掲載します。