お父にゃんの電子工作

お父にゃんの電子工作

暇なおじさんが、電子工作(主にラジオ製作)をして勝手な感想を書く

表示系とWebラジオの再生系それぞれの確認が出来たので、合体融合して完成形にしていく。

まずは、ロータリーエンコーダーを以下のように追加。

次に、エンコーダーの入力でGPIOを使えるようにするために必要なライブラリ

(libgpiod-dev)をインストール

sudo apt install -y libgpiod-dev 

 

MakefileをGeminiにお願いして以下のように合体版とし、コンパイル時に -lgpiodを追加

# ==========================================
# コンパイラとフラグの設定
# ==========================================
CXX      := g++
CXXFLAGS := -std=c++20 -O3 -Wall $(shell pkg-config --cflags gstreamer-1.0)

# インクルードパスの設定
INCLUDES := -I./Display_Lib_RPI/include \
            -I./Display_Lib_RPI/include/ili9341 \
            $(shell pkg-config --cflags freetype2)

# リンクするライブラリの設定 (-ljpeg と -lgpiod を追加)
LIBS     := $(shell pkg-config --libs freetype2 gstreamer-1.0) -llgpio -lgpiod -ljpeg -lpthread

# ==========================================
# ソースファイルとオブジェクトファイルの定義
# ==========================================
SRC_MAIN := webradio.cpp

SRC_LIB  := Display_Lib_RPI/src/common_data_RDL.cpp \
            Display_Lib_RPI/src/font_data_RDL.cpp \
            Display_Lib_RPI/src/print_data_RDL.cpp \
            Display_Lib_RPI/src/utility_data_RDL.cpp \
            Display_Lib_RPI/src/color16_graphics_RDL.cpp \
            Display_Lib_RPI/src/ili9341/ILI9341_TFT_LCD_RDL.cpp

OBJ_MAIN := webradio.o
OBJ_LIB  := $(SRC_LIB:.cpp=.o)
OBJS     := $(OBJ_MAIN) $(OBJ_LIB)

TARGET   := webradio

# ==========================================
# ビルドルール
# ==========================================
all: $(TARGET)

$(TARGET): $(OBJS)
    @echo "Linking $(TARGET)..."
    $(CXX) $(CXXFLAGS) $(INCLUDES) $^ -o $@ $(LIBS)
    @echo "Build successful!"

$(OBJ_MAIN): $(SRC_MAIN)
    @echo "Compiling $<..."
    $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@

Display_Lib_RPI/src/%.o: Display_Lib_RPI/src/%.cpp
    @echo "Compiling $<..."
    $(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@

.PHONY: all clean

clean:
    @echo "Cleaning up object files and target..."
    rm -f $(TARGET) $(OBJS)

 

音量が、デフォルトでは小さかったので、Linuxのマスターボリュームを以下のように70%に引き上げ。

amixer set Master 70%

そして、この音量設定を保存

sudo alsactl store 

 

合体融合では、おじさんの手作業が多いので、時間がかかっている。

しかし、まぁ、なんとか、とりあえず動きだした。

 

選局と、音量調整、電波強度、アルバムアート表示は出来る。

しかし、まだまだ未実装のコードは多い。VUメーターも動いていない。


 

今回のコード他を以下に入れておきますので、興味のある方はどうぞ。

WebRadio_V01

 

補足

 WebRadio_work1.cppをwebradio.cppとして保存、make

 ./webradioで実行

 その他環境設定は過去記事を参照。完成したら、まとめ記事を書きます。

 

 

まだ表示も出来てないところもあるし、設定保存等も実装出来ていない。

次は、VUメーターから取り掛かろうと思う。

 

まだまだ、だいぶ手を入れなければならない。

 

 

「もっと手を入れるのニャ」

こっちも手がかかる・・