|
爱科技、爱创意、爱折腾、爱极致,我们都是技术控
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 杨生69366 于 2023-4-6 08:56 编辑
为了学习数码技术,我确立了一个学习目标,就是数码和音乐控制编程结合,进入数码大门。现在又要紧紧抓住最新出现的科技革命之产物-ChatGPT,实现数码开发和编程的快捷学习和实践。怎样从古董电脑低层数码PC1500突变跳过51,stm32,arduino到64位最强卡片电脑树莓派4BLinux的Python,再到Windows和Anaroid手机的控制和编程。最终要实现拿到曲谱,自动读取输入电脑,自动播放。ChatGPT已经开始助我一臂之力。
以前已经发布过几篇数码论坛帖子,从PC1500到树莓派4B,完成了PC1500硬件设计和汇编编程到树莓派4B的芯片电路设计和python编程,学会了控制音乐的初级阶段,终于发出来比较简单的发出单音的一曲《小星星》。
后来,又重新设计了PC1500总线接口和树莓派4B的GPIO的二合一接口电路,设计在一块PCB板上,见EDA电路设计图一,二。由于PC1500也实现了wifi联网,所以看起来古董电脑也是无所不能了?
EDA电路设计图:
树莓派4B/PC1500/61声卡五线谱编解码表:
五线谱/简谱/Yang midi编解码表:
PCB板安装焊接:
树莓派4B/PC1500等硬件接口控制板:
于是,先用PC1500独立控制复杂芯片电路,汇编语言编程。终于,第一次实现多声部发音,见视频一曲《故乡的亲人》之PC1500全汇编语言编程版。视频一:
XiaoYing_Video_1680188998995.mp4
(7.4 MB, 下载次数: 0)
但是,由于PC1500的晶振频率只有1.3M太低了,实现多声部的,汇编语言编程的定时中断服务程序,运行速度无法更快,8位CPU定时中断处理的多声部同时发音会互有冲突延时。视频中可以明显感受到多声部发音节拍不准确。但是也敢说,这可能是全球古董电脑编曲数码音乐第一了。
我的PC1500多声部的汇编语言编程基本顺序是,主程序处理取得编码所在的被编码的五线谱音符,识别开头升降调,根据升降调编解码处理-识别多声部发音的第一声部第二第三第四最多4个声部并存入寄存器-处理每一个音符码和音长时间码存入四个声部的四个的寄存器。 只要编制好一个声部编程-其它声部编程只需改变暂存寄存器地址,编程是一模一样,看起来汇编程序很长,其实是重复而已。最后就是发音编程,是在中断服务程序中,由一个74HC04反相器组成的节拍振荡器产生的定时中断(中断节拍100Hz左右可调),实现不同音符和音长的发音控制。(详细介绍,感兴趣的请参见我以前发布的帖子)。
而python的编程语言虽然有所不同,但是基本编程顺序和功能也是一样的,甚至python作为高级语言更加容易看懂,编解码的计算也很容易编写,对于多声部发音的编程是引入多线程Threading模块,比定时中断更容易实现。
当PC1500通过esp8266wifi联网与树莓派4B或者电脑windows实现网络连接,PC1500作为终端设备进行简单的输入输出操作,对音乐多声部控制和编程就毫无压力了。编程用上了ChatGPT3.5和MusicLM等智能编曲软件的指导和引用。
我学习数码硬件电路设计和软件编程,为何选择了电子音乐控制和编程?实现自动化操作和演奏?主要是因为数码音乐,可以从很简单的,用单片机就可以产生音频振荡器,容易初始编程控制不同频率下的单音发音,容易简单编程发出单音的乐曲声。然后,可以设计和扩展越来越复杂,逐步到专门的音源芯片的多声道多声部的,以及具有和弦伴奏的音乐控制和编程,按键力度(振幅)的编码控制和编程。可以学习到工控数码界遇到的大多数出现的技术场景,比如,硬件电路设计到软件编程,EDA设计-PCB制作,计算机中断,多线程,数据采集和数据分析,五线谱各种符号和根音和弦的编解码技术,敢于改编复杂的国际音乐编解码语言MIDI,自创更容易看懂和编程的Yang midi,各种MP3音乐,VGM游戏音乐等编解码技术分析,对于更复杂波形音频信号的FFT频谱波形分析和处理,还有各种硬件的音源芯片(主要是雅马哈和飞利浦声卡合成器的大规模集成电路的音源芯片),其寄存器数据读写控制,特别是内含复杂的包络线发生器的寄存器数据编写控制编写就很有意思。包络线可以编程控制产生各种波形许多的乐器音色,而配合噪声发生器可以产生不同的伴奏鼓点和弦等等。还有少数的音源芯片输出是带内部AD/DA转换具有直接是SSG音频模拟输出,接功放即可发音,大多数是以FM,PCM数字信号需要外接D/A转换处理芯片,甚至是经过ADPCM语音识别变换成模拟音频信号输出等。还有数码设计可能遇到的数字电路的防止竞争冒险的抗干扰问题,信号走线和功放等模拟电路。更有需要有wifi无线联网,各种数码专用对接模块,比如边充边放电模块,esp8266wifi模块,PWM多路频率脉宽调制模块,蓝牙收音功放一体模块,红外遥控,LED矩阵电路,无线键盘鼠标模块和传感器模块等的应用。数码音乐就是看得见听得到,摸得到,不求其它更多贵重专业实验室设备配合,就比较容易地学习和理解大多数工控实践所对应的数码应用技术。从8位最低级电脑+最底层汇编语言,到64位嵌入式Linux树莓派4B+高级语言python,再到Windows的pycharm编程,最后就是攻克手机Anaroid的控制和编程(有手机版的python,比较好用的是贝壳编程app)。
随着最近火爆的人工智能ChatGPT的到来,对于我的数码的技术学习和开发更加方便快捷了。
以下二个视频是ChatGPT参与合作的结果。但是,我也搞不清楚有些生成的音乐数据结果,竟然无法重复复现?似乎每次有不同的发音解答或者更新完善,甚至太完美了会使得没有初始羞涩的,傻傻的韵味。电路设计分为三块板,一块是自制PC1500采用esp8266的wifi无线网络板,一块是自制PC1500/树莓派双接口,内含一块飞利浦大规模集成电路SAA1099音源芯片和与声卡交换数据的接口板,一块是闲鱼拆机某型号61声卡合成器板。
PC1500和树莓派4B编程编曲智能控制发音的二个视频:
XiaoYing_Video_1680189354800.mp4
(7.41 MB, 下载次数: 0)
XiaoYing_Video_1680189432404.mp4
(6.77 MB, 下载次数: 0)
视频刚开始,AI程序运行不听话,很不顺畅,发音哔哩哔哩地,傻傻噪声音律分不清,需要经过好多天无数次编程改进,通过无数次按键切换CALL不同指令和子程序,发出根音指示。经过不断探索学习和改进,电脑似乎开始逐步对发音有点理解以及后面听出来越来越有调有音律,以至于配合我发出的根音旋律,自动和弦伴奏也随着力度控制慢慢释放出来了。是不是有点意思了?
前面的都是一些实验性质的,甚至都没有空闲好好总结。看着一大堆电路板组成的模块音乐电路有点烦心。想着,如何进阶学习到手机编程和控制芯片音乐的阶段?为此也通过手机的Python软件和按键精灵等编程学习到不少知识。
最后实现从古董电脑到Linux的树莓派4B跳到万能的手机控制和编程,实现手机版电子琴app多声部编程控制并播放。这次,与之前PC1500演奏的也是多声部的《故乡的亲人》完全不是一个档次。
手机“完美钢琴app”,多声部演奏一曲《故乡的亲人》视频:
XiaoYing_Video_1680165149898.mp4
(1.8 MB, 下载次数: 0)
还有手机电子琴“ORG2023”同名一曲视频:
XiaoYing_Video_1680190508440.mp4
(3.21 MB, 下载次数: 0)
下面是,如何让我手机安装的ChatGPT3.5版,帮我编程控制手机电子琴的?为此,我提出了三个问题。
我向ChatGPT提问之一:
“如何使用python编程,来实现电脑和手机自动化操作“完美钢琴”手机版的按键坐标控制发音,从简谱音符1-7钢琴键?”
ChatGPT答案:
“很抱歉,作为AI语言模型,我无法直接在您的手机上编程。不过,您可以像下面这样编写Python脚本来控制手机应用程序的按键。
首先,您需要在手机上安装按键精灵等软件,并打开完美钢琴应用程序。然后,您需要在按键精软件中打开“应用控制”功能,选择完美钢琴应用程序,并记录每个按键的屏幕坐标。
对于完美钢琴应用程序,您可以使用Python的`uiautomator2`库来控制按键的坐标。以下是一个简单示例,演示如何使用`uiautomator2`库在完美钢琴应用程序中按下一个按键:
```python
import uiautomator2 as u2
import time
# 连接到手机设备
d = u2.connect()
# 打开完美钢琴应用程序
# 假设应用程序已经打开并位于前台
# 如果需要打开应用程序,请使用以下命令:
# d.app_start("com.gamestar.perfectpiano")
# 按下一个按键,坐标为(100, 200)
d.touch(100, 200)
# 等待一段时间
time.sleep(1)
# 释放按键
d.touch(100, 200, u2.ToolMethod.DOWN_AND_UP)
```
完成上述步骤后,可以使用以下代码来按照 1 到 7 的顺序播放钢琴音符:
```python
import uiautomator2 as u2
import time
# 连接到手机设备
d = u2.connect()
# 打开 ORG 2023 应用程序
d.app_start("com.eumlab.android.organ")
# 举例定义一组按键坐标从中央音C4-B4,对应简谱1-7
key_coords = {
1: (146, 1254),
2: (213, 1254),
3: (280, 1254),
4: (348, 1254),
5: (414, 1254),
6: (480, 1254),
7: (546, 1254)
}
# 播放 1 到 7 的音符
for i in range(1, 8):
# 按下按键
d.touch(*key_coords)
# 等待 0.2 秒
time.sleep(0.2)
# 松开按键
d.touch(*key_coords, u2.ToolMethod.DOWN_AND_UP)
# 等待 0.2 秒
time.sleep(0.2)
```
以上代码假设应用程序已经打开并位于前台。如果您需要首先打开应用程序,请确保已经在`d.app_start()`方法中传递了应用程序的包名和 activity 名称。
请注意,以上代码只提供了一个简单示例。如果您需要执行更为复杂的操作,请先详细阅读 uiautomator2 库的文档和示例,并谨慎操作。”
为了进一步编程理解,我又问ChatGPT提出第二个问题:
如何使用python的uianlomator2库编程来实现自动化操作手机版“完美钢琴”app的按键坐标,来控制发音,音程从A0到C8一共88钢琴键?
答二:
“1. 安装uiautomator2库:在终端中使用pip install uiautomator2进行安装。
2. 连接手机:使用USB连接手机,并确保手机已启用开发人员选项和USB调试选项。
3. 启动app:使用uiautomator2库中的Device和app_start方法,启动“完美钢琴”app。
4. 获取键盘坐标:使用uiautomator2库中的click、swipe和dump_hierarchy方法,获取88个钢琴键的坐标。
5. 实现按键操作:使用uiautomator2库中的click方法,模拟点击钢琴键的坐标,实现自动发音。
6. 控制音程:使用for循环遍历88个键,按照音程从A0到C8的顺序依次发音。
下面是一个简单的示例代码实现上述自动化操作:
```python
import uiautomator2 as u2
# 连接手机
d = u2.connect()
# 启动app
d.app_start('com.gamestar.perfectpiano')
# 获取键盘坐标
hierarchy = d.dump_hierarchy()
keys = {}
for node in hierarchy.iter():
if node.attrib.get('resource-id') == 'com.gamestar.perfectpiano:id/pianoKeyboard':
for child in node.iter():
if child.attrib.get('class') == 'android.widget.ImageView' and child.attrib.get('clickable') == 'true':
key = child.attrib.get('content-desc')
x, y = child.attrib.get('bounds').replace('[', '').replace(']', '').split(',')[0:2]
keys[key] = (int(x), int(y))
break
# 实现按键操作
for note in ['A0', 'A#0', 'B0', 'C1', 'C#1', 'D1', 'D#1', 'E1', 'F1', 'F#1', 'G1', 'G#1',
'A1', 'A#1', 'B1', 'C2', 'C#2', 'D2', 'D#2', 'E2', 'F2', 'F#2', 'G2', 'G#2',
'A2', 'A#2', 'B2', 'C3', 'C#3', 'D3', 'D#3', 'E3', 'F3', 'F#3', 'G3', 'G#3',
'A3', 'A#3', 'B3', 'C4', 'C#4', 'D4', 'D#4', 'E4', 'F4', 'F#4', 'G4', 'G#4',
'A4', 'A#4', 'B4', 'C5', 'C#5', 'D5', 'D#5', 'E5', 'F5', 'F#5', 'G5', 'G#5',
'A5', 'A#5', 'B5', 'C6', 'C#6', 'D6', 'D#6', 'E6', 'F6', 'F#6', 'G6', 'G#6',
'A6', 'A#6', 'B6', 'C7', 'C#7', 'D7', 'D#7', 'E7', 'F7', 'F#7', 'G7', 'G#7',
'A7', 'A#7', 'B7', 'C8']:
d.click(keys[note])
```”
以上二个问答,ChatGPT完美地给出比较正确的答案,按照它的指引和编程方案和示例提示,非常有助于我的具体编程。我仍然需要得到一个关于遇到需要同时多声部发音,几个不同音符同时发音,不同音长时间的控制问题,我知道需要用到定时中断,或者多线程的编程。
因此我又提出第三个问题:
我要让手机“完美钢琴”app,通过python自动化编程控制手机钢琴,如何实现多声部发音?需要引入定时中断或者多线程模块?
ChatGPT的第三个答案:
“要实现多声部发音,可以使用多线程来实现。可以将每个声部的音符分配到不同的线程中,让它们并发执行,以实现多声部同时发音的效果。
以下是一个使用多线程实现多声部发音的示例代码:
```python
import threading
import time
import random
from perfectpiano import PerfectPiano # 导入完美钢琴模块
piano = PerfectPiano() # 创建完美钢琴实例
# 定义一个线程类,用于播放音符
class NoteThread(threading.Thread):
def __init__(self, notes):
super().__init__()
self.notes = notes
def run(self):
for note in self.notes:
piano.tap(note) # 播放音符
time.sleep(random.uniform(0.2, 0.5)) # 休眠一段时间,模拟弹奏效果
# 定义多个声部的音符序列
part1 = ['C4', 'E4', 'G4', 'C5']
part2 = ['A3', 'C4', 'E4', 'G4']
part3 = ['F3', 'A3', 'C4', 'E4']
part4 = ['D3', 'F3', 'A3', 'C4']
# 创建多个线程来播放不同的声部
threads = [
NoteThread(part1),
NoteThread(part2),
NoteThread(part3),
NoteThread(part4)
]
# 启动线程
for t in threads:
t.start()
# 等待所有线程执行完毕
for t in threads:
t.join()
```
这个示例代码使用了多个 `NoteThread` 线程来分别播放不同声部的音符。每个线程都继承自 `threading.Thread` 类,实现了 `run` 方法来执行音符的播放。在执行 `run` 方法时,每个线程依次播放它所负责的声部的音符序列,通过调用完美钢琴实例的 `tap` 方法来播放音符,然后休眠一段时间,以模拟弹奏效果。最后,启动所有线程,让它们并发执行,等待所有线程执行完毕后,程序结束。”
其实,可能有些人没有想到,ChatGPT的出现,可以让我们这样的音乐大白,绘画大白,作文大白,甚至底层程序猿等等带来的意义。
大白玩数码音乐,有了ChatGPT就可以随心所欲的创作自己的曲子,而不会抄袭侵权等,并且,我也可以轻易设计电子和编程,实现自动化输入乐谱!因为五线谱和简谱都不容易实现自动输入谱子,只有通过国外的软件实现五线谱和MIDI语言的,进行一系列很麻烦英文界面操作转换成瀑布流直接电脑上才可以播放别人的五线谱等,无法演变或者没人去做,变换成为26个字母组成的音符,网上下载的别人创作的曲谱来播放而已。有了ChatGPT帮我创作曲谱,完全是按照电脑键盘的标准的字母音符组成乐谱,即使在网络上也找不到用26个字母组成的乐谱,也就使得计算机容易直接输入和看懂的音乐语言!
可以说,这就是一个很好的,音乐学院或者学电子,软件专业等,毕业设计或者研究生毕设课题。以后一定会大量出现以电脑键盘字母数字组成的,普通百姓更通俗易懂的,电脑更容易编程创作曲谱的乐谱,更加方便计算机的自动识别处理的乐谱。如果还没有人发现在我们的这个《数码之家》有人发布信息说有如此好项目,那么只好我亲自下厨啦,因为有ChatGPT帮我编制数码音符,帮我用音符创作新编曲,帮我写论文,不怕导师不通过呵呵(千万不要告密)!发帖为证。
下面举例ChatGPT的曲谱实现我需要的字母组成的音符曲谱:
问:帮我写一个钢琴曲五线谱,情景是,海滩上,一阵阵海风吹来一股凉爽的的晚风,吹过沙滩,吹过来草地,向我奔袭而来,让我的长发飘飘,本来有些失恋伤感的心情也随着晚风飘带来的温暖潮湿的气息,逐渐愉悦起来。
答:以下是一首名为《海风晚韵》的钢琴曲五线谱,欢迎参考:
“```
X: 1
T: 海风晚韵
C: AI创作
M: 4/4
L: 1/4
Q:1/4=80
K: Cmaj
E3 F E D | C4 G, F | E3 F E D | C4 G,A,B,|
C6 | D4 E F G | A4 G, F E | D4 E F G | A4 G, A,B,|
C4 B, A, G | F4 E D C | B,4 A, G, F | E4 D C B, |
C6 | D4 E F G | A4 G, F E | D4 E F G | A4 G, A,B,|
C4 B, A, G | F4 E D C | B,4 A, G, F | E4 D C B, |
C6 | D4 E F G | A4 G, F E | D4 E F G | A4 G, A,B,|
C4 B, A, G | F4 E D C | B,4 A, G, F | E4 D C B, |
C6 | D4 E F G | A4 G, F E | D4 E F G | A4 G, A,B,|
C4 B, A, G | F4 E D C | B,4 A, G, F | E4 D C B, |
C6 A, G, F, E, | D,4 C, B, A, | G,4 F, E, D, | C,4 B, A, G, |
F,4 E, D, C, | B,4 A, G, F, | E,3 F, E, D, | C4 G, A, B, |
C6 | D4 E F G | A4 G, F E | D4 E F G | A4 G, A,B,|
C4 B, A, G | F4 E D C | B,4 A, G, F | E4 D C B, |
C6 | D4 E F G | A4 G, F E | D4 E F G | A4 G, A,B,|
C4 B, A, G | F4 E D C | B,4 A, G, F | E4 D C B, |
C6 | D4 E F G | A4 G, F E | D4 E F G | A4 G, A,B,|
C4 B, A, G | F4 E D C | B,4 A, G, F | E3 F E D | C4 G, F ||
```
希望这首曲子可以表达出您所描述的情感和场景。
以下是《海风晚韵》的简谱,供您参考:
```
X:1
T:海风晚韵
C:AI 创作
M:4/4
L:1/4
Q:1/4=80
K:C
E3FE2D|C4-G,2F|E3FE2D|C4G,A,B,|
C6|D4EFG|A4G,FED|D4EFG|A4GAB,|
C4B,A,G|F4EDC|B,4A,G,F|E4D,CB,|
C6|D4EFG|A4G,FED|D4EFG|A4GAB,|
C4B,A,G|F4EDC|B,4A,G,F|E4D,CB,|
C6|D4EFG|A4G,FED|D4EFG|A4GAB,|
C4B,A,G|F4EDC|B,4A,G,F|E4D,CB,|
C6A,G,F,E,|D,4C,B,A,|G,4F,E,D,|C,4B,A,G,|
F,4E,D,C,|B,4A,G,F,|E,3FE2D|C4G,F||
```
希望对您有帮助。”
问:再帮我写一个钢琴曲,类似“故乡的亲人”这样钢琴曲,带左手伴奏,右手主旋律的?
答:“钢琴曲音乐随着时间的流逝,渐渐地深深地打动着每一个人的心灵。而钢琴,就是其中具有极高艺术价值的一种音乐乐器。下面就为您创作一首带有左手伴奏和右手主旋律的钢琴曲,希望能够打动您的心灵。
曲名:远离的思念
前奏:
Dm Am7 Gm Dm
Dm Am7 Gm Dm
Gm Dm
C Am
Gm F
Bb A
主旋律:
Dm Am7
有一天你突然走了
Gm Dm
留下我孤独地徘徊
Dm Am7
思念随心去了远方
Gm Dm
彷徨着找不到方向
左手伴奏:
Dm Am7 Gm Dm
在这渺茫的夜空中,看不到未来的路
Dm Am7 Gm Dm
我无助地站在原地,心里只有你的影子
Gm Dm C Am
风吹落了树上的叶子,天空中有流星划过
Gm F Bb A
我只能默默地流泪,思念远方的你
主旋律:
Dm Am7
时光在我眼前慢慢流淌
Gm Dm
你的身影却已不见
Dm Am7
回忆在我心中翻涌澎湃
Gm Dm
让我痛苦难以自控
左手伴奏:
Dm Am7 Gm Dm
你曾经给我温暖,你曾经给我依靠
Dm Am7 Gm Dm
你的离开让我孤独,黑夜中我想起你的笑容
Gm Dm C Am
岁月在流逝中慢慢沉淀,我依然在等你的归来
Gm F Bb A
我只能静静地祈祷,思念远方的你
主旋律:
Dm Am7
你在远方是否安好
Gm Dm
你是否还想起我
Dm Am7
我在这里等待着你的归来
Gm Dm
陪你看尽世间繁华
结束:
Dm Am7 Gm Dm
Dm Am7 Gm Dm
Gm Dm
C Am
Gm F
Bb A
在音乐的世界里,我们可以尽情地表达自己的情感,将内心深处的情感用音乐传达出去。希望这首钢琴曲能够带给您一份温暖、一份感动,让您的心灵在音乐的陪伴下更加丰富和有意义。
五线谱:
调性:C大调节奏感:柔和舒缓
节拍:4/4
速度:中缓板
左手伴奏:
C(1) G(1) Am(2) F(2)
C(1) G(1) Am(2) F(2)
右手主旋律:
C(1) D(1) E(2) F(2) E(2)
D(1) C(1) G(2) A(2) B(2) A(2)
G(1) F(1) E(2) D(2) C(2) D(2)
E(1) F(1) G(2) A(2) B(2) C(3) D(3)
C(1) D(1) E(2) F(2) E(2)
D(1) C(1) G(2) A(2) B(2) A(2)
G(1) F(1) E(2) D(2) C(2) D(2)
E(1) F(1) G(2) A(2) B(2) C(3) D(3)
(括号中的数字表示拍数)
整首曲子以C大调为基调,左手伴奏和谐美妙,主旋律贴近人心,优美动听。适合表达家乡亲人对我们的爱和思念之情。”
ChatGPT的这个答案,如此这般的字母组成的曲谱太好了,我后面就可以依据这个曲谱,简捷快速,通过电脑或者手机实现,甚至古董电脑实现-自动读取这些音符并且播放!然后自动帮我向ChatGPT提问新的或者改进的,自己喜欢的任何“原创”音乐!
最后来一首《南泥湾》,可以听到比较准确的精确到毫秒的颤音上滑音等。
视频:
XiaoYing_Video_1680272421876.mp4
(2.1 MB, 下载次数: 0)
关于如何下载ChatGPT,我之前用官方openai.com的免费测试版,最近过期了,需要重新官网申请候补名单排队中。国内的似乎很多不是直接GPT。我用的是手机下载“GPT盒子”国内3.5版,安装后就是“GPT在线”,需要缴费39元永久会员。是不是真实GPT,你可以提问题给它,比如:“你是官方Chatgpt?第几代?”等,看它如何回答可知。
在音源芯片电路设计中,我用洞洞板飞线连接实验和测试了不少型号的音源芯片,也不需要更换基本PCB电路板,只要利用原来的音源芯片的IC插座,重新搭建飞线一小块新音源芯片电路,插入到这个IC插座,即可实验。除了上面发布的第一张电路图是飞利浦音源芯片SAA1099P,另一个比较重要的经典音源芯片之一的,是雅马哈大规模集成电路音源芯片YM2608B。本人设计的由PC1500控制的,可对该芯片的双路立体声输出的PCM数字化音源,进行高精度16位D/A芯片YM3016的转换,成为音乐音频模拟信号输出了,奉献电路设计图供参考:
Yang midi 雅马哈YM2608B音源芯片五线谱编解码表:
我的树莓派4B本来是裸机,后改造安装在一个PC1500外壳内了变成了一台影音一体机(也发布过帖子),变成了一部多功能的树莓派4B小电脑了。GPIO引脚采用了间距1mm的40pin软排线替代左侧第一图的间距2.54mm笨拙扁平线,更简洁可靠好用:
|
打赏
-
查看全部打赏
|